javaweb三大组件之Filter(一)

原创 2016年08月29日 14:49:37

过滤器

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


相关文章推荐

JavaWeb三大组件(Servlet、Filter、Listener)

JavaWeb三大组件指的是:Servlet、Filter、Listener,这三个组件在JavaWeb开发中分别提供不同的功能,然而很多人可能只用过其中一个或者两个(Servlet、Filter,比...

javaweb基本组件之filter的使用

1、filter在web容器中的作用主要有以下这些: ①对用户抛过来的请求进行字符编码上的转换,及为对用户的响应对象填充公用的头信息; ②验证用户的身份是否已经是登录状态和访问权限的控制; ③其...

JavaWeb三大组件之一Servlet【response讲解】

给出一张图请求响应流程图:responseresponse概述response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResp...

JavaWeb三大组件之一Servlet【GenericServlet抽象类】

GenericServletGenericServlet概述GenericServlet是Servlet接口的实现类,我们可以通过继承GenericServlet来编写自己的Servlet。下面是Ge...

JavaWeb三大组件之一Servlet【Servlet细节】

Servlet细节 不要在Servlet中创建成员!创建局部变量即可! 可以创建无状态成员! 可以创建有状态的成员,但状态必须为只读的! Servlet与线程安全因为一个类型的Servlet只有一个实...

JavaWeb笔记——三大组件之过滤器

过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的。  当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter...
  • pwc1996
  • pwc1996
  • 2015年08月25日 16:21
  • 347

JavaWeb三大组件之一Servlet【request讲解】

requestrequest概述request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest。在客户端发出每个请求...

JavaWeb三大组件之一Servlet【访问量统计-ServletContext的应用】

需求一个项目中所有的资源被访问都要对访问量进行累加!简单实现创建一个int类型的变量,用来保存访问量,然后把它保存到ServletContext的域中,这样可以保存所有的Servlet都可以访问到! ...

JavaWeb三大组件之一Servlet【ServletContext(重要)】

ServletContext(重要) 一个项目只有一个ServletContext对象! 我们可以在N多个Servlet中来获取这个唯一的对象,使用它可以给多个Servlet传递数据! 与天地同...

JavaWeb三大组件

ServletListener事件源:(前三个为 JavaWeb三大域)!ServletContext 生命周期监听:ServletContextListener,它有两个方法,分别在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javaweb三大组件之Filter(一)
举报原因:
原因补充:

(最多只允许输入30个字)