Java EE 之 过滤器入门学习与总结(2)
2016-02-12 12:46
429 查看
今天就对使用Filter技术能做什么来个小小的归纳。也为了方便今后的复习。
然后记得在web.xml文件中进行声明,最重要的是在url-pattern中设置为*.jsp即可。其余的就不在过多的讲述。
这样,就可以实现不缓存jsp页面的方法了。
REQUEST:默认值;对以请求方式访问的有效
FORWARD:对转发方式的过滤有效
INCLUDE:对include方式的过滤有效
ERROR“对error方式的过滤有效
需要注意的是:filter-mapping可以对一个filter配置多个;
dispatcher标签也可以配置多个,而且同时有效!
使用的时候需要考虑清楚对哪一种方式进行过滤。这样才会有针对性的对网站起到优化的作用!
自定义一个实现了HttpServletRequestWrapper类的类
重写里面的getParameter方法,完成转义的效果
在过滤器的doFilter方法中进行相关字符串的转移效果
最后调用chain.doFilter方法进行放行即可
具体的转义功能实现代码如下:
未完 ,待续······
控制浏览器不进行对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()); }
未完 ,待续······
相关文章推荐
- Java EE 之 过滤器入门学习与总结(2)
- eclipse初始设置
- 深入理解Java虚拟机----(十)Java内存模型与线程
- spring(AOP)案例:异常处理
- 源代码参阅之java.util.array
- 深入理解Java虚拟机----(九)程序编译和代码优化
- 深入理解Java虚拟机----(八)类加载和执行子系统的应用
- 深入理解Java虚拟机----(七)字节码执行引擎
- Java核心技术(第8版)学习笔记_继承(1)
- 深入理解Java虚拟机----(六)类加载机制
- 项目SpringMVC+Spring+Mybatis 整合环境搭建(2)-> 测试Spring+Mybatis 环境
- 深入理解Java虚拟机----(五)类文件结构
- Java核心技术(第8版)学习笔记_对象与类
- 项目SpringMVC+Spring+Mybatis 整合环境搭建(1)-> Spring+Mybatis搭建
- Java面向对象的思想
- java 单例模式
- 设置Eclipse/MyEclipse中编辑界面点击任何文件后Package Explorer导航自动定位该文件
- 修改指定拦截器的参数(Struts2)
- spring(AOP) 各种通知概念
- java基础19io流