`
2014马年
  • 浏览: 121980 次
  • 性别: Icon_minigender_1
  • 来自: 晋中
社区版块
存档分类
最新评论

springmvc 匹配'/'的问题

    博客分类:
  • java
阅读更多

 

1.问题:匹配上url中的反斜杠"/"(%2f)

在springmvc 里,我要匹配:

http://yourdomain.com/start/xx/xx/xx/end

 

@RequestMapping("/{start}/**/{end}")
public String vv(@PathVariable("start") String start, @PathVariable("end") String end){

}

 然而,我需要获得url中间的数据:

@RequestMapping("/{start}/{mid:.*}/{end}")

但是却无法捕获。

也就是说,变量中不能带有"/"的

 

2.我的解决方案

1.'/'有限

如:

/123/456/789/1011/1213

/123/456/789/1011

/123/456/789

@RequestMapping(value={"/{start}/{mid1}/{mid2}/{mid3}/{end}",
"/{start}/{mid1.*}{mid2}/{mid3}/{end}",
"/{start}/{mid1.*}{mid2}{mid3}/{end}"}
)
public String vv(@PathVariable("start") String start, 
@PathVariable("mid1") String mid1, 
@PathVariable("mid2") String mid2, 
@PathVariable("mid3") String mid3, 
@PathVariable("end") String end){
    if(StringUtils.isNotBlank(mid2){
        mid1 +="/"+mid2;
    }
    if(StringUtils.isNotBlank(mid3){
        mid1 +="/"+mid3;
    }
    //可以使用mid1了
    ......
}

{mid1:.*} 是最大匹配

url数组里的变量必须相等 

 

2."/" 数量可能非常多

如:/search/123/4/5/6/7/4/5/6/5/4/4/5/5/67/ok

只能使用 @RequestMapping("/search/**/{end}")  来拦截住请求

然后代码里通过:

request.getServletPath()

然后通过split("/")来拆分后取对应的内容拼接。

 

3.其它人的解决方案

http://stackoverflow.com/questions/2334787/how-to-match-a-spring-requestmapping-having-a-pathvariable-containing?rq=1

 

http://stackoverflow.com/questions/3686808/spring-3-requestmapping-get-path-value

 

http://stackoverflow.com/questions/7841770/optional-path-variables-in-spring-mvc-requestmapping-uritemplate

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    0325_SpringMVC.html

    * 4)、来看请求地址和@RequestMapping标注的哪个匹配,来找到到底使用那个类的哪个方法来处理 * 5)、前端控制器找到了目标处理器类和目标方法,直接利用返回执行目标方法; * 6)、方法执行完成以后会有一个...

    SpringMVC 入门级几个小demo

    在上面的例子中,`/hello`是URL路径,`sayHello`方法会处理匹配这个路径的请求。`ModelAndView`是一个包含模型数据和视图名的对象,用于将数据传递到视图层。 `ModelAndView`是SpringMVC中用于将处理结果(模型数据...

    SpringMVC配置.docx

    更新 JSP 页面的登录跳转地址,确保符合 DispatcherServlet 的配置,例如,如果 URL 匹配规则是 `.do`,则登录按钮的链接应为 `login.do`。 通过以上步骤,你已经成功配置了一个基本的 SpringMVC 应用。当然,...

    SpringMVC学习编程代码

    处理器映射器如`DefaultHandlerMapping`,它负责找到与请求URL匹配的Controller。处理器适配器如`RequestMappingHandlerAdapter`,它负责调用Controller的方法来处理请求。 在Controller层,开发者通常会编写一系列...

    SpringMVC 写操作日志

    在IT行业中,SpringMVC和AOP(面向切面编程)是两个非常重要的概念,尤其在企业级Web应用开发中广泛...在实际项目中,这样的日志记录方案能够帮助我们追踪和分析系统的运行状态,对问题排查和性能优化具有重要作用。

    SpringMVC完整使用教程

    例如,`@RequestMapping("/hello")` 将匹配所有到 "/hello" 的请求。 ### 第 3 章 映射请求参数 & 请求参数 处理请求参数有多种方式。你可以直接在方法签名中使用参数,如 `String name` 来获取请求参数;或者使用 ...

    SpringMVC完整demo.zip

    通常,我们可以创建一个与请求参数匹配的Java对象,然后使用`@ModelAttribute`注解将请求参数绑定到这个对象上: ```java @PostMapping("/submitData") public String submit(@ModelAttribute("formData") ...

    SpringMVC 学习总结

    SpringMVC 是一款基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)架构的应用程序。SpringMVC 的核心是 DispatcherServlet,它作为前端控制器,负责接收请求...

    手写 springmvc

    【标题】:“手写SpringMVC” 在Java Web开发领域,SpringMVC是Spring框架的一个重要组成部分,它是一个用于构建高效、灵活的...在实际项目中,这种深入理解有助于优化性能、提高代码质量,并解决可能出现的复杂问题。

    springMvc demo

    4. **调用控制器**:找到匹配的控制器方法后,`DispatcherServlet` 将执行这个方法,处理业务逻辑。 5. **数据绑定与模型构建**:如果需要,控制器可以将业务对象绑定到模型,并将模型对象放入 `Model` 或 `...

    springMVC学习

    * 可定制的绑定和验证:将类型不匹配作为应用级的验证错误,这可以保存错误的值,以及本地化的日期和数字绑定等 * 可定制的处理器映射和视图解析:灵活的模型可以根据名字/值映射,处理器映射和视图解析使应用策略从...

    SpringMVC是实现登陆

    在IT行业中,SpringMVC是Spring框架的一个重要模块,它被广泛用于构建Web应用程序,尤其在企业级开发中占据核心地位。本篇文章将深入探讨如何使用SpringMVC来实现一个简单的登录功能,以及在此过程中涉及的关键知识...

    springmvc+ssm

    对于POJO类型的参数,SpringMVC会尝试将请求中的参数与POJO的属性进行匹配绑定。 ##### 自定义参数绑定 对于日期等复杂类型,SpringMVC无法直接完成绑定,需要自定义参数绑定组件。可以通过`...

    BEWINDOWEB#bewindoweb.github.io#00054-通配符的匹配很全面,但无法找到元素contextan

    通配符的匹配很全面,但无法找到元素contextannotation-config【系统环境】windows 10【操作内容】springMVC 4/ Inte

    SpringMVC四种映射方式实例代码

    在Java Web开发中,SpringMVC是一个非常流行的框架,它为构建基于模型-视图-控制器(MVC)模式的应用程序提供了强大的支持。本实例代码着重讲解了SpringMVC中的四种映射方式以及拦截器的实现,这对于理解和掌握...

    SpringMVC 4.0

    7. **RESTful风格的支持**:SpringMVC 4.0增强了对HTTP方法(GET、POST、PUT、DELETE等)的支持,方便构建RESTful Web服务,通过@RequestMapping注解的params、headers属性可以精确匹配HTTP请求的参数和头信息。...

    注解的springMVC介绍

    `DispatcherServlet`启动时,默认会在`/WEB-INF/`目录下寻找一个与`servlet-name`相匹配的配置文件(例如:`blog-servlet.xml`)。在这个配置文件中,我们可以定义需要使用的Bean以及它们的配置。这些配置将用于初始...

    自定义的springMVC

    2. **HandlerMapping**:处理器映射器,负责找到与请求匹配的处理器,这通常是一个Controller类的方法。 3. **HandlerAdapter**:处理器适配器,用来调用处理器(Controller)的方法,因为它不知道具体的处理器是...

    SpringMVC纯注解配置

    可以放在类级别或方法级别,用于匹配URL模式。 3. **@GetMapping, @PostMapping, @PutMapping, @DeleteMapping**:这些是Spring 4.0引入的注解,分别对应HTTP的GET、POST、PUT、DELETE方法,简化了@RequestMapping...

Global site tag (gtag.js) - Google Analytics