Url Rewrite Filter 使用全攻略

1、什么是Url Rewrite Filter, Url Rewrite Filter可以用来做什么?

Based on the popular and very useful mod_rewrite for apache, UrlRewriteFilter is a Java Web Filter for any J2EE compliant web application server (such as Resin, Orion or Tomcat), which allows you to rewrite URLs before they get to your code. It is a very powerful tool just like Apache's mod_rewrite.

 

URL rewriting is very common with Apache Web Server (see mod_rewrite's rewriting guide) but has not been possible in most java web application servers. The main things it is used for are:

  • URL Tidyness / URL Abstraction - keep URLs tidy irrespective of the underlying technology or framework (JSP, Servlet, Struts etc).
  • Browser Detection - Allows you to rewrite URLs based on request HTTP headers (such as user-agent or charset).
  • Date based rewriting - Allows you to forward or redirect to other URL's based on the date/time (good for planned outages).
  • Moved content - enable a graceful move of content or even a change in CMS.
  • Tiny/Friendly URL's (i.e. blah.com/latest can be redirected to blah.com/download/ver1.2.46.2/setup.exe)
  • A Servlet mapping engine (see Method Invocation)

UrlRewriteFilter uses an xml file, called urlrewrite.xml (it goes into the WEB-INF directory), for configuration. Most parameters

 

2、参考资料

http://tuckey.org/urlrewrite/ 官方站点

http://code.google.com/p/urlrewritefilter/ goole code 目前下载已经移到这上面了。

 

3、如何使用

3.1、安装 jar

下载 urlrewrite-3.2.0.jar 并将其复制到WEB-INF/lib目录

3.2、配置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>

 

3.3、配置rule重写规则

将用户访问的伪地址转成真实的地址。

 

<rule>
  <from>^/([a-zA-Z0-9/-]{36}).shtml$</from>
  <to>/News.do?method=view&uuid=$1</to>
</rule>

访问from配置节,实际上访问的是to配置节

 

3.4、配置outbound-rule重写规则

将页面上的真实地址,转换成伪地址,用此配置节,可以使程序和配置之间达到透明,程序唯一要做的是将要映射的地址

Using the example above JSP's with the code 
<a href="<%= response.encodeURL(" mce_href="&lt;%= response.encodeURL("/world.jsp?country=usa&amp;city=nyc") %>">nyc</a> 
will output 
<a href="/world/usa/nyc" mce_href="world/usa/nyc">nyc</a> 

Or JSTL 
<a href="<c:url value=" mce_href="<c:url value="/world.jsp?country=${country}&amp;city=${city}" ></a>">nyc</a> 
will output 
<a href="/world/usa/nyc" mce_href="world/usa/nyc">nyc</a> 

Note, If you are using JSTL (ie, <c:url) this will work also.

注意:<c:url 中不能将&换成&amp;官方文档是错的!

 

<outbound-rule>
  <from>^/News.do/?method=view&amp;uuid=([a-zA-Z0-9/-]{36})$</from>
  <to>/$1.shtml</to>
</outbound-rule>

 

注意:此配置?要换成/?  &要换成&amp;

 

 


原文链接: http://blog.csdn.net/kimsoft/article/details/4194853

转载于:https://my.oschina.net/chen106106/blog/46231

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值