您的位置:首页 > 编程语言 > Java开发

Java EE 之 过滤器入门学习与总结(2)

2016-02-12 12:46 429 查看
今天就对使用Filter技术能做什么来个小小的归纳。也为了方便今后的复习。

控制浏览器不进行对jsp页面的缓存

//在doFilter方法中添加这样的代码
HttpServletRequest request = (HttpServletRequest )req;
HttpServletResponse response = (HttpServletResponse )resp;

response.setDateHeader("Expires",-1);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");

//放行
chain.doFilter(request,response);


然后记得在web.xml文件中进行声明,最重要的是在url-pattern中设置为*.jsp即可。其余的就不在过多的讲述。

这样,就可以实现不缓存jsp页面的方法了。

Filter 映射的细节

在filter-mapping中配置dispatcher子标签可以控制过滤的范围和方向。有如下四个级别(或者选择性):

REQUEST:默认值;对以请求方式访问的有效

FORWARD:对转发方式的过滤有效

INCLUDE:对include方式的过滤有效

ERROR“对error方式的过滤有效

需要注意的是:filter-mapping可以对一个filter配置多个;

dispatcher标签也可以配置多个,而且同时有效!

使用的时候需要考虑清楚对哪一种方式进行过滤。这样才会有针对性的对网站起到优化的作用!

使用过滤器增强request的转义的功能

实现的步骤:

自定义一个实现了HttpServletRequestWrapper类的类

重写里面的getParameter方法,完成转义的效果

在过滤器的doFilter方法中进行相关字符串的转移效果

最后调用chain.doFilter方法进行放行即可

具体的转义功能实现代码如下:

//该方法来自Tomcat\apache-tomcat-8.0.24\webapps\examples\WEB-INF\classes\util\HTMLFilter.java.
//我们只需要把要进行转义的字符串调用此方法进行转义即可
public static String filter(String message) {

if (message == null)
return (null);

char content[] = new char[message.length()];
message.getChars(0, message.length(), content, 0);
StringBuilder result = new StringBuilder(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '<':
result.append("<");
break;
case '>':
result.append(">");
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
default:
result.append(content[i]);
}
}
return (result.toString());

}


未完 ,待续······
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: