Servlet的Filter过滤器
来源:互联网 发布:笔记本内存条检测软件 编辑:程序博客网 时间:2024/04/28 12:54
来源:http://gotothework.javaeye.com/blog/226204
过滤器是请求和响应之间的一种WEB组件,它驻留在服务器端,用来截取客户端与资源之间的请求,并对这些信息进行“过滤”。
Servlet容器对部署描述符中声明的每一个过滤器只会创建一个实例。与Servlet类似,容器将在同一个过滤器实例上运行多个线程来同时为多个请求服务,因此开发过滤器时要注意线程安全问题。
当Web容器接受到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联,如果有那么容器将把请求交给过滤器进行处理,在过滤器中可以改变请求的内容,或重新设置请求的报头信息,然后将请求发送给目标资源,当目标资源对请求做出响应时,容器同样会将响应转发给过滤器,在过滤器中可以对响应的内容进行过滤,从上面的过程我们可以看出,客户端和目标资源不需要知道过滤器的存在,对于客户端来说是透明的。
过滤器位于javax.servlet包中,有3个主要方法:
1.init(FilterConfig config)
Web容器调用方法来初始化过滤器,容器在调用该方法时,向过滤器传递FilterConfig对象,FilterConfig用法和ServletConfig类似。利用FilterConfig对象可以得到ServletContext对象,以及在部署描述符中配置的过滤器的初始化参数。
2.doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
doFilter()方法类似Servlet接口的service()方法。当客户端请求目标资源的时候,容器会调用与这个目标资源想关联的过滤器的doFilter()方法。在这个方法中,可以对请求和响应进行处理,实现过滤器的功能。在特定的操作完成后,可以调用chain.doFilter()方法将请求传给下一个过滤器(或目标资源),也可以直接向客户端返回响应信息,或利用RequestDispatcher的forward()和include()方法,以及sendRedirect()方法转发。
但是要注意,这个方法的请求响应参数的类型是ServletRequest和ServletResponse,也就是说过滤器的使用不依赖具体的协议。
3.destroy()
Web容器调用该方法只是过滤器的声明周期结束。
下面看下过滤器在Web.xml中的声明:
Servlet容器对部署描述符中声明的每一个过滤器只会创建一个实例。与Servlet类似,容器将在同一个过滤器实例上运行多个线程来同时为多个请求服务,因此开发过滤器时要注意线程安全问题。
当Web容器接受到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联,如果有那么容器将把请求交给过滤器进行处理,在过滤器中可以改变请求的内容,或重新设置请求的报头信息,然后将请求发送给目标资源,当目标资源对请求做出响应时,容器同样会将响应转发给过滤器,在过滤器中可以对响应的内容进行过滤,从上面的过程我们可以看出,客户端和目标资源不需要知道过滤器的存在,对于客户端来说是透明的。
过滤器位于javax.servlet包中,有3个主要方法:
1.init(FilterConfig config)
Web容器调用方法来初始化过滤器,容器在调用该方法时,向过滤器传递FilterConfig对象,FilterConfig用法和ServletConfig类似。利用FilterConfig对象可以得到ServletContext对象,以及在部署描述符中配置的过滤器的初始化参数。
2.doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
doFilter()方法类似Servlet接口的service()方法。当客户端请求目标资源的时候,容器会调用与这个目标资源想关联的过滤器的doFilter()方法。在这个方法中,可以对请求和响应进行处理,实现过滤器的功能。在特定的操作完成后,可以调用chain.doFilter()方法将请求传给下一个过滤器(或目标资源),也可以直接向客户端返回响应信息,或利用RequestDispatcher的forward()和include()方法,以及sendRedirect()方法转发。
但是要注意,这个方法的请求响应参数的类型是ServletRequest和ServletResponse,也就是说过滤器的使用不依赖具体的协议。
3.destroy()
Web容器调用该方法只是过滤器的声明周期结束。
下面看下过滤器在Web.xml中的声明:
- Servlet的Filter过滤器
- Servlet的Filter过滤器
- Servlet的过滤器Filter
- servlet的filter过滤器
- servlet的过滤器filter类
- javax.servlet.Filter 的过滤器的使用
- Servlet Filter(过滤器)-王少飞的个人心得
- 【Servlet】Filter过滤器的编写和配置
- servlet filter的串联过滤器执行原理
- Java Web 的servlet 之过滤器 filter
- 对登陆filter的研究 Servlet过滤器
- springboot配置 java servlet的Filter过滤器
- servlet过滤器Filter入门
- servlet Filter 过滤器
- servlet - Filter过滤器入门
- Servlet-----filter 过滤器
- Servlet过滤器Filter使用
- Servlet过滤器(Filter)
- drupal源码分析
- configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));错误解决方法
- 输出从1到1000的数
- 转帖--考查嵌入式C开发人员的最好的0x10道题
- 股市-天亮了
- Servlet的Filter过滤器
- 网络IP检测框架的基本设计思路
- fread() fwrite() 函数简介
- 网络编程常见问题总结
- 使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuery 快速构建强大的 mashup
- 转载 org/aopalliance/intercept/MethodInterceptor
- 创业,程序员5大思维障碍
- ext 成功解析xml
- 转帖--谈谈我对攻读计算机研究生的看法