`

Struts2 urlrewrite 多个参数 outbound-rule

阅读更多

struts2 在页面结合其自身的标签, 使用urlrewrite 相当方便,鄙人也是初次使用。google一下 一搜一箩筐,基本都是a抄b b复制c c 粘贴a  d收藏c,(再次吐槽那些只会ctrl+c and ctrl+v的XXX)完了都是只有

<rule>
 		 <note>ContentInfo_contentId_page</note>
        <from>^/app/ContentInfo/([0-9]+)_([0-9]+)</from>
        <to>/app/ContentInfo.action?contentId=$1&amp;intPage=$2</to>
 </rule> 

然后对于<outbound-rule><outbound-rule/> 标签的介绍几乎全都一提略过。

 其实该标签也就是上面规则的逆运算,将页面中符合outbound-rule 的url 转换成您自定义的 觉得美观的url,

 多次尝试发现,

<outbound-rule>
		<from>/app/ContentInfo.action\?contentId=([0-9]+)&amp;intPage=([0-9]+)</from>
        <to>/app/ContentInfo/$1_$2</to>
</outbound-rule>

 

 这里虽然将"&" 在XML中做了转义,但是 仍然无效,因为struts在服务端生成url时已将用于连接参数的“&”转义为“&amp;”了 所以在rewrite时他只是一个字符串了。所以上面的规则修改为

<outbound-rule>
		<from>/app/ContentInfo.action\?contentId=([0-9]+)(.*)intPage=([0-9]+)</from>
        <to>/app/ContentInfo/$1_$3</to>
</outbound-rule>

 
用(.*) 匹配“&amp;”  至此,struts下urlrewrite 重写服务端地址的多个参数传入问题顺利得到解决,

 

注:此处还有另外一个方法就是先重写一个无参的相同名称的url 然后在按规则匹配参数,也能解决,就是麻烦点。

 

 

 

分享到:
评论

相关推荐

    UrlRewrite例子

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

    伪静态URLRewrite实例解析

    在`WEB-INF`目录下新建一个名为`urlrewrite.xml`的文件,用于定义具体的URL重写规则。示例内容如下: ```xml &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite...

    urlrewrite示例

    7. **标记和命名空间**:`URLRewrite`配置文件通常会使用特定的标记和命名空间,例如`&lt;rule&gt;`、`&lt;condition&gt;`、`&lt;outbound-rule&gt;`等,理解这些标记的含义和用法对于正确编写规则至关重要。 8. **日志和调试**:为了...

    URL过滤.doc

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter&lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;confReloadCheckInterval&lt;/param-name&gt; &lt;param-value&gt;20&lt;/param-value&gt; &lt;/init-param&gt; &lt;init-...

    urlrewritefliter 3.2.0jar包

    7. **配置文件**:通常,URL重写规则存储在`urlrewrite.xml`文件中,该文件位于Web应用的`WEB-INF/classes`目录下。开发者可以通过修改此文件来添加、删除或修改规则。 8. **日志和调试**:URLRewriteFilter提供了...

Global site tag (gtag.js) - Google Analytics