Filter

Filter概念

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

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

  1. 权限检查
  2. 日记操作
  3. 事务管理 ……等等

Filter的使用

Filter 过滤器的使用步骤:

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

login.jsp 页面

这是登录页面。login.jsp 页面 <br> 
<form action="http://localhost:8080/filter/loginServlet" method="get"> 
	用户名:<input type="text" name="username"/> <br> 
	密 码:<input type="password" name="password"/> <br> 
	<input type="submit" /> 
</form>

LoginServlet 程序

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        String username=req.getParameter("username");
        String password=req.getParameter("password");
        if("haifan".equals(username) && "123123".equals(password)){
            req.getSession().setAttribute("user",username);
            resp.getWriter().write("登陆成功");
        }else{
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
        }
    }
}

Filter生命周期

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

  1. 构造器方法
  2. init初始化方法
  3. doFilter过滤方法
  4. destroy销毁方法
    第1、2步,在web工程创建的时候执行
    第3步,每次拦截到请求,就会执行
    第4步,停止web工程的时候,就会执行

FilterConfig类

  1. 这个类是Filter过滤器的配置文件类
  2. tomcat每次创建Filter 的时候,也会创建一个FilterConfig类,这里包含了Filter配置文件的配置信息
FilterConfig类的作用
  1. 获取Filter的名称,filter-name的内容
  2. 获取Filter 中配置的initial-param初始化参数
  3. 获取ServletContext对象
//获取Filter的名称,filter-name的内容
System.out.println(filterConfig.getFilterName());
//获取Filter 中配置的initial-param初始化参数
System.out.println(filterConfig.getInitParameter("user"));
//获取ServletContext对象
System.out.println(filterConfig.getServletContext());

FilterChain 过滤器链

下图描述:多个过滤器如何一起工作

在这里插入图片描述

  1. 多个过滤器中,他们执行的优先顺序是由他们在web.xml中从上到下的配置顺序决定的
  2. 所有的filter和目标子源默认都执行在同一个线程中
  3. 多个Filter共同执行的时候,都使用同一个Request对象。

Filter的拦截路径

精确比配:(匹配到某个具体文件)

<url-pattern>/a.html</url-pattern>

目录匹配 :(匹配到某个目录下所有文件)

<url-pattern>/admin/*</url-pattern>

后缀名匹配 :(表示后缀必须以.action结尾才会拦截到)

<url-pattern>*.html</url-pattern>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值