Spring MVC获取包含点和斜杠的PathVariables

时间:2012-09-20 16:32:35

标签: spring-mvc

我希望匹配http://host/10.39284/LKJF283/23332/dd形式的网址(其中路径始终以10开头,其余的将是点,斜线,字母和数字的混合),然后将整个内容存储在包括10.进入PathVariable。

我以为我可以用这样的正则表达式做到这一点:

@RequestMapping(value="/{key:10\.+}", method=RequestMethod.GET)
    public String summary(@PathVariable String key, Model model) {
}

但是这给了我一个错误说"无效的转义序列"。知道我怎么能做到这一点吗?

1 个答案:

答案 0 :(得分:5)

这就是我的工作方式。据我所知,Spring无法处理URL中不是路径分隔符的斜杠。因此,我改为使用此处的网址重写过滤器:http://www.tuckey.org/urlrewrite/

我在我的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>^/(10\..*)$</from>
       <to>/keysummary?key=$1</to>
    </rule>
</urlrewrite>

并像我这样写了我的控制器

@RequestMapping(value="/keysummary", method=RequestMethod.GET)
public String DOISummary(@RequestParam("key") String key, Model model) {
}