转自:
下文笔者讲述Spring MVC中常用的注解简介说明,如下所示
@Controller注解
@Controller注解: 用于向Spring容器表述这是一个前端交互组件,当然此组件还需结合@Getmapping @PostMapping等注解一起使用
例:
@Controller public class UserController { }
@RequestMapping
此注解用于将url映射到整个处理类或特定的处理请求的方法 可以只用通配符 当我们不指定方法类型时,则可用接收GET/POST 当我们使用@GetMapping 或 @PostMapping 可分别用于接收Get和Post请求
@Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping(/user/*) public void sayHello(){ //请求为 /user/hello/* 都会进入这个方法! //例如:/user/hello/8888 /user/hello/testttt //可以通过get/post 请求 } @RequestMapping(value="/test",method=RequestMethod.GET) public void sayTest(){ //只能通过get请求 } }
@RequestParam注解功能
@RequestParam 将请求的参数绑定到方法中的参数上 有required参数 默认情况下 required=true 也就是改参数必须要传
例:
@RequestMapping("/user") public String sayUser( @RequestParam(value = "name", required = false) String name, @RequestParam(value = "age", required = true) String age) { //age参数必须传 ,name可传可不传 ... }
@PathVariable注解用于修饰方法参数 此注解会将修饰的方法参数变为可供使用的uri变量(可用于动态绑定)
例:
@RequestMapping(value="/user/{userid}",method=RequestMethod.GET) public String findUserInfo(@PathVariable String userid, Model mode) { //使用@PathVariable注解绑定 {userid} 到String userid }
注意事项: @PathVariable中的参数可以是任意的简单类型 如int, long, Date等等 Spring会自动将其转换成合适的类型或者抛出 TypeMismatchException异常 @PathVariable支持使用正则表达式
@RequestBody注解的功能: 其功能将方法参数绑定到HTTP请求Body上
例:
@RequestMapping(value = "/userInfo", method = RequestMethod.PUT) public void handle(@RequestBody String body,@RequestBody User user){ //可以绑定自定义的对象类型 }
@ResponseBody注解的功能
@ResponseBody注解的功能: 将返回内容直接输出到Http response body中 @ResponseBody在输出JSON格式的数据时,常用此注解
例:
@RequestMapping(value = "/bodyTest", method =RequestMethod.POST) @ResponseBody public String helloWorld() { return "Hello java265.com";//返回String类型 }
@RestController
RestController控制器实现了REST的API 用于返回JSON,xml,或其他自定义类型内容 RestController注解包含@RequestMapping与@ResponseBody
@ModelAttribute
@ModelAttribute注解的功能用于方法或方法参数上 当它用于方法上时,则为方法添加一个或多个模型属性(model attributes) 注意事项: 1.@ModelAttribute方法会在@RequestMapping方法调用之前而调用 2.该方法支持与@RequestMapping一样的参数类型,但并不能直接映射成请求。控制器中的。