您的位置:首页 > 其它

Servlet的自我理解之7:Servlet过滤器技术的具体实现

2014-04-01 15:51 477 查看
Filter(过滤器)技术是Servlet 2.3以上出现的新功能,目前已经到3.0了,是一项非常重要的技术,你要掌握它,因为他是国人专用哦!

为什么这么说,它之中最重要的,应用最为广泛的,两种:解决中文乱码和权限控制,后一种比较牛逼,作为入门者,暂先实现第一种吧~~

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基础与案例开发详解》,清华大学出版社
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  filter servlet