一:Filter的使用
1.Filter是由Tomcat启动时创建。接口包含三个方法。
1.void init(FilterConfig filterConfig) 过滤器对象创建的时候调用的方法 2.void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 执行过滤的方法 3.void destory() 过滤器销毁的时候调用的方法
2.Filter过滤器的开发步骤
第一步:新建一个普通java类,实现Filter接口; 第二步:根据提示重写Filter接口的3个方法; 第三步:在这个类上面通过注解的方式配置这个Filter; 注解@WebFilter:配置Filter的注解,这个注解有两个参数; filterName:设置过滤器的名称; urlPatterns:配置这个过滤器要拦截的资源的路径; 第四步:在doFilter()方法中,书写过滤的业务逻辑; chain.doFilter()方法放行;
3.过滤器的执行流程
1.客户端(浏览器)的HttpRequest到达Servlet之前,被Filter的doFilter()方法拦截; 2.根据需要,我们可以获取或者修改HttpRequest对象中的数据; 3.在这个请求响应给浏览器之前,Filter拦截了HttpResponse对象; 4.根据需要,我们可以获取或者修改HttpReponse对象中的数据; 5.最后,由doFilter中的chain决定是否让这个请求通过;
注意:多个Filter的执行顺序,Filter默认是按照字母顺序执行的,从而形成一个执行链条。
4.Filter的映射路径
1.精确匹配:匹配指定的urlpattern; 1.urlPatterns = "/index.jsp" 拦截对index.jsp页面的请求 2.urlPatterns = "/loginServlet" 拦截对loginServlet的请求 3.urlPatterns = "/a.jpg" 拦截对a.jsp的请求 2.模糊匹配:匹配复合条件的一类路径; 1.urlPatterns = "/*" 对所有的请求都进行拦截 2.urlPatterns = "/xxx/*" 对映射路径中/xxx下的所有资源进行拦截 3.urlPatterns = "*.xxx" 对指定后缀的请求进行拦截 3.多路径匹配:一个filter匹配多个资源;
二:Ajax的使用
1.JS原生的Ajax请求的思路
1.创建Ajax引擎对象--XMLHttpRequest对象; 2.为XMLHttpRequest对象绑定监听(监听服务器,将数据响应给引擎); 3.绑定提交地址; 4.发送请求; 5.接收响应数据;
2.Jquery的Ajax请求思路
1.GET请求 格式:$.get(url,[data],[callback],[type]) 参数说明:
url : 请求地址
data : 发送给服务器端的请求参数,格式:方式一:key=value&key=value 方式二:{key:value,key:value...} callback :回调函数:当请求成功后触发的函数 type : 返回参数类型:取值可以是xml, html, script, json, text, _defaul等 2.POST请求 格式: $.post(url, [data], [callback], [type]) 参数说明:
url : 请求地址
data : 发送给服务器端的请求参数,格式可以是key = value,也可以是JS对象 callback :回调函数:当请求成功后触发的函数 type : 返回参数类型:取值可以是xml, html, script, json, text, _defaul等 3.AJax请求 格式: $.ajax({settings}) url,async,data,type,dataType,success,error 参数说明:
三:JSON数据格式
注意:
1.JSON数据的key值:字符串类型,必须加双引号; 2.JSON数据的value值:任意类型,如果是字符串则必须加双引号;
总结:
1.java对象 ----->json对象
{"id":1,"studentAge":10,"studentName":"张三"}
2.转换List集合 ----> JSON数组: [ { "id": 1,"studentAge": 10, "studentName": "张三"}, {"id": 2, "studentAge": 12,"studentName": "李四"} ] 3.转换复杂对象-----JSON混合数据类型: { "course": { "code": "en", "courseName": "英语", "id": 1 }, "id": 2, "studentAge": 12, "studentName": "李四" }
注意:复杂对象也可以用Map<String,Object>集合来拼接;
结果:{"code":"1001","stu":{"id":2,"studentAge":12,"studentName":"李四"}}