我希望匹配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) {
}
但是这给了我一个错误说"无效的转义序列"。知道我怎么能做到这一点吗?
答案 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) {
}