使用Tuckey UrlRewriteFilter重写SpringMVC url


问题内容

我如何使用Tuckey的UrlRewriteFilter重写SpringMVC中的url,如下所示:

http://localhost:8080/demo/api.do?method=getUser&uid=1001

http://localhost:8080/demo/api/user/1001

控制器片段:

@Controller
@RequestMapping("/api.do")
public class APIController {

    @RequestMapping(params = "method=getUser")
    public String methodName(HttpServletRequest request) {
        //CODE BLOCK
    }
}

问题答案:

如果您正在使用Maven,请添加依赖项

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

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>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

将以下规则添加到 WEB-INF / urlrewrite.xml

<urlrewrite>
    <rule>
       <from>^/demo/api.do?method=getUser&amp;uid=(.*)$</from>
       <to>/demo/api/user/$1</to>
    </rule>
</urlrewrite>