用 UrlRewriteFilter 实现 URL 重写
http://blog.csdn.net/javacn_org/article/details/5580243
是否看到別人的網(wǎng)站網(wǎng)址名都不帶后綴名比較酷,比如qq空間的地址,其實(shí)用urlrewrite這個(gè)包很容易就實(shí)現(xiàn)了。
下面是使用說明:
1.下載urlrewrite,官方下載地址:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip?
2.解壓縮文件,壓縮包內(nèi)文件copy到項(xiàng)目中(壓縮包位置 -> 項(xiàng)目位置):?
urlrewrite-2.6.0-src/webapp/WEB-INF/lib/urlrewrite-2.6.0.jar -> WebRoot/WEB-INF/lib/urlrewrite-2.6.0.jar?
urlrewrite-2.6.0-src/webapp/WEB-INF/urlrewrite.xml -> WebRoot/WEB-INF/urlrewrite.xml?
3.將以下代碼添加到web.xml里
<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>??
????????<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>??
[xml]?view plaincopy
4.修改urlrewrite.xml
<?xml?version="1.0"?encoding="utf-8"?>???
<!DOCTYPE?urlrewrite?PUBLIC?"-//tuckey.org//DTD?UrlRewrite?2.6//EN"???
"http://tuckey.org/res/dtds/urlrewrite2.6.dtd">???
??
<!--???
??
Configuration?file?for?UrlRewriteFilter???
http://tuckey.org/urlrewrite/???
??
-->???
<urlrewrite>???
????<rule>???
????????<from>^/([a-z]+)$</from>???
????????<to?type=?"forward"?>/world.jsp?id=$1</to>???
????</rule>???
????<rule>??
????????<from>^/world/(.*)$</from>??
????????<to>/world.jsp?tid=$1</to>??
????</rule>??
????<rule>??
????????<from>^/(.*).html$</from>??
????????<to>/test1/$1.jsp</to>??
????</rule>??
??????
????<outbound-rule>???
????????<note>???
????????The?outbound-rule?specifies?that?when?response.encodeURL?is?called?(if?you?are?using?JSTL?c:url)???
????????the?url?/rewrite-status?will?be?rewritten?to?/test/status/.???
??????????
????????The?above?rule?and?this?outbound-rule?means?that?end?users?should?never?see?the???
????????url?/rewrite-status?only?/test/status/?both?in?thier?location?bar?and?in?hyperlinks???
????????in?your?pages.???
????????</note>???
????????<from>/rewrite-status</from>???
????????<to>/test/status/</to>???
????</outbound-rule>??
</urlrewrite>???
<?xml?version="1.0"?encoding="utf-8"?>? ??
<!DOCTYPE?urlrewrite?PUBLIC?"-//tuckey.org//DTD?UrlRewrite?2.6//EN"? ??
"http://tuckey.org/res/dtds/urlrewrite2.6.dtd">? ??
??
<!--? ??
??
Configuration?file?for?UrlRewriteFilter? ??
http://tuckey.org/urlrewrite/? ??
??
-->? ??
<urlrewrite>? ??
????<rule>? ??
????????<from>^/([a-z]+)$</from>? ??
????????<to?type=?"forward"?>/world.jsp?id=$1</to>? ??
????</rule>? ??
????<rule>??
????????<from>^/world/(.*)$</from>??
????????<to>/world.jsp?tid=$1</to>??
????</rule>??
????<rule>??
????????<from>^/(.*).html$</from>??
????????<to>/test1/$1.jsp</to>??
????</rule>??
???? ??
????<outbound-rule>? ??
????????<note>? ??
????????The?outbound-rule?specifies?that?when?response.encodeURL?is?called?(if?you?are?using?JSTL?c:url)? ??
????????the?url?/rewrite-status?will?be?rewritten?to?/test/status/.? ??
???????? ??
????????The?above?rule?and?this?outbound-rule?means?that?end?users?should?never?see?the? ??
????????url?/rewrite-status?only?/test/status/?both?in?thier?location?bar?and?in?hyperlinks? ??
????????in?your?pages.? ??
????????</note>? ??
????????<from>/rewrite-status</from>? ??
????????<to>/test/status/</to>? ??
????</outbound-rule>??
</urlrewrite>???
[xml]?view plaincopy
rule是url重寫規(guī)則,from是顯示出來的地址,to是映射的實(shí)際地址,$1是重寫參數(shù),可以為多個(gè),()里是匹配的正則表達(dá)式.?
好了,在項(xiàng)目中新建world.jsp,啟動(dòng)tomcat,輸入?
http://localhost:8080/mysite/world/1?
mysite是你的項(xiàng)目名?
實(shí)際上訪問的是http://localhost:8080/mysite/world.jsp?tid=1?
這樣就簡單的實(shí)現(xiàn)了偽靜態(tài)的效果
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的用 UrlRewriteFilter 实现 URL 重写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 构建iOS持续集成平台(三)——CI服务
- 下一篇: nginx 根据IP 进行灰度发布