什么是Url Rewriting
关于Url Rewriting的概念这里不详述,有一篇很不错的介绍文章:
http://www.addedbytes.com/for-beginners/url-rewriting-for-beginners/
在Tomcat中使用Url Rewriting step by step
我使用的IDE是eclipse indigo,web server当然就是Tomcat了,url rewrite工具是UrlRewriteFilter 3.2.0(关于这个工具,大家可以去官网看介绍)。
1, 到http://code.google.com/p/urlrewritefilter/downloads/list 下载 urlrewritefilter-3.2.0.zip 解压后有两个文件:
urlrewritefilter-3.2.0.jar
urlrewrite.xml
2, 大家知道,如果希望tomcat作为web server运行自己的web程序,需要将web程序的相关resource部署到tomcat的根目录下,然后运行startup.bat来launch tomcat。
但是在eclipse indigo中开发dynamic web project时,为了简化这个过程,eclipse可以自动完成很多事情:管理tomcat,自动部署web application,甚至把浏览器也集成到了eclipse中。
而我使用的就是第二种方式,这种方式需要在eclipse中建一个tomcat server。具体大家参考别的资料吧。
如果使用第一种方式,则需要将urlrewritefilter-3.2.0.jar放到tomcat根目录下的lib下。
3,将urlrewrite.xml放到项目/WebContent/WEB-INF下。
WEB-INF
–lib
–urlrewrite-3.2.0.jar
–urlrewrite.xml
4,打开web.xml,在<servlet>前加入:
<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>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
修改这个文件是因为url rewriting是由container控制的行为,而web.xml是给container使用的。
5, 在urlrewrite.xml中加入一条rule
</rule>
上例的意思很简单,即当浏览器请求/home页面时,将请求实际发送给/index.jsp
这样用户在地址栏中看到的就是http://localhost:8080/***/home,而背后实际运行的是http://localhost:8080/***/index.jsp
更多rule的例子请参看
http://code.google.com/p/urlrewritefilter/