JavaEE之过滤器

过滤器

在这里插入图片描述
过滤器有两个功能:
1 过滤器 需要在请求和相应拦截
2 需要过滤器放行

1 过滤器(Filter):

实现一个Filter接口
init()、destroy() 原理、执行时机 同Servlet
配置过滤器,类似servlet
通过doFilter()处理拦截,并且通过chain.doFilter(request, response);放行

细节
过滤器中doFilter方法参数:ServletRequest
在Servlet中的方法参数:HttpServletRequest

public class MyFilter implements Filter{

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("init..............");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("处理请求");
        filterChain.doFilter(servletRequest,servletResponse);//过滤器执行停止接着请求向Servlet转发
        System.out.println("处理相应的响应");

    }

    @Override
    public void destroy() {
        System.out.println("destroy...............");

    }

2 filter映射

配置filter

<!-- 配置过滤器 -->
    <filter>
        <filter-name>MyServlet</filter-name>
        <filter-class>cn.tju.filter.MyFilter</filter-class>
    </filter>

   <filter-mapping>
        <filter-name>MyServlet</filter-name>
        <url-pattern>/MyServlet</url-pattern>
    </filter-mapping>

只拦截 访问MyServlet的请求

<url-pattern>/MyServlet</url-pattern>

拦截一切请求(每一次访问 都会被拦截)

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

3 通配符

dispatcher请求方式:
REQUEST:拦截HTTP请求 get post
FORWARD:只拦截 通过 请求转发方式的请求

INCLUDE:只拦截拦截通过 request.getRequestDispatcher("").include() 、通过<jsp:include page="..." />此种方式发出的请求
ERROR:只拦截发出的请求

例子

  <filter-mapping>
  	<filter-name>MyServlet</filter-name>
  	<url-pattern>/*</url-pattern>
  	<dispatcher>REQUEST</dispatcher>
  	<dispatcher>FORWARD</dispatcher>
  </filter-mapping>

当请求转发的时候

客户端请求initServlet的时候,在initServlt中请求转发

request.getRequestDispatcher("jstl2.jsp").forward(request,response);

就会拦截两次
过程
Filter处理请求
serlvlet中处理请求
Filter处理转发请求
Filter处理转发的响应
Filter处理响应
在这里插入图片描述

当重定向的时候

客户端请求MyServlet的时候,在MyServlet中重定向el.jsp

response.sendRedirect("el.jsp");

过程
过滤器处理到MyServlet请求
MyServlet运行,重定向
过滤器处理MyServlet响应
过滤器处理到el.jsp请求
过滤器处理el.jsp响应
在这里插入图片描述

4 过滤器链

可以配置多个过滤器,过滤器的先后顺序是由 <filter-mapping>的位置决定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值