这里只说明一点,先看如下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">
<!--
Configuration file for UrlRewriteFilter
http://tuckey.org/urlrewrite/
-->
<urlrewrite>
<rule>
<from>/noParams.html</from>
<to type="forward">noParams.action</to>
</rule>
<rule>
<from>^/withParams/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/withParams.html</from>
<to type="forward">withParams.action?username=$1&offset=$2&pageSize=$3&fieldName=$4</to>
</rule>
<rule>
<from>^/withParams2/([a-zA-Z0-9]+).html$</from>
<to type="redirect">%{context-path}/withParams.action?username=$1</to>
</rule>
<rule>
<note>admin by user</note>
<from>/admin/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/index.html</from>
<to type="forward">/admin/index.jsp?username=$1&offset=$2&pageSize=$3&fieldName=$4</to>
</rule>
</urlrewrite>
发送的请求地址:<from>/noParams.html</from>
被隐藏的地址:<to type="forward">noParams.action</to>
请求地址应该是:
noParams.html
也就是先请求noParams.html,会跳转到noParams.action,这个逻辑感觉有点反。输入之前需要先记住规则。
web.xml
<!-- urlRewriteFilter -->
<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>
<!-- struts filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>