Filter(过滤器/拦截器)的作用

来源:互联网 发布:npc2.wil的算法 编辑:程序博客网 时间:2024/05/04 11:04

Filter(过滤器/拦截器)的作用

1、filter用于拦截用户请求,在服务器作出响应前,可以在拦截后修改request和response,这样实现很多开发者想得到的功能。

2、filter实现
×编写一个继承Filter接口的类
×在工程的web.xml文件描述此过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
 <filter>
  <filter-name>CharsetEcodingFilter2</filter-name>
  <filter-class>cn.itcast.filter.CharsetEcodingFilter2</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>CharsetEcodingFilter2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
3、常见用法
×处理全站中文乱码问题
×实现自动登录
×过滤敏感词汇
×压缩网页
×选择性让浏览器缓存

这几种功能的实现采用同样的原理,那就是使用包装模式或动态代理增强request或response对象的功能。


Filter工作流程图



范例代码:

-------------web.xml-----------:

<filter><filter-name>mutiDomainFilter</filter-name><filter-class>javacommon.filter.MutiDomainFilter</filter-class></filter>

------------MutiDomainFilter.java----------:

public class MutiDomainFilter implements Filter {@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest req, ServletResponse res,FilterChain filterChain) throws IOException, ServletException {// TODO Auto-generated method stub// 自动编码处理HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;String reqUri = request.getRequestURI();try {// 过滤非二级域名urlString modulePath = UrlUtil.getProdModulePath(request);if (modulePath == null) {<strong>filterChain.doFilter(request, response);</strong>return;}// 更改url路径String qryString = request.getQueryString();StringBuilder sb = new StringBuilder();sb.append(modulePath).append(reqUri == null ? "" : reqUri).append(qryString == null ? "" : qryString);System.out.println("changed url:" + sb.toString());<strong>request.getRequestDispatcher(sb.toString()).forward(request,response);</strong>} catch (SecurityException e) {} finally {}}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 第一试用网登录密码忘了怎么办 微博登录直播间帐号被锁定怎么办 硫酸不小心弄到皮肤上怎么办 小米平板进水了开不了机怎么办 U盘被弹出后再插没有显示怎么办 视频从U盘传下来不能播放怎么办 微博账号忘了登录名怎么办 迅雷应版权方要求无法下载怎么办? 微信账号忘记密码上面有钱怎么办 蘑菇街账号忘记了里面有钱怎么办 手机注册的百度云帐号换号怎么办 网易云音乐sd卡写入失败怎么办? 玩客云涌u盘满了怎么办 手机安装杜比音效失败死机该怎么办 网易云音乐下载额度用完了怎么办 苹果手机付费app连续扣费怎么办 oppoO粉卡的流量用没了怎么办 qq邮箱里的文件过期了怎么办 163邮箱里的文件过期了怎么办 做人事的给员工漏交社保了怎么办 公司漏交了员工一个月的社保怎么办 小米4c能充电不能开机怎么办 小米手机关机开不开机该怎么办 小米5s关机开不开机怎么办 老板跑路了员工社保还挂着怎么办 红米5连wifi很慢怎么办 电脑百度网盘下载速度慢怎么办 新手机与旧手机同步了怎么办 百度网盘2t满了怎么办 魅族手机相册的密码忘了怎么办 手机百度网盘本地空间不足怎么办 百度网盘保存视频内存不够怎么办 别人的百度网盘链接打不开怎么办 百度网盘视频插件升级失败怎么办 退苹果id重新登陆照片没了怎么办 苹果升级后照片效果没了怎么办 360云盘个人云盘停止服务怎么办 小米手机账号掉了手机卡没了怎么办 百度网盘下载后不能注册怎么办 微信发出的文件无法撤回怎么办 微信群发错消息无法撤回怎么办