Servlet的自我理解之7:Servlet过滤器技术的具体实现
2014-04-01 15:51
477 查看
Filter(过滤器)技术是Servlet 2.3以上出现的新功能,目前已经到3.0了,是一项非常重要的技术,你要掌握它,因为他是国人专用哦!
为什么这么说,它之中最重要的,应用最为广泛的,两种:解决中文乱码和权限控制,后一种比较牛逼,作为入门者,暂先实现第一种吧~~
Filter不是一个Servlet类,在一个request到达Servlet之前预处理request,在离开Servlet时处理response,也叫“Servlet Chain”,原理图如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201404/558c20877b97b3f059ada48987106d2e)
测试结果提示404错误,不知道哪儿的问题,代码和配置应该是没错的,今天先把代码和web.xml的配置代码贴上来,以后具体测试时再说~~
(1)首先定义一个名为CharacterEncodingFilter的Filter类,用于解决中文乱码现象,
我的工程目录结构如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201404/b199383740506c8e93c48aad65dcce84)
具体代码如下:
(2)进行web.xml相关文件的配置
(3)我直接run as->run on server,出现了比较纠结的404问题,怀疑是不是这么个Filter类是没法具体看到的,反正代码肯定没问题,先这样吧~~
![](https://oscdn.geek-share.com/Uploads/Images/Content/201404/7af0f76b06e40b1e2ca6c0b9209076e7)
参考书目:《JSP基础与案例开发详解》,清华大学出版社
为什么这么说,它之中最重要的,应用最为广泛的,两种:解决中文乱码和权限控制,后一种比较牛逼,作为入门者,暂先实现第一种吧~~
Filter不是一个Servlet类,在一个request到达Servlet之前预处理request,在离开Servlet时处理response,也叫“Servlet Chain”,原理图如下:
测试结果提示404错误,不知道哪儿的问题,代码和配置应该是没错的,今天先把代码和web.xml的配置代码贴上来,以后具体测试时再说~~
(1)首先定义一个名为CharacterEncodingFilter的Filter类,用于解决中文乱码现象,
我的工程目录结构如下:
具体代码如下:
package jsp_servlet; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class CharacterEncodingFilter implements Filter{ private FilterConfig config; //此filter被释放时的回调方法 public void destroy() { } //主要做过滤工作的方法 //FilterChain用于调用过滤器链中的下一个过滤器 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //获取此Filter的初始参数的值 String encoding = config.getInitParameter("encoding"); if(null != encoding && !"".equals(encoding)){ request.setCharacterEncoding(encoding); //设置请求数据的编码方式 } //把请求和响应对象传给过滤链中的下一个要调用的过滤器或Sevlet chain.doFilter(request, response); } //些filter初始化时的回调方法 //FilterConfig接口实例中封装了这个Filter的初始化参数 public void init(FilterConfig config) throws ServletException { this.config = config; } }
(2)进行web.xml相关文件的配置
<!-- 定义一个过滤器 --> <filter> <!-- 过滤器的标识名 --> <filter-name>CharacterEncodingFilter</filter-name> <!-- 过滤器类的全限定名(包名.类名) --> <filter-class>jsp_servlet.CharacterEncodingFilter</filter-class> <!-- 配置初始化参数 --> <init-param> <!-- 参数名 --> <param-name>encoding</param-name> <!-- 参数值 --> <param-value>UTF-8</param-value> </init-param> </filter> <!-- 过滤器的映射配置 --> <filter-mapping> <!-- 过滤器的标识名 --> <filter-name>CharacterEncodingFilter</filter-name> <!-- 过滤器的URL匹配模式 --> <url-pattern>/*</url-pattern> </filter-mapping>
(3)我直接run as->run on server,出现了比较纠结的404问题,怀疑是不是这么个Filter类是没法具体看到的,反正代码肯定没问题,先这样吧~~
参考书目:《JSP基础与案例开发详解》,清华大学出版社
相关文章推荐
- Servlet的自我理解之4:URL重定向技术的原理与具体实现
- Servlet的自我理解之6:ID会话跟踪技术的实现
- Servlet技术的自我理解之三:Servlet运行原理及Servlet的加载实例化
- JSP应用的自我理解之4:JSP+JavaBean设计模式的具体实现
- Servlet的自我理解之5:请求分派和重定向对比测试实现
- JSP页面实现servlet过滤器与servlet监听器(JSP中级技术)
- JSP应用的自我理解之一:JSP页面构成与具体实现
- JSP应用的自我理解之5:MVC设计模式的具体实现
- JSP应用的自我理解之二:JSP的异常处理机制及具体实现
- JSP应用的自我理解之三:JSP+Servlet实现表单验证
- Servlet技术的自我理解之二:HTTP协议的深入理解
- 用Servlet、JSP实现帐号注册页面,用过滤器过滤对象防止中文乱码
- 理解Servlet过滤器(javax.servlet.Filter)
- Servlet Filter(过滤器)、Filter是如何实现拦截的、Filter开发入门
- servlet+jsp实现过滤器,防止用户未登录访问
- IOC,依赖倒置 (理解) Spring依赖注入的实现技术是:动态代理
- 个人笔记--Servlet之过滤器实现权限拦截
- Servlet过滤器实现网站访问计数器功能
- APP开发实战148-使用AOP技术输出Log的具体实现