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&intPage=$2</to>
</rule>
然后对于<outbound-rule><outbound-rule/> 标签的介绍几乎全都一提略过。
其实该标签也就是上面规则的逆运算,将页面中符合outbound-rule 的url 转换成您自定义的 觉得美观的url,
多次尝试发现,
<outbound-rule>
<from>/app/ContentInfo.action\?contentId=([0-9]+)&intPage=([0-9]+)</from>
<to>/app/ContentInfo/$1_$2</to>
</outbound-rule>
这里虽然将"&" 在XML中做了转义,但是 仍然无效,因为struts在服务端生成url时已将用于连接参数的“&”转义为“&”了 所以在rewrite时他只是一个字符串了。所以上面的规则修改为
<outbound-rule>
<from>/app/ContentInfo.action\?contentId=([0-9]+)(.*)intPage=([0-9]+)</from>
<to>/app/ContentInfo/$1_$3</to>
</outbound-rule>
用(.*) 匹配“&” 至此,struts下urlrewrite 重写服务端地址的多个参数传入问题顺利得到解决,
注:此处还有另外一个方法就是先重写一个无参的相同名称的url 然后在按规则匹配参数,也能解决,就是麻烦点。
分享到:
相关推荐
UrlRewrite是一个强大的URL重写工具,常用于Java Web应用中,尤其是与Struts2框架结合使用时,能够帮助开发者优化URL结构,提高网站的SEO友好性和用户体验。在这个"UrlRewrite例子"中,我们将深入探讨UrlRewrite的...
在`WEB-INF`目录下新建一个名为`urlrewrite.xml`的文件,用于定义具体的URL重写规则。示例内容如下: ```xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite...
7. **标记和命名空间**:`URLRewrite`配置文件通常会使用特定的标记和命名空间,例如`<rule>`、`<condition>`、`<outbound-rule>`等,理解这些标记的含义和用法对于正确编写规则至关重要。 8. **日志和调试**:为了...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>confReloadCheckInterval</param-name> <param-value>20</param-value> </init-param> <init-...
7. **配置文件**:通常,URL重写规则存储在`urlrewrite.xml`文件中,该文件位于Web应用的`WEB-INF/classes`目录下。开发者可以通过修改此文件来添加、删除或修改规则。 8. **日志和调试**:URLRewriteFilter提供了...