SpringMVC教程:URL占位符{xxx}与@PathVariable绑定

需积分: 13 2 下载量 82 浏览量 更新于2024-08-18 收藏 2.62MB PPT 举报
本文档是关于Java学习教程,特别是针对Spring MVC框架的使用,强调了如何通过URL限定来绑定参数值。文中展示了如何利用`@PathVariable`注解从URL路径中提取动态部分,并将其绑定到控制器方法的参数上。同时,提到了Spring MVC的框架结构及其核心组件如DispatcherServlet、HandlerMapping和ViewResolver。文档还涵盖了Spring MVC 3.0的新特性,包括RESTful URL支持、更多注解驱动的功能以及与数据转换、格式化、验证框架的集成。 在Spring MVC中,我们可以通过在URL模板中使用花括号`{}`来定义动态段,这些动态段可以在控制器方法中通过`@PathVariable`注解进行捕获。例如,`@PathVariable("userId")`将URL路径中的`userId`部分绑定到方法参数上,如在示例代码所示: ```java @RequestMapping("/{userId}") public ModelAndView showDetail(@PathVariable("userId") String userId){ ModelAndView mav = new ModelAndView(); mav.setViewName("user/showDetail"); mav.addObject("user", userService.getUserById(userId)); return mav; } ``` 这里,`/{userId}`定义了一个名为`userId`的动态段,当用户访问匹配此模式的URL时,`showDetail`方法会被调用,`userId`参数将被填充为URL路径中的相应值。 另外,文档还展示了另一个例子,说明如何在一个控制器类中嵌套使用`@RequestMapping`注解来处理更具体的URL路径: ```java @Controller @RequestMapping("/owners/{ownerId}") public class RelativePathUriTemplateController { @RequestMapping("/pets/{petId}") public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { ... } } ``` 在这个例子中,`/owners/{ownerId}`是父级URL模板,`/pets/{petId}`是子级模板。`findPet`方法会处理`/owners/ownerId/pets/petId`这样的URL,同时捕获两个`@PathVariable`参数。 Spring MVC框架的结构包括DispatcherServlet作为前端控制器,它负责调度请求到合适的处理器。HandlerMapping用于映射请求到控制器方法,HandlerAdapter则适配不同的处理器接口,使得DispatcherServlet可以调用它们。ModelAndView对象用于封装模型数据和视图信息,而ViewResolver则负责解析逻辑视图名到实际视图。 Spring MVC 3.0的新特性增强了框架的功能,如支持RESTful风格的URL,使得接口更加简洁和符合Web标准。添加了更多的注解使得代码更加简洁,无需依赖XML配置。引入了HttpMessageConverter处理HTTP输入输出,使得数据转换更为便捷。框架还与数据转换、格式化和验证框架紧密集成,提供了更好的数据处理能力。此外,对静态资源的处理也得到了优化,并且控制器方法的签名变得更加灵活,可以完全脱离Servlet API。 这个Java学习教程深入浅出地介绍了Spring MVC框架的关键概念和实践,对于理解如何通过URL处理动态参数以及掌握Spring MVC的核心工作原理非常有帮助。