java过滤器 servlet_JAVA-Servlet-过滤器知识总结

JAVA Filter是什么呢?

Servlet过滤器实际上就是一个标准的java类,这个类通过实现Filter接口获得过滤器的功能。它在jsp容器启动的时候通过web.xml配置文件被系统加载。

Servlet过滤器在接收到用户请求的时候被调用,当服务器接收到用户的请求的时候,依次调用配置好的过滤器,完成后将执行请求所要求的servlet,而servlet执行后的响应,则先通过配置好的过滤器后再发送给用户。

Filter的作用是什么?

1、用户认证和授权管理。

2、统计web应用的访问量和访问命中率,生成访问报告。

3、实现web应用的日志处理功能。

4、实现数据压缩功能。

5、对传输的数据进行加密,或者转换,压缩等需求。

6、实现xml文件的XSLT的转换。

7.性能测量

为什么要用Filter?

因为像用户验证,数据加密或者转换需求,应该设计为独立的组件,随时在应用程序上进行添加 , 移除而不用修改源码,这就非常需要过滤器的存在了。安插在浏览器与Servlet中间,可以通过过滤请求与响应之间进一步处理。Servlet/jsp提供的过滤机制,可以根据需求随意更换过滤器的顺序,执行的时间。

进一步解释:

一个servlet过滤器其实是一个java类,它的实现需要分为两个部分,java类自身以及在web.xml文件中的XML描述。对于filter接口,该接口由一对描述的生命周期的方法init(),destroy(),init方法在服务器初始化过滤器的时候会调用,而destory方法在服务器关闭的时候会调用,还有一个行为方法doFilter方法会在执行过滤操作的时候调用.

如何实现Filter?

建立一个java类,必须实现Filter接口(javax.Servlet.Filter包下),并在web.xml中定义过滤器。

1 public class filter implements Filter{//定义接口 重写方法

2 @Override3 public voiddestroy() {4 //TODO Auto-generated method stub

5 }6

7 @Override8 public voiddoFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)9 throwsIOException, ServletException {10

11 }12 @Override13 public void init(FilterConfig arg0) throwsServletException {14 //TODO Auto-generated method stub

15 }16

17 }

定义web.xml:

648959ef2679feda2c83568c2a56861a.png

关于web.xml的一些知识:

过滤器通过 web.xml 文件中的两个 XML 标签来声明:

1、 : 定义过滤器的名称,并且声明过滤器实现类和 init() 参数。

: 指定过滤器的名字;

: 指定过滤器类的类名,包括类的路径;

: 为过滤器实例提供初始化参数,可以有多个;

2、 : 将过滤器与 servlet 或 URL 模式相关联。

:  指定过滤器的名字,与中的子元素相对应;

:  指定和过滤器关联的URL,为”/*”表示所有URL;

3、元素还可以包含0到4个,指定过滤器对应的请求方式,

可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST.

REQUEST

当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。

INCLUDE

如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。

FORWARD

如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。

ERROR

如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。

在web.xml中配置Servlet和Servlet过滤器,应该先声明过滤器元素,再声明Servlet元素。

两个或更多个过滤器应用到同一个资源,按照它们在配置文件中显示的先后次序调用它们。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值