关闭

javaweb三大组件之Filter(一)

87人阅读 评论(0) 收藏 举报
分类:

过滤器

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>中进行配置!


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:479次
    • 积分:73
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档