Java web程序设计 过滤器Filter学习笔记

过滤器  Filter

     Filter被称作过滤器或者拦截器,其基本功能就是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理前后实现一些特殊功能 

     当浏览器访问服务器中的目标资源时,会被Filter拦截,在Filter中进行预处理操作,然后再将请求转发给目标资源。当服务器接收到这个请求后会对其进行响应,在服务器处理响应的过程中,也需要先将响应结果发送给拦截器,在拦截器中对响应结果进行处理后,才会发送给客户端。 

Filter过滤器就是一个实现了javax.servlet.Filter接口的类,在javax.servlet.Filter接口中定义了三个方法

(1)init

(2)FilterConfig

(3)filterConfig

初始化的时候执行,只调用一次

例子:

建立项目15Filterdemo,建立com.jike.filter包

(1)首先建立一个servlet  --Myservlet

(2)配置servlet

运行一下http://localhost:8080/15Filterdemo1class/MyServlet

(3)建立过滤器的类---MyFilter    要去实现Filter接口

(4)配置过滤器,在web.xml中去配置

 

运行一下http://localhost:8080/15Filterdemo1class/MyServlet

说明这个过滤器拦截了myServlet

作用:1实现自动登录,2实现这个网站的统一编码

Filter映射

Filter的映射方式可分为两种

拦截用户所有请求   用*表示

 <filter>

    <display-name>MyFilter</display-name>

    <filter-name>MyFilter</filter-name>    <filter-class>com.jike.filter.MyFilter</filter-class>

  </filter>

  <filter-mapping>

    <filter-name>MyFilter</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

拦截不同方式请求

<filter-mapping>元素中有一个特殊的子元素<dispatcher>,该元素用于指定过滤器所拦截的资源被Servlet容器调用的方式

  1. Request方式:“当用户直接访问页面时,web容器就会调用过滤器,如果目标资源是通过request Dispatch的include()或者forward()方法访问的,”
  2. Include  如果目标资源是通过request。 Dispatch的include()方法访问的
  3. Forward 如果目标资源是通过request Dispatch的forward()方法访问的,
  4. Error 如果目标资源是通过声明异常处理机制调用的,那么该过滤器就会被调用。

Forward方式来做个例子

在包中 建立ForwardServlet。

 

(5)建立first.jsp

 

(6)建立过滤器  ForwardFilter 

(7)配置过滤器  web.xml中 

http://localhost:8080/15Filterdemo1class/ForwardServlet 

注意:如果不加<dispatcher>FORWARD</dispatcher>,则访问页面的时候是不拦截的,结果是 

Filter链

如果多个过滤器对某一个资源都进行了过滤,那么,这些过滤器就形成了过滤器链

 

例子:过滤器链怎么用

在包里建立Myfilter1

再建立MyFilter2 

配置,让这两个过滤器都对前面建立的Myservlet进行过滤 

 

http://localhost:8080/15Filterdemo1class/MyServlet 

​​​​​​​

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值