我最初的想法是这样的:设计一个页面,当出现404错误的时候就由这个页面来处理进行页面的跳转。觉得这个还是可行的,不过需要对于访问的地址进行解析, 确实麻烦了一点。于是放弃。
在Google上搜到过一个设置struts的方法,觉得还是很麻烦,需要配置一大堆东西,还是放弃。
事实上,已经有一个现成的东西了,有人已经写好这样一个Filter来处理地址映射了,叫 UrlWriteFilter
我们要做的只是把这个jar的包放在WEB.INF文件夹中,在web.xml中注册这个filter,写入
<
filter
>
< filter-name > UrlRewriteFilter </ filter-name >
< filter-class > org.tuckey.web.filters.urlrewrite.UrlRewriteFilter </ filter-class >
</ filter >
< filter-mapping >
< filter-name > UrlRewriteFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
< filter-name > UrlRewriteFilter </ filter-name >
< filter-class > org.tuckey.web.filters.urlrewrite.UrlRewriteFilter </ filter-class >
</ filter >
< filter-mapping >
< filter-name > UrlRewriteFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
然后配置那个urlwrite就可以了,在urlwrite.xml已经有很多例子了,比如
<
rule
>
< from > /products/([0-9]+) </ from >
< to > /products/index.jsp?product_id=$1 </ to >
</ rule >
< from > /products/([0-9]+) </ from >
< to > /products/index.jsp?product_id=$1 </ to >
</ rule >
在这里如果你访问的是/products/1234,事实上访问的是/products/index.jsp?product_id=1234
其他的只要使用正则表达式即可。
另外需要注意的是,用了这个东西貌似显示CSS会有问题,只要在调用CSS文件的时候使用绝对路径就好了,一些超链接也最好使用绝对路径。