Filter简介
2015-06-10 10:31
225 查看
一、简介
Filter也称为过滤器,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现权限访问控制、过滤敏感词汇、压缩响应信息,配置日志等一些功能。
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。
二、使用流程
1、新建一个类,实现Filter接口
2、实现doFilter()方法
3、在web.xml中进行配置
三、实践应用(JSP访问servlet时,统一设置字符集)
1)新建一个类,实现Filter接口,并实现doFilter()方法
2)配置xml文件
四、总结
综上:filter其实就是一个拦截器,比如说在上述程序中我设置拦截的对象是*.jsp,当我用jsp网页进行提交时,通过filter,我可以将其进行拦截,先去执行我要执行的代码,执行完了之后,在继续返回到拦截位置继续执行你自己要执行的程序。假如用html网页进行提交时则不会触发此拦截器。
所以说使用Filter是非常方便的,最简单的一点可以实现代码的复用,除此之外还有好多其他的好处,在此就不一一介绍了。
Filter也称为过滤器,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现权限访问控制、过滤敏感词汇、压缩响应信息,配置日志等一些功能。
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。
二、使用流程
1、新建一个类,实现Filter接口
2、实现doFilter()方法
3、在web.xml中进行配置
三、实践应用(JSP访问servlet时,统一设置字符集)
1)新建一个类,实现Filter接口,并实现doFilter()方法
/** * 统一设置字符集 */</span> public class CharsetEncodingFilter implements Filter { private String encoding; @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //System.out.println("CharsetEncodingFilter_____begin———————"); // 设置字符集</span> request.setCharacterEncoding(encoding); //继续执行</span> chain.doFilter(request, response); //System.out.println("CharsetEncodingFilter______end——————"); } @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub encoding=filterConfig.getInitParameter("encoding"); } }
2)配置xml文件
<filter> <!-- 配置实现Filter的类 --></span> <filter-name>CharsetEncodingFilter</filter-name> <filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class> <!-- 设置初始化参数 --> </span> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <!-- 设置要拦截的url --></span> <filter-name>CharsetEncodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
四、总结
综上:filter其实就是一个拦截器,比如说在上述程序中我设置拦截的对象是*.jsp,当我用jsp网页进行提交时,通过filter,我可以将其进行拦截,先去执行我要执行的代码,执行完了之后,在继续返回到拦截位置继续执行你自己要执行的程序。假如用html网页进行提交时则不会触发此拦截器。
所以说使用Filter是非常方便的,最简单的一点可以实现代码的复用,除此之外还有好多其他的好处,在此就不一一介绍了。
相关文章推荐
- [转]ASP.NET MVC Bootstrap极速开发框架
- 合并两个排序的链表
- 分享到QQ空间的icon的坑
- C#检查HTML是否闭合以及自动修复代码
- 测量系统调用开销
- 10201启动时候报ORA-27125
- leetcode Excel Sheet Column Title
- 查询mysql当前连接数
- scala编程-特质用来做可堆叠的改变
- MYSQL使用group by时,查询结果的总记录数
- 【mybatis】认识selectKey
- 6月第1周全球域名注册商(国际域名)新增注册量TOP15
- 程序员心情1
- popToViewController
- adb命令
- 80后的互联网北漂:你的未来在哪?
- 怎样把图片资源导入Dll,并且取出来? (转)
- 广域网技术
- java 调用webservice的各种方法总结
- PHP array_intersect_key()