javaweb开发时伪静态设置技巧-使用urlrewrite时需要注意;
1.如果要用&符号,需要用&代替
2.简单起见, 给<from />的配置前面和后面分别加上^, $, 这两个是正则表达式中的强制开始和结尾标志;
3. 如果使用<outbound-rule>要记得代码中的url都是编码过的;
4. contex 是非常重要的, 如果有一个应用的context 是”/myapp”,并且你的请求是”/myapp/somefolder/somepage.jsp”, 容器交给UrlRewriteFilter 的url会是”/somefolder/somepage.jsp”, 这可能难以理解,但是在你的<rule>和<condition>中不要包含context path, 它是容器负责处理的.
5. 正则表达式非常复杂灵活, 请阅读java.util.regex.Pattern中的java正则介绍。如果觉得正则难以理解,可以使用通配符方式。
6. 应用通配符,通配符匹配引擎可以替代正则表达式, 在<condition>和<rule>中设置match-type是wildcard用以开启支持通配符.(或者设置default-match-type)
例如:
/big/url/*匹配/big/url/abc.html但是不匹配/big/url/abc/dir/或/big/url/abc/
/big/url/**匹配/big/url/abc.html,/big/url/abc/dir/和/big/url/abc/
也可以和正则的替换一样, 每个*代表一个参数,在<set>和<to>中用$N的方式使用
7. <to />可以是null, 意义为: 如果匹配请求不再继续, 相当于没有调用chain.doFilter
补充:大家可能看到我上面的配置中有个$1 ,还不明白是什么意思,我说明一下,$1为<from>^/blog/(\w+)</from>中(\w+)所匹配的内容,如果有多个根据顺序$2...$6获取就可以了,需要注意的是在from中需要用()把要匹配的内容括起来才能获取,不然java会抛出异常