实例
访问http://localhost:8080/myProject/index.jsp时,在浏览器输入http://localhost:8080/myProject/index.html来访问,而直接使用前者访问会报404错误。
步骤
1、从官网下载 urlrewritefilter 的 jar 包: http://www.tuckey.org/urlrewrite/#documentation
2、将该 jar 包复制到项目的WEB-INF/lib目录
3、在 web.xml 中添加一个 filter —— UrlRewriteFilter ,下面代码作为参考
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<error-page>
<error-code>404</error-code>
<location>/jsp/error.jsp</location>
</error-page>
<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>*.html</url-pattern>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>
4、在项目的 WEB-INF 目录下创建 urlrewrite.xml 文件,下面代码作为参考(文件名必须是这个,且只能放在该目录)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN"
"http://tuckey.org/res/dtds/urlrewrite3.1.dtd">
<!-- rule编写有严格的顺序 -->
<urlrewrite>
<rule>
<from>.jsp</from>
<to>/jsp/error.jsp</to>
</rule>
<rule>
<from>(.*).html</from>
<to>/jsp/$1.jsp</to>
</rule>
</urlrewrite>
注意:urlrewrite.xml中的rule必须按照严格顺序。
第一个rule用来处理企图访问.jsp的用户,返回404应答,如果已经被该rule处理掉,则不进入下一个rule;
第二个rule用来处理所有.html请求,然后转到实际的.jsp页面中。
如果两个rule顺序写反,那第一个rule会处理所有.html请求,将它们转到.jsp,然后第二个rule得知用户企图访问.jsp,返回404应答,造成的结果是,无论用户访问.html,还是.jsp,返回的都是404应答