Java Web中的过滤器

什么是过滤器?

过滤器:可以把某些东西给过滤/筛选/排除掉的存在。
程序中的过滤器:在java中最小的单元就是类,程序中的过滤器就是一个特殊的类(实现了某个接口(Filter...)),目的是用来拦截资源数据和目的数据之间的信息,以达到两者
之间的数据的过滤筛选作用。

过滤器可以对所有的请求或者响应做拦截操作(过滤器是属于服务端的内容)

①:以常规的方式调用资源(Servlet/JSP)

②:利用修改过的请求信息调用资源

③:调用资源之后,但在响应到客户端之前,对响应做出修改

④:阻止当前资源调用,代之转到其他资源

在web.xml中配置Filter

<Filter>
<filter-name>xxxFilter</filter-name>
<filter-class>Filter类的全限定名</filter-class>
</Filter>
<filter-mapping>
<filter-name>xxxFilter</filter-name>
<url-pattern>/xxx</url-pattern>
</filter-mapping>

<filter-name>:filter的别名

<filter-class>:filter类的全限定名

<filter-mapping>:filter的映射

<url-pattern>:访问该过滤器的名称

过滤器是在项目启动的时候初始化 --> init()
过滤器是在项目关闭的时候销毁 --> destroy()
当用户访问的资源匹配url-pattern的时候,执行过滤的方法 --> doFilter()------FilterChain中的doFilter()方法是将请求继续发送

当访问的资源和过滤器配置不匹配时,过滤器无效

FilterChain(过滤器链):多个过滤器按照一定的顺序,排列起来.
------------------------------------------------------------------
程序中,存在多个过滤器的时候,过滤器的先后执行顺序由谁来决定.
由在web.xml中:配置的<filter-mapping>的先后顺序来决定,也就是由注册的先后顺序来决定。
注解配置时则是由Filter的名称来决定先后顺序(扯淡,这个貌似不起作用)

注意:此时的url-pattern的文本内容是Filter对哪一些资源做过滤操作.
如:
      /common/index.html :说明当前Filter只会对common/index.html做拦截/过滤.
      /hello.jsp :说明当前Filter只会对/hello.jsp做拦截/过滤.
      /employee :说明当前Filter只会对/employee资源做过滤.
      /system/* :说明当前Filter只会对以/system/作为前缀的资源路径做拦截.

过滤器的分类应用

认证过滤:对用户请求进行统一的认证

编码过滤:对数据进行编码和解码方式进行过滤

登录和审核过滤:对用户的访问进行记录和审核

图像转换过滤:转换图像格式

数据压缩过滤:对用户发送的数据进行压缩

加密过滤:对请求和响应进行加密和解密处理

令牌过滤:防止重复提交和改写参数

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值