javaweb三大组件之Filter(一)

过滤器

1.它会在一组资源(jsp,servlet,.css,html等)的前面执行

2.它可以让请求得到目标资源,也可以不让请求达到

*过滤器有拦截的能力


过滤器如何编写

1.创建一个类实现javax.servlet.Filter

2.接下来再web.xml中进行配置


(假设存在一个AServlet,我们对AServlet进行过滤的配置如下)

<filter>

<filter-name>AFilter(过滤器名称)</filter-name>

<filter-class>cn.hpy.web.filter.AFilter(包名+类名)</filter-class>

</filter>

<filter-mapping>

<filter-name>AFilter</filter-name>

<url-pattern>/AServlet(选定的Servlet)</url-pattern>

**也可以用这种

<servlet-name>AServlet(没有斜杠是因为他是名字,并不是路径)</servlet-name> 

</filter-mapping>


Filter接口中

init(FilterConfig arg0)是在创建之后马上调用

FilterConfig 中有几个方法:

   * 获取初始化参数:getInitParameter()
   * 获取过滤器名称:getFilterName()
  *** 获取appliction:getServletContext()

doFilter(ServletRequest arg0,ServletResponse arg1,FilterChain arg0);

FilterChain中也有一个doFilter(ServletRequest arg0,ServletResponse arg1);

FilterChain中的doFilter(ServletRequest arg0,ServletResponse arg1) 实现放行 转到AServlet后再回到doFilter(ServletRequest arg0,ServletResponse arg1,FilterChain arg0);中

相当于执行了Servlet中的service方法



多过滤器


FilterChain#doFilter()方法:
  执行目标资源,或是执行下一个过滤器!如果没有下一个过滤器那么执行的是目标资源,如果有,那么就执行下一个过滤器!


*多个过滤器的执行顺序
*<filter-mapping>的配置顺序决定了过滤器的执行顺序!


四种拦截方式

过滤器的四种拦截方式


  <dispatcher>REQUEST</dispatcher>默认的!
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>INCLUDE</dispatcher>
  <dispatcher>ERROR</dispatcher>


在<filter-mapping>中进行配置!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值