注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

和申的个人主页

专注于java开发,1985wanggang

 
 
 

日志

 
 

UrlRewriteFilter 学习笔记  

2009-09-24 11:24:51|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1、简介  

    UrlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。

 其主页:http://tuckey.org/urlrewrite/

2、安装

    在其主页下载该包文件,把其jar 包放在lib 目录下,在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>  

    <dispatcher>REQUEST</dispatcher>  

    <dispatcher>FORWARD</dispatcher>  

</filter-mapping>  

在 WEB-INF目录下放置urlrewrite.xml 其配置文件。重启应用即可完成安装。

<urlrewrite default-match-type="wildcard">

    <rule>
        <from>/some/old/*.doc</from>
        <to type="redirect">/very/new/$1.doc</to>
    </rule>
    </urlrewrite>

-------------------------

<rule>

  <from>^/(\w+)/(\w+)/page_(\d+)\.html$</from>

  <to type="forward">/$1.htm?category=$2&amp;page=$3</to>

</rule>

   简单的介绍一下常用的正规表示式:

代码 说明

. 匹配除换行符以外的任意字符

\w 匹配字母或数字或下划线或汉字

\s 匹配任意的空白符

\d 匹配数字

\b 匹配单词的开始或结束

^ 匹配字符串的开始

$ 匹配字符串的结束

常用的&要用  &amp;来表示。$1,$2代表与你配置正规表达式>/(\w+)/(\w+)/相对应的参数。<to type="forward">默认的是 type="forward".

  另一个常用的规则就是连接外部的网站。就要用到。<to type="redirect">

<rule>

     <from>^/rss/yahoo\.html$</from>

       <to type="redirect">    http://add.my.yahoo.com/rss? url=http://feed.feedsky.com/MySiteFeed

      </to>

</rule>


参考文档:

http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html

 

=====================================================================================

=====================================================================================

UrlRewriteFilter--动态URL静态化 - [Struts2]

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://aumy2008.blogbus.com/logs/42495983.html

UrlRewriteFilter是一个用于改写URLWeb过滤器,类似于Apachemod_rewrite。适用于任何Web应用服务器(如ResinOrionTomcat等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。

这样做就避免了url中出现?&之类的符号,而且页面伪静态化之后也增加了被搜索引擎找到的概率。

 

该项目主页:http://tuckey.org/urlrewrite/

 

 

使用方法:

1、下载http://tuckey.org/urlrewrite/#download,解压缩后将WEB-INF下的文件考到相应的web-inf/libweb-inf下。
2
、配置web.xml

    <filter>

       <filter-name>UrlRewriteFilter</filter-name>

       <filter-class>

           org.tuckey.web.filters.urlrewrite.UrlRewriteFilter

       </filter-class>

       <init-param>

           <param-name>logLevel</param-name>

           <param-value>WARN</param-value>

       </init-param>

    </filter>

    <filter-mapping>

       <filter-name>UrlRewriteFilter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

根据自己的需要,将相应目录下的url转给UrlRewriteFilter来处理。
3
、配置urlwrite规则文件WEB-INF/urlrewrite.xml 

详见:http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html

 

4、在Struts2中集成

web.xml里把FilterDispatcher加两个参数(REQUESTFORWARD

  <filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern>

    <dispatcher>REQUEST</dispatcher>

    <dispatcher>FORWARD</dispatcher>

  </filter-mapping>

 

5、配置过滤器

       一定要禁忌,过滤器的配置顺序也很重要!!!

当把UrlRewriteFilter放到字符转码过滤器前面以后就相当于字符转码过滤器无效

 

备注:按照Struts2APIfilter的顺序是
struts-cleanup filter
SiteMesh filter
FilterDispatcher

 

6、示例

第一个常用个规则就是站内的简单重写。
<rule>
  <from></from>
  <to type="forward></to>
</rule>
  <from></from>
写上你自己定义的访问地址,<to type="forward></to>就是实际的访问地址。比如我们实际的访问地址是:http://yousite.com/entity.htm ?category=user&page=2.而我们想把它重写为http://yousite.com/entity/uesr/page_2.html。这样看起来比我们实际的要好看的多。我们就应该这样的写: 
<rule>
  <from>^/(\w+)/(\w+)/page_(\d+)\.html$</from>
  <to type="forward">/$1.htm?category=$2&amp;page=$3</to>
</rule>
  
简单的介绍一下常用的正规表示式:
代码 说明
.
匹配除换行符以外的任意字符
\w
匹配字母或数字或下划线或汉字
\s
匹配任意的空白符
\d
匹配数字
\b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束

常用的&要用  &amp;来表示。$1,$2代表与你配置正规表达式>/(\w+)/(\w+)/相对应的参数。<to type="forward">默认的是 type="forward".
 
另一个常用的规则就是连接外部的网站。就要用到。<to type="redirect">
<rule>
     <from>^/rss/yahoo\.html$</from>
       <to type="redirect">    http://add.my.yahoo.com/rss? url=http://feed.feedsky.com/MySiteFeed
      </to>
</rule>

 

示例二

    <rule>

       <note>无参数匹配</note>

       <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)$</from>

       <to type="forward">/$1.jsp</to>

    </rule>

 

    <rule>

       <note>将所有.jsp文件映射为.html</note>

       <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+).html$</from>

       <to type="forward">/$1.jsp</to>

    </rule>

 

 

供学习参考的帖子:

主题:在Java web服务器内使用url rewrite

url rewritestruts2整合

主题:Struts2小结

  评论这张
 
阅读(543)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016