A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

李思贤:json
        JSON的数据格式
                {“id”:1,”name”:aaa}   单个json
                [{“id”:1,”name”:aaa},{“id”:2,”name”:bbb}]    json数组
        JSONLIB 转换JSON数据:
                JSONArray                :将数组或List集合转成JSON.
                JSONObject        :将对象或Map集合转成JSON.\
案例实现 JSON完成省市联动



        还学习了Listener监听器
                监听器:就是一个Java类,用来监听其他的Java的状态的变化.
        在web中有三类八种的监听器(监听的是三个域对象)
                监听器分为:1.事件源        2.监听器(需要实现8个接口)        3.事件源和监听器的配置
                一类:监听三个域对象的创建和销毁的监听器:
                            ServletContextListener
                             HttpSessionListener
                            ServletRequestListener
                二类:监听三个域对象的属性变更的监听器(属性添加,移除,替换):
                            ServletContextAttributeListener
                         HttpSessionAttributeListener
                         ServletRequestAttributeListener
                三类:监听HttpSession中的JavaBean的状态改变(绑定,解除绑定,钝化,活化)
                         HttpSessionBindingListener
                         HttpSessionActivationListener
        想要使用监听器只要两个步骤
                1.编写一个类实现监听器的8个接口之一
                2.通过配置文件配置监听器
回复 使用道具 举报
三类监听器是针对于Servlet中的三大域对象,
1.监听三大域对象的创建和销毁
2.监听三大域对线的变更(添加,移除,替换)
3.监听Session中javaBean的状态
3.1javaBean的绑定和解除绑定
3.2javaBean的钝化和活化 (钝化)序列化到硬盘  (活化)反序列化

一类:类需要实现对应的接口,在XML中需要进行配置
二类:类需要实现对应的接口,在XML中需要进行配置
三类:类需要实现对应的接口的同时还要实现一个序列化接口,不需要在XML中需要进行配置
回复 使用道具 举报
Do1 中级黑马 2018-6-16 15:12:02
23#
本帖最后由 Do1 于 2019-11-23 00:37 编辑


JQ已经很熟悉了,今天主要了解的是监听器

监听器主要有三类八种,一个是创建销毁,一个是属性变更,一个是javabean状态绑定

首先来说状态绑定,当你把Javabean通过setAttribute在session时,就叫作一种绑定,销毁就叫作解绑,监听器去监听你这两个状态然后你可以进行相应的操作

接着说钝化活化,钝化默认30分钟被钝化可以通过修改tomcat配置修改钝化时间,活化就是服务器器再次调用getsession请求的时候即活化,需要序列化接口和监听器接口(单词太长记不住..)

监听器应用:
监听器实现接口会产生一个run方法,也就是说它单独开了个线程监听事件源
可以通过监听器的延时方法来配合异步传送AJAX WebSocket等等实现定时推送广告,推送消息的功能
回复 使用道具 举报
王清松
XML生成工具
        xstream
                构造方法
                        new Xsteam()
                对象-->XML
                        String toXML(Object obj)
                                将object对象转换为XML(本质就是字符串)
                        例一——转换字符串类型的集合List<String>
                                代码
                                        List<String> list=new ArrayList<>();
list.add("用户名");
list.add("密码");
XStream x=new XStream();
String s=x.toXML(list);
System.out.println(s);
                                结果
                                        <list>
  <string>用户名</string>
  <string>密码</string>
</list>
                        例二——转换JavaBean类
                                JavaBean类代码
                                        package mypackage;

public class User
{
        private String username;
        private String password;
        public User(String username, String password)
        {
                this.username = username;
                this.password = password;
        }
        .......
}
                                代码
                                        User user=new User("用户一","密码一");
XStream x=new XStream();
String s=x.toXML(user);
System.out.println(s);
                                结果
                                          <mypackage.User>
    <username>用户一</username>
    <password>密码一</password>
  </mypackage.User>
                        例三——转换JavaBean类型的集合List<JavaBean>
                                代码
                                        User user1=new User("用户一","密码一");
User user2=new User("用户二","密码二");
List<User> list=new ArrayList<>();
list.add(user1);
list.add(user2);
XStream x=new XStream();
String s=x.toXML(list);
System.out.println(s);
                                结果
                                        <list>
  <mypackage.User>
    <username>用户一</username>
    <password>密码一</password>
  </mypackage.User>
  <mypackage.User>
    <username>用户二</username>
    <password>密码二</password>
  </mypackage.User>
</list>
                修改标签名
                        void alias(String name, Class type)
                        举例
                                修改前
                                        代码
                                                User user=new User("用户一","密码一");
XStream x=new XStream();
String s=x.toXML(user);
System.out.println(s);
                                        结果
                                                  <mypackage.User>
    <username>用户一</username>
    <password>密码一</password>
  </mypackage.User>
                                修改后
                                        代码
                                                User user=new User("用户一","密码一");
XStream x=new XStream();
x.alias("aftermodify", User.class);
String s=x.toXML(user);
System.out.println(s);
                                        结果
                                                <aftermodify>
  <username>用户一</username>
  <password>密码一</password>
</aftermodify>
                将JavaBean类的属性从子标签变为标签属性
                        void useAttributeFor(Class definedIn, String fieldName)
                        更改前
                                结果
                                        默认将类中属性作为子标签
<list>
  <mypackage.User>
    <username>用户一</username>
    <password>密码一</password>
  </mypackage.User>
  <mypackage.User>
    <username>用户二</username>
    <password>密码二</password>
  </mypackage.User>
</list>
                        更改后
                                代码
                                        User user1=new User("用户一","密码一");
User user2=new User("用户二","密码二");
List<User> list=new ArrayList<>();
list.add(user1);
list.add(user2);
XStream x=new XStream();
x.alias("User", User.class);
x.useAttributeFor(User.class,"username");
String s=x.toXML(list);
System.out.println(s);
                                结果
                                        类中属性变为标签属性
<list>
  <User username="用户一">
    <password>密码一</password>
  </User>
  <User username="用户二">
    <password>密码二</password>
  </User>
</list>
JSON(Javascript Object Notation)
        概述
                一种轻量级的数据交换格式
        JSON&JS
                关系
                        一、JSON是一种信息传递的数据格式
二、JSON可以理解为是JS对象的字符串表示法,用字符串表示一个满足JSON格式的JS对象的信息
三、传递时,JSON可以看成一个字符串
                        举例:
JS对象——var obj={a:'Hello',b:'World'}
JSON——var json='{"a":"Hello","n":"World"}'
                互相转换
                        JS对象—>JSON
                                var json=JSON.stringify({a:'Hello',b:'World'})
结果:'{"a":"Hello","b":"World"}'
                        JSON—>JS对象
                                var obj=JSON.parse('{"a":"Hello","b":"World"}')
结果:{a:'Hello',b:'World'}
        语法规则
                数据在键值对中
                数据由逗号分隔
                花括号保存对象
                方括号保存数组
        数据格式
                单个JSON对象
                        单个键值对
                                {key1:value1}
                                举例:
{"firstName":"Json"}
                        多个键值对
                                {key1:value1,key2:value2}
                                举例:
{"firstName":"Json","lastName":"Kingdon"}
                多个JSON对象
                        [{key1:value1},{key2:value2}]
                        举例:
[{"firstName":"Json"},{"lastName":"Kingdon"}]
                        带名称举例:
"People":
[
        {"firstName":"Json"},
        {"lastName":"Kingdon"}
]
        生成工具
                Json-lib
                        对象JSONArray
                                将数组或List集合转成JSON
                                static JSONArray fromObject( Object object )
                                public static JSONArray fromObject( Object object, JsonConfig jsonConfig )
                        对象JSONObject
                                将对象或Map集合转成JSON
                                static JSONObject fromObject( Object object )
                                 public static JSONObject fromObject( Object object, JsonConfig jsonConfig )
                        对象JsonConfig
                                构造方法
                                        public JsonConfig()
                                public void setExcludes( String[] excludes )
                        不带JsonConfig参数举例
                                代码
                                        User u1 = new User("用户一", "密码一");
User u2 = new User("用户二", "密码二");
List<User> list = new ArrayList<>();
list.add(u1);
list.add(u2);
JSONArray json = JSONArray.fromObject(list);
System.out.println(json);
                                结果
                                        字符串
[{"password":"密码一","username":"用户一"},
{"password":"密码二","username":"用户二"}]
                        带JsonConfig参数举例
                                代码
                                        User u1 = new User("用户一", "密码一");
User u2 = new User("用户二", "密码二");
List<User> list = new ArrayList<>();
list.add(u1);
list.add(u2);
JsonConfig f=new JsonConfig();
f.setExcludes(new String[]{"username"});
JSONArray json = JSONArray.fromObject(list,f);
System.out.println(json);
                                结果
                                        字符串
[{"password":"密码一"},{"password":"密码二"}]
                fastjson
回复 使用道具 举报
吴鹏

总结

1 在后台将list集合转成json格式的字符串,打印给data;
2 在前端页面中,遍历json;

json(JavaScript Object Notation):
是一种数据的格式,可以直接被js解析;
轻量级的数据交换格式;

数据格式:
{"id":1,"name":aaa}
[{"id":1,"name":aaa},{"id":2,"name":bbb}]
当只有一个数据时,用花括号包裹,在里面,数据使用双引号包裹,数据之间用逗号隔开,
当有多个数据时,用逗号分隔数据,在外围用方括号包裹;

json的生成工具:
jsonlib;
fastjson;

json转换json数据:
JSONArray   用于将数组或List集合转换成JSON
JSONObject   将对象或Map集合转换成JSON;


将List集合转换成json(不全部要):
JsonConfig config = new JsonConfig();
config.setExcludes(new String[] {"pid"});
以上代码转换后的json里面不包含pid字段的数据;

JS识别JSON:
只需在$.post或$get括号里面最后面添加数据类型"json"\\

------------------------------------------------
监听:
监听三个域对象的创建和销毁

监听三个与对象属性的变更

监听session中的JavaBean的状态

web中的监听器:

web中的Listener和Filter是属于Servlet规范中的高级的技术;
web中的监听器共有三类八种(监听三个域对象)
事件源 : Servlet中的三个域对象,ServletContext,HttpSession,ServletRequest
监听器: 自定义类实现8个接口
事件源和监听器的绑定,只需配置一下就可以;

web中的监听器的分类:
三类八种:
第一类:监听三个域对象的创建和销毁的监听器:
ServletContextListener
HttpSessionListener
ServletRequestListener
第二类,监听三个域对象的属性变更的监听器(增,删,改):
ServletContextAttributeListener
HttpSessionAttributeListener
HttpRequestAttributeListener
第三类 监听HttpSession中的JavaBean的状态改变(绑定,解除绑定,钝化,活化):
HttpSessionBindingListener
HttpSessionActivationListener

监听器的使用:
编写一个类实现监听器的接口:
通过配置文件配置监听器:

一类:监听三个域对象的创建和销毁的监听器:
ServletContextListener监听ServletContext的创建和销毁
方法:
void contextInitialized(ServletContextEvent sce) 监听创建
void contextDestroyed(ServletContextEvent sce) 监听销毁

ServletContext对象的创建和销毁:
创建:服务器启动的时候,服务器为每个web应用创建一个属于该web项目的对象
销毁:服务器关闭或者项目被移除的时候;

配置在web.xml中配置Listerner标签;
企业中的应用:
1 加载框架的配置文件:Spring框架ContextLoaderListener
2 定时任务调度:
Timer,TimerTask;

HttpSessionListener

创建和销毁:
void sessionCreated(HttpSessionEvent se)
void sessionDestroyed(HttpSessionEvent se)
创建:服务器第一次调用getSession()
销毁:非正常关闭服务器(正常关闭时session会序列化到本地);过了默认的30分钟时限;手动调用session.invalidate()


ServletRequestListener
创建和销毁:
void requestInitialized(ServletRequestEvent sce) 监听创建
void requestDestroyed(ServletRequestEvent sce) 监听销毁

创建:客户端向服务器发送一次请求,服务器就会创建request对象
销毁:服务器对这次请求做出相应后就会销毁;

----------------------------------------------------
监听三个域对象属性的变更的监听器

ServletContextAttributeListener
void attributeAdded()
void attributeRemoved()
void attributeReplaced()

HttpSessionAttributeListener
void attributeAdded()
void attributeRemoved()
void attributeReplaced()

HttpRequestAttributeListener
void attributeAdded()
void attributeRemoved()
void attributeReplaced()

--------------------------------------------------------

监听HttpSession中的JavaBean的状态改变(绑定,解除绑定,钝化,活化)
第三类监听器比较特殊,不需要进行配置,作用在JavaBean上的监听器,JavaBean可以自己感知到在Session中的状态;
HttpSessionBindingListener
保存到session域中时会绑定,移除时解绑;
void valueBound()
voidUnbound()

HttpSessionActivationListener
钝化:序列化
活化:反序列化
void sessionDidActivate()    活化
void sessionWillPassivate()    钝化

---------------------------------------------------------


回复 使用道具 举报
许剑鸿         webDay22

JSON : JAvaScript Object Notation            JS对象标记 是一种轻量级的数据交换格式,用来存储和表示数据 , 提高网络传输效率

JSON数据格式:         {"id":1,"name":aaa} 单条json              [{"id":1,"name":aaa},{"id":2,"name":bbb}] json数组

JSONLIB两种转换JSON数据的方法:
        JSONArray:将数组或List集合转成JSON.
        JSONObject:将对象或Map集合转成JSON.


Listener :监听器 就是一个Java类实现(8种)Listener 用来监听状态的变化

事件源:被监听对象
监听器:监听的对象
事件源与监听器的绑定
事件对象:事件源的改变.

三类八种监听器:(1.创建类实现listener 2.配置文件)
第一类:监听三个域对象的创建和销毁的监听器:
    * ServletContextListener   监听ServletContext对象的创建和销毁
    * HttpSessionListener  监听HttpSession的创建和销毁的监听器
    * ServletRequestListener  监听ServletRequest对象的创建和销毁的监听器:

第二类:监听三个域对象的属性变更的监听器(属性添加,移除,替换):
    * ServletContextAttributeListener  监听ServletContext对象的属性变更
    * HttpSessionAttributeListener 监听HttpSession中的属性变更
    * ServletRequestAttributeListener 监听ServletRequest对象的创建和销毁的监听器

第三类:监听HttpSession中的JavaBean的状态改变(绑定,解除绑定,钝化,活化)  
比较特别 不新建类实现接口而是在JavaBean中使它实现HttpSessionBindingListener/HttpSessionActivationListener 且不需要配置配置文件

    * HttpSessionBindingListener 监听HttpSession中的JavaBean的绑定和解除绑定的
    * HttpSessionActivationListener 监听HttpSession中的JavaBean的钝化和活化的.  同时JavaBean要实现序列化接口
        void sessionDidActivate(HttpSessionEvent se)  活化:数据反序列化到内存中
         void sessionWillPassivate(HttpSessionEvent se)  钝化:数据序列化到硬盘

优化Session(同时大量的用户访问  且一部分一段时间后变不进行操作 为了节省内存 让一段时间不进行操作的用户数据序列化到硬盘中):
     * 通过配置<Context>标签配置定时session序列化   可配置序列化时间及存储的位置.
         * 在tomcat/conf/context.xml中配置<Context>:在tomcat中所有的虚拟主机和虚拟路径都会按照这个配置执行.
         * 在tomcat/conf/Catalina/localhost/context.xml配置<Context>:在tomcat中的localhost虚拟主机中的所有虚拟路径按照这个配置执行.
         * 在当前的工程下的META-INF/context.xml配置<Context>:当前这个工程按照配置执行.
回复 使用道具 举报
5119 中级黑马 2018-6-19 19:46:12
27#
游荣辉
总结
        今天学了json
        JSON的数据格式
                {“id”:1,”name”:aaa}   单个json
                [{“id”:1,”name”:aaa},{“id”:2,”name”:bbb}]    json数组
        JSONLIB 转换JSON数据:
                JSONArray                :将数组或List集合转成JSON.
                JSONObject        :将对象或Map集合转成JSON.\
        还学习了Listener监听器
                监听器:就是一个Java类,用来监听其他的Java的状态的变化.
        在web中有三类八种的监听器(监听的是三个域对象)
                监听器分为:1.事件源        2.监听器(需要实现8个接口)        3.事件源和监听器的配置
                一类:监听三个域对象的创建和销毁的监听器:
                            ServletContextListener
                             HttpSessionListener
                            ServletRequestListener
                二类:监听三个域对象的属性变更的监听器(属性添加,移除,替换):
                            ServletContextAttributeListener
                         HttpSessionAttributeListener
                         ServletRequestAttributeListener
                三类:监听HttpSession中的JavaBean的状态改变(绑定,解除绑定,钝化,活化)
                         HttpSessionBindingListener
                         HttpSessionActivationListener
        想要使用监听器只要两个步骤
                1.编写一个类实现监听器的8个接口之一
                2.通过配置文件配置监听器
回复 使用道具 举报
万冕

今天学了jq加强和新的listener

listener是一个监听器,就是用来监听状态的改变,

监听术语:

        事件源:被监听对象
        监听器:监听对象
        事件源与监听器绑定:就是在事件源上安装监听器
        事件:就是事件源被改变

web监听器主要监听三个域对象:

ServletContext,HttpSession,ServletRequest

监听的状态有:监听三个域对象的创建与销毁

ServletContext:
创建:第一次开启服务器的时候,会为每一个web创建一个单独的对象ServletContext
销毁:服务器正常关闭或者项目被移除



HttpSession:
创建:第一次调用getSession()的时候创建
销毁:默认时间过期,手动调用Session.invalidate,非正常关闭服务器(如果正常关闭服务器,Session会被序列化到硬盘上)

访问Servlet不会创建Session,因为他没有调用getSession();
访问JSP会创建Session,因为Jsp里面有内置对象Session,会默认调用getSession()
访问html不会创建Session,因为他没有调用getSession();


ServletRequest:
创建:浏览器发送一次请求时,服务器就会创建一个request对象
销毁:服务器对这次请求处理响应完毕后就会销毁request对象

访问Servlet会创建request,因为会产生一次请求
访问JSP会创建request,因为会产生一次请求
访问html会创建request,因为会产生一次请求

三个域对象的属性变更

添加属性,移除属性,替换属性(名字相同,覆盖)

监听HttpSession的JavaBean状态改变
绑定和解除绑定(在javabean中实现HttpSessionBindingListener接口)
钝化(序列化)与活化(反序列化)在JavaBean中实现HttpSessionActivationListener
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马