Filter
一、Filter过滤器
-
Filter过滤器它是JavaWeb的三大组件之一。三大组件分别是:Servlet程序、Listener监听器、Filter过滤器
-
Filter过滤器是JavaEE的规范。也就是接口
-
Filter过滤器作用:拦截请求,过滤响应。
-
拦截请求常见的应用场景有:
- 权限检查
- 日记操作
- 事务管理
...
二、Filter初体验
-
Filter过滤器的使用步骤:
-
1、编写一个类去实现Filter 接口
-
2、实现过滤方法doFilter()
//AdminFilter.java Httpsession session = httpservletRequest.getsession(); object user = session.getAttribute("user"); HttpservletRequest httpservletRequest = (HttpServletRequest) servletRequest; //如果等于null,说明还没有登录 if (user == null) { servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse); return; } else{ //让程序继续往下访问用户的目标资源 filterchain.doFilter(servletRequest,servletResponse); )
-
3、到web.xml中去配置Filter的拦截路径
<!-- web.xml --> <!--filter标签用于配置一个Filter过滤器--> <filter> <!--给fiLter起一个别名--> <filter-name>AdminFilter</filter-name> <!--配置filter的全类名--> <filter-class>com.atguigu.filter.AdminFilter</filter-class> </filter> <!--filter-mapping配置FiLter过滤器的拦截路径--> <filter-mapping> <!--filter-name表示当前的拦截路径给哪个filter使用--> <filter-name>AdminFilter</filter-name> <!-- url-pattern配置拦截路径表示请求地址为: http://ip:port/工程路径/映射到IDEA的web目录 admin/*表示请求地址为: http://ip:port/工程路径/ admin/* --> <url-pattern>/admin/*</url-pattern> </filter-mapping>
-
三、Filter的生命周期
- Filter的生命周期包含几个方法
- 1、构造器方法
- 2、init初始化方法
第1,2步,在web工程启动的时候执行(Filter已经创建) - 3、doFilter过滤方法
第3步,每次拦截到请求,就会执行 - 4、destroy销毁
第4步,停止web工程的时候,就会执行(停止web工程,也会销毁Filter过滤器)
四、FilterConfig类
-
FilterConfig类见名知义,它是Filter过滤器的配置文性类。
-
Tomcat每次创建Filter的时候,也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息。
-
FilterConfig类的作用是获取filter过滤器的配置内容
-
1、获取 Filter的名称filter-name的内容
filterConfig.getFilterName()
-
2、获取在Filter中配置的init-param初始化参数
//事先要在web.xml中配置 filterConfig.getInitParameter("...")
-
3、获取ServletContext对象
filterConfig.getServletContext()
-
五、FilterChain过滤器链
六、Filter的拦截路径
-
三种拦截方式
-
精准匹配
<ur1-pattern> /admin/jackyfu.html</url-pattern>
-
目录匹配
<url-pattern> /admin/*</url-pattern>
-
后缀名匹配
<ur1-pattern> *.html</url-pattern>
-
-
Filter过滤器只关心请求的地址是否匹配,而不关心请求的资源是否存在。