标签:jsp
跟它的名字一样,filter能够拦截特定的用户请求或者相应,并对这些东西进行处理。虽然很少用,不过也可以对request进行response。filter可以拦截多个请求相应,一个请求响应也可以被多个filter拦截。使用filter只需要创建filter处理类,然后在xml中配置filter。
创建filter类
必须实现Filter接口,里面要有三个方法:init用于初始化filter;destroy用于销毁filter前完成某些资源的回收;doFilter实现过滤功能。因为filter是处理链中的一部分,因此要有chain.doFilter这个方法。在这个方法之前是request预处理,这个方法之后是response后处理。
配置Filter
因为filter是servlet增强版,所以配置上也是比如出一辙,filter中配置name跟class,filter-mapping中配置name跟url(同样也可以通过注解配置,但是太不人性化了)。
filter与servlet只是,filter的doFilter方法里面多了一个FilterChain参数,这个参数可以决定是否放行request请求。实际开发中可以把多个servlet中的相同代码拿到filter中(但是必须保证顺序)。Filter也可以在xml中设置初始参数。具体做法与servlet一样。也是通过init-param子元素来实现。
使用URL Rewrte实现网站伪静态
由于搜索引擎优先考虑收录静态html页面,因此有必要将jsp伪装成静态的。用filter拦截所有发向html的请求,然后转发到jsp即可。可以使用4.0.3版本的Url Rewrite开源项目来实现伪静态。下载好对应的jar包,放在web-inf/lib下,然后在xml中配置名为UrlRewriteFilter的过滤器,对应的类在那个jar包中,url样式为/*表示拦截所有请求。重点是:还要在web-inf路径下增加urlrewrite.xml文件,该文件定义了伪静态的映射规则,规则是基于正则表达式的。参考文档1、参考文档2
本文出自 “指尖轻飞” 博客,谢绝转载!
标签:jsp
原文地址:http://mengcao.blog.51cto.com/9395052/1691057