当前位置: 代码迷 >> Web前端 >> 施用urlrewrite重写struts2的action
  详细解决方案

施用urlrewrite重写struts2的action

热度:604   发布时间:2012-09-17 12:06:51.0
使用urlrewrite重写struts2的action
首先呢是导入jar包,这个jar我是找很久了,别人给的链接我访问不到,就csdn上有。可是呢,csdn下东西要积分,你懂得。
下面给了一个jar和xml文件。
首先修改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>  
 <!-- ===================== --> 

加入上面那句。顺序为urlrewrite--struts-cleanup--struts
在struts-mapping配置这个属性
<dispatcher>FORWARD</dispatcher>

然后是urlrewrite.xml:
<rule>
		<from>/1.html</from>
		<to type="forward">/manage/BlockManage_findBlockList.do</to>
	</rule>
	<rule>
		<from>/t/(\d+)/([a-z]+).HTML$</from>
		<to type="forward">%{context-path}/manage/HospitalManage_toUpdateHospital.do?id=$1&amp;name=$2</to>
	</rule>

只给出2个例子。
其中XXX.do就是访问的action...$1是第一个参数,$2是第二个参数....
&符号要转成&amp;别忘了;号
上面的()括号里面就是匹配参数的正则
<form></form>之间是自定义的url
<to></to>之间是实际url.
如果要想地址栏显示自定义的url就在to标签加入type="forward"属性
对应的链接地址
<a href="t/${item.id}/${item.name }.HTML" >更新</a>


  相关解决方案