`
happyfeisky
  • 浏览: 3976 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

URLreWrite在sturts2中碰到的问题

阅读更多

  最近公司要开发新的项目要用到URL重写,本人技术水平有限,就了解了两个工具,ApaChe's的mod_rewrite和Urlrewrite。公司的大虾让选择用后者Urlrewrite,虾米跟之 — — 。

  老规矩,学新技术先去官网http://tuckey.org/urlrewrite/ ,咬文档(本人比较笨,见笑 — — ),目前最新版本是 4.0.3,下载jar包 urlrewritefilter-4.0.3.jar  或者在Maven POM里配置下面代码

<dependency>
    <groupId>org.tuckey</groupId>
    <artifactId>urlrewritefilter</artifactId>
    <version>4.0.3</version>
</dependency>

 本人使用的是后者。重新构建下项目,然后在项目的/web-inf/web.xml中添加上下面代码

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <!-- urlrewrite.xml	文件存放路径 default /WEB-INF/urlrewrite.xml -->
          <init-param>
	 	 <param-name>confPath</param-name>
		 <param-value>/WEB-INF/urlrewrite.xml</param-value>
          </init-param>

</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

  urlrewrite.xml 只能放到WEB-INF下面。

  继续 urlrewrite.xml 配置文档代码

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
<urlrewrite>
<rule>
 <note>大小写字母数字都可  </note>
<from >/uee/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+).html$</from>
    <to type="forward">/uee/$1.do</to>
</rule>
<outbound-rule>
        <note> 	</note>
         <from>^/page/second.do\?me=([a-z]+)$</from>
       
	 <to >/page/me_$1</to>  
</outbound-rule>

</urlrewrite>

  rule是url规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,可以为多个,()里是匹配的正则表达式. 

  <outbound-rule> 是隐藏 a 链接的,就如官网上说的 Note, If you are using JSTL (ie, <c:url) this will work also. 意思就是说需要转化的链接不能直接写在a标签中需要写在c:url或其他服务器需要解析的变量中这样才能对其重新显示。 在页面上插入下面代码

<a href="<%=response.encodeURL("/page/second.do?me=aa") %>">/page/second.jsp?me=aa</a>

 然后鼠标放到该a链接上 你会发现访问路径已经变成了 http://localhost:8080/page/me_aa 真实的路径已经被隐藏。

  常用正则表达式:

   ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 大小写都可

   ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
   ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串

   ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
   ^/w+$ //匹配由数字、26个英文字母或者下划线组成的字符串

  正则表达式这块要细心点,本人对这块没多少研究的,仅限与会用,知道大概意思。

  好了,其余的东东,都不细说了,配置完毕后理想状态是可以运行了,是的,可以运行了,但是目前只是简单的一些页面的URL地址实现了重写,如果是Action的话就不行了,这时在/WEB-INF/web.xml中Struts2的filter-mapping 加入下面代码中<dispatcher>即可。

 

<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.do</url-pattern>
        <dispatcher>REQUEST</dispatcher>   
       	<dispatcher>FORWARD</dispatcher>   
       	<dispatcher>INCLUDE</dispatcher>   
    </filter-mapping>

 

分享到:
评论
2 楼 changyy_1988 2013-04-23  
你妹啊。。。。
1 楼 gllfeixiang 2013-03-29  
lz,我现在遇到的问题是直接匹配一个字符可以,就像匹配index.html,没有正则的这种没有问题,但是放如正则以后
<rule enabled="true" match-type="regex">
    <from>/index.([a-z]*)$</from>
    <to >/shop/index.do</to>
    </rule>
放了个如上正则后,一访问shop就不停的循环加/shop/shop/......../index.do,到最后就出
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:279)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:279)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:279)
不知道怎么弄

相关推荐

    ssh2中的urlrewrite和Struts2的生成静态页面

    在SSH2(Spring + Struts2 + Hibernate)框架中,URLRewrite是一种强大的工具,可以用于实现URL重写功能,使得网站的URL更加友好、易于理解和记忆。这在SEO优化及用户体验提升方面具有重要意义。 ##### URLRewrite...

    使用urlrewrite重写struts2的action

    在这个场景中,我们将深入探讨如何使用`URL Rewrite Filter`来重写Struts2的Action。 首先,让我们理解`URL Rewrite Filter`的基本概念。这个工具提供了一种方式,通过配置XML文件(如`urlrewrite.xml`)来定义一...

    Struts2下使用urlReWrite的最简实例(MyEclipse工程)

    在这个最简实例中,我们将探讨如何在MyEclipse环境中集成Struts2和urlRewrite,创建一个基本的应用来演示URL重写功能。首先,你需要确保已经安装了MyEclipse,并且在项目中引入了Struts2和urlRewrite的相关依赖库。 ...

    urlrewrite2伪静态与使用文档(IIS)

    标题“urlrewrite2伪静态与使用文档(IIS)”涉及到的是在IIS(Internet Information Services)服务器环境中,使用urlrewrite2模块实现URL重写和伪静态功能的技术内容。URL重写是Web开发中的一项关键技术,它允许...

    struts2+spring3+hibernate4+urlrewrite

    本框架为struts2+spring3+hibernate4+urlrewrite(伪静态地址) Struts采用通配,web-inf下的urlrewrite.xml为伪静态配置文件,跳转到struts.xml进行对应

    IIS Urlrewrite2

    2. **添加规则**:在IIS Manager中选择目标站点,然后在“管理服务”下找到“URL重写”,点击“添加规则”按钮,选择适当的模板或自定义规则。 3. **编写规则**:在新建规则界面,定义输入和输出的URL模式,以及...

    UrlRewrite例子

    UrlRewrite是一个强大的URL重写工具,常用于Java Web应用中,尤其是与Struts2框架结合使用时,能够帮助开发者优化URL结构,提高网站的SEO友好性和用户体验。在这个"UrlRewrite例子"中,我们将深入探讨UrlRewrite的...

    java urlrewrite解决默认页问题

    - **确保顺序正确:** 在`web.xml`中,URL Rewrite Filter应当配置在Struts Filter之前。 - **测试验证:** 配置完成后,务必进行充分的测试,确保所有链接都能够正确地重定向到目标页面。 - **兼容性考虑:** 不同...

    UrlRewrite.rar

    2. 规则编写:UrlRewrite的规则通常写在web.config文件中,使用XML格式。一条规则由`&lt;rule&gt;`元素定义,包含`name`(规则名称)、`pattern`(匹配模式)、`action`(动作)等属性。例如,以下规则将所有请求的".aspx...

    urlrewrite-maven-example.zip

    URLRewrite是一款强大的URL管理工具,尤其在Java Web应用中广泛使用,它可以帮助开发者实现URL的重写和转换,以达到优化URL、隐藏真实路径、提高SEO效果等目的。在本篇文章中,我们将深入探讨URLRewrite的核心概念和...

    URLrewrite-实例

    `URLrewrite`是一个基于Java的开源过滤器,它实现了Apache的mod_rewrite功能,广泛应用于Spring、Struts、JSF等Java Web框架中。它提供了强大的规则配置,使得开发者能够灵活地对URL进行重写和重定向。 在使用`URL...

    urlrewrite3.04的demo

    2. **参数传递**:在URL中隐藏实际的请求参数,提高安全性。 3. **路径重定向**:根据预设规则进行URL重定向,如错误页处理、旧链接转向新链接等。 4. **动态路由**:通过正则表达式匹配URL,实现灵活的动态路由策略...

    netcn_URLRewrite

    3 最重要的 在象Google Yahoo 和 Live 这样的搜索引擎中提高你网站上网页的搜索相关性 具体来说 URL重写经常能使你在你网站上"&gt;什么是UrlRewrite UrlRewrite 是 将动态页面转换为静态页面的一种技术 例如 您网站...

    iis urlrewrite文件

    2. 配置:在IIS管理器中,选择目标站点,然后在“管理服务”中启用URL Rewrite。接着,可以右键点击“URL Rewrite”,选择“添加规则”来创建新的重写规则。 三、规则编写 1. 规则结构:一个规则包括匹配模式...

    struts1.2与urlrewritefilter 的整合

    在Struts1.2框架中,URL通常是带有.action后缀的,这在某些情况下可能不那么直观和友好。URLRewriteFilter的引入就是为了改进这种情况,它允许我们定义一系列规则来转换URL,使其更易于理解和管理。例如,我们可以将...

    URLRewrite配置和使用

    要使用URLRewrite,我们需要在Web工程中添加urlrewrite.jar包,并在WEB-INF目录下创建urlrewrite.xml文件。urlrewrite.xml文件中的内容非常简单,例如: ``` ^/page/(.*)$ &lt;to&gt;/page/$1.jsp ``` 这个规则表明,...

    UrlRewrite域名重写

    2. **正则表达式**:UrlRewrite规则中经常用到正则表达式来匹配和提取URL中的特定部分。熟练掌握正则表达式对于编写复杂的URL重写规则至关重要。 3. **条件组合**:有时候,我们可能需要多个条件一起满足才执行重写...

    UrlRewrite.dll

    在Windows 7或Windows 8操作系统中,如果开发者在部署或调试Web应用程序时遇到与URL重写相关的功能需求,可能需要确保UrlRewrite.dll已经正确安装并且配置。这个组件通常包含在IIS的URL重写模块安装包内,可以通过...

    URLRewrite URL重写组件

    2. **配置**:配置主要在`web.config`文件中进行,通过添加`&lt;system.webServer&gt;`节点下的`&lt;rewrite&gt;`节点来定义重写规则。例如: ```xml &lt;rewrite&gt; &lt;!-- 规则示例 --&gt; &lt;match url="^product/([0-9]+)$...

    urlrewrite

    在Java Web应用程序中,URLRewrite常用于隐藏实际的Servlet或JSP路径,提升用户体验,同时也有助于保护内部系统结构。 二、URLRewrite的工作原理 URLRewrite的核心是通过匹配规则来转换HTTP请求的URL。这些规则...

Global site tag (gtag.js) - Google Analytics