前言
开心一笑~~~
一个年轻的程序员和一个项目经理登上了一列在山里行驶的火车,他们发现列车上几乎都坐满了,只有两个在一起的空位,这个空位的对面是一个老奶奶和一个年轻漂亮的姑娘。两个上前坐了下来。程序员和那个姑娘他们比较暧昧地相互看对方。这时,火车进入山洞,车厢里一片漆黑。此时,只听见一个亲嘴的声音,随后就听到一个响亮的巴掌声。很快火车出了山洞,他们四个人都不说话。那个老奶奶在喃喃道,“这个年轻小伙怎么这么无礼,不过我很高兴我的孙女扇了一个巴掌”。项目经理在想,“没想到这个程序员居然这么大胆,敢去亲那姑娘,只可惜那姑娘打错了人,居然给打了我。” 漂亮的姑娘想,“他亲了我真好,希望我的祖母没有打疼他”。 程序员坐在那里露出了笑容,“生活真好啊。这一辈子能有几次机会可以在亲一个美女的同时打项目经理一巴掌啊”
内容
Filter是AOP思想的实践者,它体现了一种横切性的技术。Filter技术在servlet2.3规范中才开始加入,大部分的jsp/servlet容器都支持。其实Filter提供了一种声明式服务,非常强大的服务,具有可插拔的能力。
原理
Filter对Http协议过程中的request和response进行了拦截,用户的请求不管是request还是response都要经过Filter,Filter就可以自定义服务,然后切入到里面。进行解耦合的完美服务。需要注意的是,Filter只对Post请求起作用。
实例
采用Filter完成字符集的统一设置。
Tomcat启动时,进行Filter初始化。
Demo
/*
* 采用Filter统一处理字符集
* 作者:周丽同
*/
public class CharsetEncodingFilter implements Filter {
//获取init()中endcoding的值
private String endcoding;
public void destroy() {
}
//进行http请求的时候,进行doFilter
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//设置字符集
request.setCharacterEncoding(endcoding);
//继续执行
chain.doFilter(request, response);
}
//① tomcat启动时,完成Filter初始化
public void init(FilterConfig filterConfig) throws ServletException {
//读配置文件的值
this.endcoding = filterConfig.getInitParameter("encoding");
System.out.println("CharsetEncodingFilter.init()-->> endcoding=" + endcoding);
}
}
Web.xml
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<!-- 对所有jsp起作用 -->
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
小结
很简单的一个小例子,希望通过这个例子,加深印象。
感谢您的宝贵时间···