JavaWeb笔记29-过滤器、过滤器通配符、过滤器链

过滤器/拦截器
1、无论是请求还是响应都会被过滤器拦截
2、需要等待过滤器放行

过滤器作用

  1. 过滤乱码
  2. 限制资源访问

过滤器的实现
1、实现一个Filter接口(init()、destroy()的原理和执行时机和Servlet一样)

public class MyFilter implements Filter{

	public void destroy() {
		System.out.println("Filter.destroy");
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain Chain)
			throws IOException, ServletException {
		System.out.println("拦截请求");
		Chain.doFilter(request,response);  //放行
		System.out.println("拦截响应");
	}

	public void init(FilterConfig arg0) throws ServletException {
		System.out.println("Filter.init");
	}  //第一个过滤器

}

2、在web.xml中配置过滤器,类似servlet

 <filter>
  	<filter-name>MyServlet</filter-name>
  	<filter-class>my.student.filter.MyFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>MyServlet</filter-name>
  	<!--/*表示拦截一切请求-->
  	<!--/MyServlet表示只拦截特定请求-->
  	<url-pattern>/*</url-pattern>
  	<!--拦截HTTP请求-->
  	<dispatcher>REQUEST</dispatcher>
  	<!--拦截请求转发请求-->
  	<dispatcher>FORWARD</dispatcher>
  </filter-mapping>

通配符
dispatcher请求方式:
REQUEST:拦截HTTP请求
FORWORD:只拦截 通过 请求转发方式的请求
INCLUDE:只拦截通过request.getRequestDispatcher("").indeclude()、通过<jsp:include page="…">发出的请求
ERROR:只拦截<error - page>发出的请求

通过doFilter()处理拦截,并且通过chain.doFilter(request,response)放行

Chain.doFilter(request,response);  //放行

注意:
在过滤器中doFilter方法的参数:ServletRequest、ServletResponse
而在Servlet中doGet方法的参数:HttpServletRequest、HttpServletResponse

过滤器链
可以增加多个过滤器Filter,过滤器处理的顺序由web.xml中配置的filter-mapping顺序决定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值