javaweb———–filter过滤器

  • Post author:
  • Post category:java


在这里插入图片描述

public class AdminFilter implements Filter { 
/*** doFilter 方法,专门用于拦截请求。可以做权限检查 */ 
@Override 
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
 HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
 HttpSession session = httpServletRequest.getSession();
 Object user = session.getAttribute("user"); 
 // 如果等于 null,说明还没有登录 
 if (user == null) { 
 	servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
  	return;
} else { 
// 让程序继续往下访问用户的目标资源 ,一定要加
filterChain.doFilter(servletRequest,servletResponse); 
		} 
	} 
}

web.xml中配置filter拦截器,表示拦截所有http://ip:port/工程路径/admin/*,工程路径下admin文件里的所有内容。

<!--filter 标签用于配置一个 Filter 过滤器--> 
<filter> 
<!--给 filter 起一个别名--> 
	<filter-name>AdminFilter</filter-name> 
	<!--配置 filter 的全类名-->
	<filter-class>com.atguigu.filter.AdminFilter</filter-class> 

	<init-param> 
		<param-name>username</param-name> 
		<param-value>root</param-value> 
	</init-param> 

	<init-param> 
		<param-name>url</param-name> 
		<param-value>jdbc:mysql://localhost3306/test</param-value> 
	</init-param>

</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 过滤器的使用步骤:


1、编写一个类去实现 Filter 接口

2、实现过滤方法 doFilter()

3、到 web.xml 中去配置 Filter 的拦截路径


Filter 的生命周期包含几个方法


1、构造器方法

2、init 初始化方法 第 1,2 步,在 web 工程启动的时候执行(Filter 已经创建)

3、doFilter 过滤方法 第 3 步,每次拦截到请求,就会执行

4、destroy 销毁 第 4 步,停止 web 工程的时候,就会执行(停止 web 工程,也会销毁 Filter 过滤器)


FilterConfig 类

见名知义,

它是 Filter 过滤器的配置文件类。 Tomcat 每次创建 Filter 的时候,也会同时创建一个 FilterConfig 类,这里包含了 Filter 配置文件的配置信息。 FilterConfig 类的作用是获取 filter 过滤器的配置内容

1、获取 Filter 的名称 filter-name 的内容

2、获取在 Filter 中配置的 init-param 初始化参数

3、获取 ServletContext 对象


filterChain过滤链


在这里插入图片描述


多个过滤器执行顺序由web配置文件顺序决定


filter拦截路径


在这里插入图片描述



版权声明:本文为tutou_girl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。