【JavaWeb】过滤器的了解与应用
注:本文章基于尚硅谷JavaWeb相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!
文章目录
- 一、初识过滤器
- 二、Filter的生命周期
- 三、FilterChain过滤器链
一、初识过滤器
Filter过滤器是JavaWeb的三大组件之一,三大组件分别是:Servlet程序、LIstener监听器、Filter过滤器;
Filter过滤器是JavaEE的规范,也就是接口;
Filter过滤器它的作用是:拦截请求,过滤响应;
WebFilter("/*")public class Filter1 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest) req; HttpServletResponse response=(HttpServletResponse) resp;if(user=null){//转发servletRequest.getRequestDispatcher("/login.jsp").forward(request,response)return;}else{//放行 chain.doFilter(request,response); } @Override public void destroy() { }}
二、Filter的生命周期
FIlter的生命周期包含的几个方法:
- 构造器方法
- Init初始化方法
第1,2步在web项目启动的时候执行(Filter已创建) - doFilter过滤方法
每次拦截到请求,就会执行 - destory销毁
停止web工程的时候,就会执行,也会销毁Filter过滤器
FilterConfig类:
FilterConfig类是Filter过滤器的配置文件类。
Tomcat每次创建Filter的时候,也会同时创建一个FilterConfig类,这里包含了FIlter配置文件的配置信息;
FilterConfig类的作用是获取filter过滤器的配置内容:
- 获取Filter的名称filter-name的内容
//在init初始化方法中:filterConfig.getFilterName()
- 获取web.xmlr中配置的init-param初始化参数
filterConfig.getInitParameter(web.xml中的init-name名称)
- 获取ServletContext对象
filterConfig.getServletContext()
三、FilterChain过滤器链
FilterChain,就是过滤器链(多个过滤器链如何一起工作)
FilterChain.doFilter()方法的作用:
- 执行下一个Filter过滤器(如果有Filter过滤器)
- 执行目标资源(如果没有Filter)
在多个Filter过滤器执行的时候,他们的执行顺序是按他们在web.xml文件中从上到下的配置的顺序来决定的;
多个Filter过滤器执行的特点:
1. 所有的FIlter和目标资源默认都执行在同一线程中
2. 多个Filter共同执行的时候,它们都使用同一个Request对象
Filter的拦截路径:
-
精确匹配
/target.jsp
以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/target.jsp -
目录匹配
/admin/*
以上配置的路径,表示请求的地址必须为http:ip/port/工程路径/admin/* -
后缀名匹配
*.html
以上配置的路径,表示请求地址必须以.html结尾才能拦截到
注意:Filter只关心请求的地址是否匹配,而不关心请求的资源是否存在;
如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!