过滤器过滤器Filter(注意:过滤器,servlet执行的顺序)、FilterChain过滤链
  cCuitpmOqlQw 2023年11月02日 55 0


Filter的作用:

当用户的请求到达指定的URL之前,可以借助Filter来改变这些请求的内容;同样地,当响应结果到达客户端之前,可以使用Filter修改输出的内容。

什么是FilterChain(过滤器链):

一个FilterChain包含多个Filter。

过滤器过滤器Filter(注意:过滤器,servlet执行的顺序)、FilterChain过滤链_xml

过滤器的工作原理:

过滤器过滤器Filter(注意:过滤器,servlet执行的顺序)、FilterChain过滤链_xml_02

过滤器的部署(web.xml):

<!--配置过滤器-->
<filter>
<filter-name>checkSessionFilter</filter-name>
<filter-class>com.DVD.Filter.checkSessionFilter</filter-class>
</filter>

<!--映射过滤器-->
<filter-mapping>
<filter-name>checkSessionFilter</filter-name>//过滤器的名字
<!--“/*”表示拦截所有的请求 -->
<url-pattern>/admin/*</url-pattern>//过滤器的路径(要过滤哪一个)
</filter-mapping>

具体的实现:

  1. 实现Filter接口:过滤器是一个对象,它根据用户的请求和资源的响应进行过滤.

Filter接口包含以下方法:

过滤器过滤器Filter(注意:过滤器,servlet执行的顺序)、FilterChain过滤链_用户信息_03

FilterConfig:

过滤器过滤器Filter(注意:过滤器,servlet执行的顺序)、FilterChain过滤链_用户信息_04

登陆验证:
解决把登录信息放入session会产生大量重复代码的问题

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
// 从session中获取用户信息
User user = (User) session.getAttribute("user");
// 能够从session获取到用户信息,代表用户已经成功登陆过
if(user==null){
//如果获取不到用户信息,代表用户没有登陆,则转向到登陆页面
hrsq.getRequestDispatcher("/admin/Login.jsp").forward(hrsq, hsrs);
}
// 请求向下传递
chain.doFilter(request, response);
}
其中:
//设置请求字符集
request.setCharacterEncoding("GBK");
//请求向下传递
chain.doFilter(request, response);

一个页面请求进来,过滤器,servlet执行的顺序:

初始化、销毁什么的不多解释。重点说明,请求的执行顺序:
比如一个form表单,post请求:

  1. 过滤器中的doFilter方法(注意:这个里面只有进行请求向下传递的时候,才能进入下一个页面,否则会一致被拦截)
  2. 进入servlet里面的dopost方法执行完毕(包括跳转页面什么的)
  3. 再回到过滤器的doFilter方法,执行完毕!

FilterChain过滤链:

一个过滤器链(FilterChain),在请求到达请求资源前会依次经过链中的所有过滤器,​​<filter-mapping>​​配置在前的Filter先执行,而请求处理完成后,会按照相反的顺序再次经过链中的所有过滤器。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
cCuitpmOqlQw