JAVAWeb开发之Servlet Filter技术

JAVAWeb开发之Servlet Filter技术

1、Filter 原理

Filter(过滤器)是拦截 Request 请求的对象:在用户的请求访问资源前处理 ServletRequest 以及 ServletRespons。
实际上 Filter 拦截的本质是对 URL访问的拦截。
重要应用:权限控制。
Filter过滤器原理

Interface Filter 接口中定义了三个方法:

     1. init ( FilterConfig filterConfig )
     2. doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
     3. destroy() 

2、编写第一个Filter

  1. 创建资源(hello.jsp)
  2. 创建类(MyFilter),实现Filter接口(实现接口中三个方法)
  3. 在 web.xml 中注册过滤器,配置被 Filter 拦截的资源的路径:
  4. 启动服务器,访问hello.jsp资源
 <!--注册Filter过滤器,并定义过滤器name -->
    <filter>
        <filter-name>MyFilter</filter-name>
        <!--filter-class 为包路径.类名-->
        <filter-class>filter.MyFilter</filter-class>
    </filter>

    <!--配置目标资源-->
    <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <!--被拦截资源路径-->
        <url-pattern>/hello.jsp</url-pattern>
    </filter-mapping>

程序执行结果(生命周期):
       1、启动服务器时,Filter对象被创建,执行过滤器init 方法(只执行一次) ;
       2、访问hello.jsp :过滤器中doFilter方法获得执行(每请求一次,doFilter 方法执行一次),但是页面并未显示资源内容;
       *原因:资源被 Filter 对象拦截,目标资源没有被访问。此时Filter对象和资源(hello.jsp)组成了一个请求调用链 FilterChain;如果想要访问目标资源,需要在doFilter方法中调用filterChain.doFilter(servletRequest,servletResponse); 来访问FilterChain链上的下一个资源;
       3、关闭服务器,执行 destroy()方法(只执行一次)。
       

3、filter-mapping的配置注意事项

多个Filter过滤器
web应用中任意一个资源可以实现多个Filter接口,程序根据<filter>、<filter-mapping> 顺序执行filter拦截;
一个过滤器也可以过滤多个web资源在<filter-mapping>中配置多个<url-pattern>即可

过滤Servlet
在 filter-mapping 中存在 url 和 name两种配置方式,都可以过滤 Servlet

<url-pattern>/hello</url-pattern> 
<servlet-name>HelloServlet</servlet-name>

<dispatcher> 标签及意义
配置在什么情况下、在什么调用方式下拦截目标资源 ?
服务器调用资源四种方式:request(默认),forward、include、error
  request — 在请求时过滤
  forward — 在转发时过滤
  include — 在包含时过滤
  error — 在错误页面跳转时过滤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值