Filter过滤器介绍及使用

文章目录

  • 1、Filter 什么是过滤器
  • 2、Filter 的初体验
      • Filter过滤器的使用步骤:
  • 3、Filter的生命周期
  • 4、FilterConfig 类
  • 5、FilterChain 过滤器链
  • 6、Filter 的拦截路径
      • 精确匹配
      • 目录匹配
      • 后缀名匹配

1、Filter 什么是过滤器

  1. Filter 过滤器它是JavaWeb的三大组件之一。三大组件分别是: Servlet 程序、Listener 监听器、Filter 过滤器
  2. Filter 过滤器它是JavaEE的规范。也就是接口
  3. Filter 过滤器它的作用是:拦截请求,过滤响应。

拦截请求常见的应用场景有:

  • 权限检查
  • 日记操作
  • 事务管理
    …等等

2、Filter 的初体验

有一个需求:
在你的web工程下,有一个admin目录。这个admin目录下的所有资源(html 页面、jpg 图片、jsp文件、等等)都必须是用户登录之后才允许访问。

思考:我们知道,用户登录之后都会把用户登录的信息保存到Session域中。所以要检查用户是否登录,可以判断Session中否包含有用户登录的信息即可。

Filter过滤器的使用步骤:

  1. 编写一个类去实现Filter接口
  2. 实现过滤方法doFilter()
  3. 到web.xml中去配置Filter的拦截路径

Filter 的工作流程图:
Filter过滤器介绍及使用_第1张图片
Filte代码:

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

web.xml中的配置:



	
	 AdminFilter
	
	com.atguigu.filter.AdminFilter




	
	 AdminFilter
	
                    

你可能感兴趣的:(javaWeb)