實例
訪問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應答