本帖最后由 hpb199567 于 2018-6-16 00:12 编辑
何平波
JS0N(JavaScript Object Notation)
概述:其实就是一种数据交换格式,可以直接被JS解析
JSON:数据的传输,小,可以直接被JS解析
格式介绍
{"id":1,"name":"aaa"}
[{"id":1,"name":"aaa"},{"id":2,"name""bbb"}] 数组JSON
导哪些包
JSONlib的包
json--lib-2.4
依赖包6个
xstream:生成xml文件的工具包
监听器
概述:就是一个java类,用来监听类的变化
用途:
1.加载框架的配置文件:Spring框架
2.定时任务调度:* Timer,TimerTask
方法:scheduleAtFixedRate()
web中监听器的分类
三类八种
一类:监听三个域对象的监听器
ServletContextListenner:监听servlet的创建和销毁
1.实现ServletContextListenner类,添加方法
2.配置监听器
<listener>
<listener-class>
监听器实现类位置
</listener-class>
</listener>
总结:工程服务启动时创建,工程服务器关闭时销毁
一类:HttpSessionListenner:监听Httpsession的创建和销毁
创建:服务器第一次调用getSession();
销毁:非正常关闭服务器(正常关闭session会序列化)
session过期了默认30分钟
手动调用session.invalidate();
访问Servlet不会创建Session监听器
访问JSP会创建Session监听器 (JSP九大内置对象就有getsession()方法)
访问html不会创建Session监听器
一类ServletRequestListenner:监听ServletRequest对象的创建和销毁
创建:客户端向服务器发送一次请求,服务器就会创建rquest对象
销毁:服务器对这次请求做出响应后就会销毁request对象
访问Servlet会创建request对象
访问jsp会创建request对象
访问html会创建request对象
二类ServletContextAttributetListenner 监听ServlectContext中的属性变更
三类监听HttpSession中的JavaBean的对象的状态改变的监听器
第三类监听器很特殊,不需要进行配置
HttpSessionBinDingListenner:监听HttpSession中的Javabeand 解除和绑定的对象
三类HttpSessionActivationListenner:监听HttpSession中的钝化和活化
钝化:序列化(序列化到硬盘)
活化:反序列化
优化Seesion
通过配置<Context> </Context>标签配置定时session序列化
案例总结:利用jq的ajax和json完成从数据库查询省市联动
1.创建数据库,两张表,一张保存省的表,一张保存市的表,市的一个外键对应省的id(这里的外键可以不加约束).
2.先查询省的数据,servlet,domain,service,Dao,将查询到的省的数据转发到注册页面,利用jstl遍历
3.注册页面有两个下拉列表,第一个列表是省的数据,第二个列表是市的数据,给省和市的列表定义一个id.
4.编写一个js文件,可以在注册页面引入,注意这里也要引入JQ的包,这个js文件有一个函数.函数方法触发一个change事件.
5.获取到省的id的值(值=省集合list里的id),ajax的post方法
$.post("获取数据库市的Servlet路径",参数{"pid":pid(pid=省的id值)},回调函数function(data(存入session的字符串),"json(ajax识别json的固定写法)")
6.利用省的id值查询市的数据,servlet,domain,service,Dao,将查询到的市的数据封装到一个集合中,存入json数组中(导包),可以截取需要的数据.将获得的市的数据响应打印,这里打印的是一个字符串类型,所以就可以被封装在data里了.
7.js在获取第二个复选框的id,添加进data.然后遍历,因为是一个集合.这可以随便html写一些东西,清空重复显示的问题.
JsonConfig config=new JsonConfig();
config.setExcludes(new String[]{"cid","pid"});
截取不需要的元素
JSONArray array = JSONArray.fromObject(list, config);
将list转换成一个json数组
|