SpringMVC学习:URL参数绑定@PathVariable详解

需积分: 0 2 下载量 95 浏览量 更新于2024-08-13 收藏 1.44MB PPT 举报
"本文主要讲解了在SpringMVC框架中如何通过URL路径变量来绑定请求参数,并展示了如何发送Ajax请求以及配置自定义转换服务和处理异常。" 在SpringMVC中,`@PathVariable`注解用于从URL路径中获取参数。例如,在给出的代码片段中: ```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}`是一个路径变量模板,`@PathVariable("userId")`则用于将URL中的`userId`部分绑定到方法参数上。当一个HTTP请求访问如`/123`这样的URL时,`showDetail`方法会被调用,其中`userId`参数的值为`123`。 另一个例子是: ```java @Controller @RequestMapping("/owners/{ownerId}") public class RelativePathUriTemplateController { @RequestMapping("/pets/{petId}") public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { … } } ``` 在这个类中,`/{ownerId}`和`/{petId}`都是路径变量,分别对应于`findPet`方法的`ownerId`和`petId`参数。这表示`findPet`方法会处理如`/owners/1/pets/2`这样的请求,将`1`作为`ownerId`,`2`作为`petId`。 接下来,我们看到了JavaScript中的Ajax请求示例,利用XMLHttpRequest对象发送POST请求: ```javascript window.onload = function() { var xhr = new XMLHttpRequest(); xhr.open("post", "test2", true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.send("{\"name\":\"jzz\",\"id\":12}"); }; ``` 这段代码会在页面加载完成后,向`test2`接口发送一个包含JSON格式数据的POST请求。`Content-Type`头设置为`application/json`,表明发送的数据类型是JSON。 此外,还提到了SpringMVC中配置自定义转换服务和异常处理的部分: ```xml <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <list> <bean class="com.zaprk.converter.MyUserConverter"/> </list> </property> </bean> <mvc:annotation-driven conversion-service="conversionService"/> ``` 这部分配置了一个名为`conversionService`的bean,用于处理类型转换。`MyUserConverter`是自定义的转换器,可以将接收到的数据转换为特定的User对象。`mvc:annotation-driven`元素启用SpringMVC的注解驱动功能,并指定了自定义的转换服务。 最后,配置了异常处理器: ```xml <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.Exception">errorPage</prop> </props> </property> </bean> ``` 这里定义了一个`exceptionResolver` bean,使用`SimpleMappingExceptionResolver`处理异常。当发生`Exception`时,它会将请求映射到`errorPage`视图,这通常是一个错误处理页面。 总结来说,SpringMVC通过`@PathVariable`注解实现URL与方法参数的绑定,通过Ajax发送JSON数据,以及自定义转换服务和异常处理机制,提供了灵活且强大的Web应用开发能力。