spring3.2 带matrix变量的URL匹配问题 freemarker ;JSESSIONID
来源:互联网 发布:程序员必须英语好吗 编辑:程序博客网 时间:2024/06/13 22:28
spring3.2.3已经修复该bug
问题描述:
1、url可能是
http://localhost:9080/es-web/login
或一个以;开头的matrix变量
http://localhost:9080/es-web/login;JSESSIONID=a3595636-e414-4cff-bd37-a42edf53193d
2、控制器处理方法@RequestMapping匹配pattern写法
spring 3.1前,以下写法是没有问题的
- @RequestMapping(value = {"/login"}, method = RequestMethod.GET)
- public String loginForm() {
- return "front/login";
- }
自spring3.2引入@MatrixVariable来匹配如/category;domId=a这样模式,使用如上pattern匹配『/login;JSESSIONID=a3595636-e414-4cff-bd37-a42edf53193d』时就会报如下错误
at org.springframework.util.Assert.state(Assert.java:385)
at org.springframework.util.AntPathMatcher.extractUriTemplateVariables(AntPathMatcher.java:287)
at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleMatch(RequestMappingInfoHandlerMapping.java:102)
3、解决方案
我们可以使用正则表达式解决
- @RequestMapping(value = {"/{login:login;?.*}"}, method = RequestMethod.GET)
- public String loginForm() {
- return "front/login";
- }
有朋友可能觉得如下也是可以的
1、@RequestMapping(value = {"/login", "/login;JSESSIONID=*"})
实际是不行的,因为再选择最佳匹配模式时,使用如下代码:
- Set<String> patterns = info.getPatternsCondition().getPatterns();
- String bestPattern = patterns.isEmpty() ? lookupPath : patterns.iterator().next();
即第一个。所以此时即使配置了两个,也永远选择"/login" (不管顺序如何);如果此处采用fallback也能搞定的。
2、修改spring源码,匹配时把『;……』,即分号及后边的去掉(spring3.1就是这么实现的)。
综上,在不修改源码的情况下,最简单的就是使用正则表达式模式/{login:login;?.*}
@MatrixVariable使用请参考
http://jinnianshilongnian.iteye.com/blog/1830409
转:http://jinnianshilongnian.iteye.com/blog/1831408
- spring3.2 带matrix变量的URL匹配问题 freemarker ;JSESSIONID
- url中jsessionid引起的一个问题
- Spring3 url匹配规则
- 对于url出现jsessionid问题
- url中的jsessionid所引起的问题和解决
- 去掉url 后面的jsessionid
- 关于jsessionid的问题
- 解决URL中添加的jsessionid
- 去掉 URL 中讨厌的 jsessionid
- 去除URL中带有的jsessionid
- Spring3 传递URL参数中文乱码的问题
- shiro重定向时URL中的JSESSIONID问题
- 第2章 带通配符的字符串匹配问题
- 一个匹配URL的正则表达式例子(带详细解释)
- 带中文的url的乱码问题
- url中的jsessionid解释
- URL 重写jsessionid
- url中的jsessionid
- 【树上倍增算法模板】
- OpenCV基础篇之图片叠加
- 很经典的故事
- 黑马程序员------foundation字符串无序集合,字典
- 数组指针和指针数组,函数指针与返回指针的函数
- spring3.2 带matrix变量的URL匹配问题 freemarker ;JSESSIONID
- OpenCV基础篇之使用CMake管理工程
- 三大框架整合后Struts2返回Json数据会出现的一些错误以及解决办法
- 什么叫高内聚低耦合?
- CentOS上编译安装OpenCV-2.3.1与ffmpeg-2.1.2
- Unix/Linux编程之size_t、ssize_t
- 单链表实现一个栈
- OpenCV基础篇之读取显示图片
- 单链表若干操作实现