测试开发系列之——filter&listener

学习目标

  1. 过滤器Filter
  2. 监听器Listener

Filter简介

  • Filter=过滤器
  • 过滤器是可用于Servlet编程的Java类,可以实现以下目的:
    客户端的请求访问后端资源之前,拦截这些请求。
    在服务器的响应发送回客户端之前,处理这些响应。

应用场景

  • 身份验证过滤器(Authentication Filters)
  • 编码过滤器
  • 跨域过滤器
  • 过滤敏感文字

例如可以解决请求的中文乱码问题:
request.setCharacterEncoding("utf-8"); //对于post的请求中文乱码

获取时 request.setCharacterEncoding("UTF-8");
响应时 response.setContentType("text/html; charset=UTF-8");

作用范围:过滤器>拦截器>lop

创建过滤器步骤

创建过滤器Create Filter:
创建过滤器Create Filter
默认的Filter mappings: URL Pattern/Servlet Name,会和类名一致。
在这里插入图片描述
Edit Filter mappings:
Edit Filter mappings
编辑完成后,点击OK保存。
编辑完成
过滤器工作的方法:doFilter

response.setHeader("Access-Control-Allow-Origin", "*");//核心
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With");
response.setHeader("Access-Control-Allow-Credentials", "true");//Credentials证书
response.setHeader("Content-Type", "application/json;charset=utf-8");

js 把 json 转为以 ‘&’ 连接的字符串可参阅:
https://www.cnblogs.com/freddyhuang/p/9337152.html

/**
 * URL编码;
 * @param {参数} param 
 */
export function toParams(param) {
    var result = ""
    for (let name in param) {
        if (typeof param[name] != 'function') {
            result += "&" + name + "=" + encodeURI(param[name]);
        }
    }
    return result.substring(1)
}

比较经典的跨域错误:
经典的跨域错误

过滤链

  • 配置多个过滤器,将引发过滤链串联效果
  • 过滤链串联执行顺序:
    • 同一种路径配置方式时执行顺序web.xml中的配置顺序
    • 过滤器链的执行顺序按类名字符自然排序

按类名的自然排序,先执行CrossFilter,再执行EncodeFilter。

什么是监听器

  • 监听器也叫Listener,是Servlet的监听器。

  • 监听器就是监听某个对象的状态变化的组件。

  • 事件源:被监听的对象——三个域对象request session servletContext

应用场景:监听客户端的请求、服务端的操作

  • 监听在线的用户的数量。
  • 框架初始化,如加载spring的配置xml文件

监听器一般都是后端用的,如加载spring的配置xml文件。

创建监听器步骤

创建监听器Create Listener:
创建监听器Create Listener
Select the application lifecycle events to listen to.
主要打勾以下两个。

I:interface,是接口的意思。

监听器比过滤器更高级、更特殊,是最高级的servlet。
监听器>过滤器>servlet。
在这里插入图片描述
实现了两个接口:ServletContextListener、HttpSessionListener接口。
sessionCreated:会话创建
sessionDestroyed:会话关闭
contextDestroyed:上下文销毁
contextInitialized:上下文初始化
在这里插入图片描述
过滤器和监听器都是难点,重点是过滤器。

练习

用户信息列表
jsonstr一般包括:status、message和data等基本组成部分。

练习3: 用户列表----新增、删除、更新

发布了14 篇原创文章 · 获赞 1 · 访问量 853

猜你喜欢

转载自blog.csdn.net/anniewhite/article/details/104078493