详解Spring MVC 4常用的那些注解

Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解。到目前为止,Spring的版本

<?xmlversion=”1.0″encoding=”UTF-8″?><beansxmlns=”http://www.springframework.org/schema/beans”xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xmlns:p=”http://www.springframework.org/schema/p”xmlns:context=”http://www.springframework.org/schema/context”xsi:schemaLocation=””><context:component-scanbase-package=”org.springframework.samples.petclinic.web”/><!–…–></beans>

2. @RequestMapping

我们可以 @RequestMapping 注解将类似 “/favsoft”这样的URL映射到整个类或特定的处理方法上。一般来说,类级别的注解映射特定的请求路径到表单控制器上,而方法级别的注解只是映射为一个特定的HTTP方法请求(“GET”,“POST”等)或HTTP请求参数。

@Controller@RequestMapping(“/favsoft”)publicclassAnnotationController{@RequestMapping(method=RequestMethod.GET)publicStringget(){return””;}@RequestMapping(value=”/getName”,method=RequestMethod.GET)publicStringgetName(StringuserName){returnuserName;}@RequestMapping(value=”/{day}”,method=RequestMethod.GET)publicStringgetDay(Dateday){DateFormatdf=newSimpleDateFormat(“yyyy-MM-dd”);returndf.format(day);}@RequestMapping(value=”/addUser”,method=RequestMethod.GET)publicStringaddFavUser(@ValidatedFavUserfavUser,BindingResultresult){if(result.hasErrors()){return”favUser”;}//favUserService.addFavUser(favUser);return”redirect:/favlist”;}@RequestMapping(“/test”)@ResponseBodypublicStringtest(){return”aa”;}}

@RequestMapping 既可以作用在类级别,,也可以作用在方法级别。当它定义在类级别时,标明该控制器处理所有的请求都被映射到 /favsoft 路径下。@RequestMapping中可以使用 method 属性标记其所接受的方法类型,如果不指定方法类型的话,可以使用 HTTP GET/POST 方法请求数据,但是一旦指定方法类型,就只能使用该类型获取数据。

@RequestMapping 可以使用 @Validated与BindingResult联合验证输入的参数,在验证通过和失败的情况下,分别返回不同的视图。

@RequestMapping支持使用URI模板访问URL。URI模板像是URL模样的字符串,由一个或多个变量名字组成,当这些变量有值的时候,它就变成了URI。

3. @PathVariable

在Spring MVC中,可以使用 @PathVariable 注解方法参数并将其绑定到URI模板变量的值上。如下代码所示:

StringfindOwner(String,Modelmodel){FavUserfavUser=favUserService.findFavUser();model.addAttribute(;}

URI模板 “favusers/{favUserId}”指定变量的名字 favUserId ,当控制器处理这个请求的时候, favUserId的值会被设定到URI中。比如,当有一个像“favusers/favccxx”这样的请求时,favUserId的值就是 favccxx。

@PathVariable 可以有多个注解,像下面这样:

@RequestMapping(value=”/owners/{ownerId}/pets/{petId}”,method=RequestMethod.GET)publicStringfindPet(@PathVariableStringownerId,@PathVariableStringpetId,Modelmodel){Ownerowner=ownerService.findOwner(ownerId);Petpet=owner.getPet(petId);model.addAttribute(“pet”,pet);return”displayPet”;}

@PathVariable中的参数可以是任意的简单类型,如int, long, Date等等。Spring会自动将其转换成合适的类型或者抛出 TypeMismatchException异常。当然,我们也可以注册支持额外的数据类型。

如果@PathVariable使用Map<String, String>类型的参数时, Map会填充到所有的URI模板变量中。

@PathVariable支持使用正则表达式,这就决定了它的超强大属性,它能在路径模板中使用占位符,可以设定特定的前缀匹配,后缀匹配等自定义格式。

@PathVariable还支持矩阵变量,因为现实场景中用的不多,这就不详细介绍了,有需要的童鞋请查看官网的文档。

4.@RequestParam

@RequestParam将请求的参数绑定到方法中的参数上,如下面的代码所示。其实,即使不配置该参数,注解也会默认使用该参数。如果想自定义指定参数的话,如果将@RequestParam的 required 属性设置为false(如@RequestParam(value=”id”,required=false))。

5.@RequestBody

@RequestBody是指方法参数应该被绑定到HTTP请求Body上。

相信人生有挫折没有失败,相信生命的质量来自决不妥协的信念。

详解Spring MVC 4常用的那些注解

相关文章:

你感兴趣的文章:

标签云: