Controller的使用
@RestController
用来处理http请求,Spring4之后新加的注解,原来返回json需要@Controller
配合@ResponseBody
实现,现在只需要一个@RestController
即可
@RequestMapping
配置URL映射,限定请求方法、请求参数、请求头
A. 在一个类的函数上面加上@RequestMapping(value = "/",method = RequestMethod.GET)
就是只能通过GET方式访问http://127.0.0.1:8088/
@RequestMapping(value = "/",method = RequestMethod.GET) public String index(){ return "OK"; }
B. 在一个类的函数上面加上@RequestMapping(value = "/"
就可以通过GET或者POST方式访问http://127.0.0.1:8088/index
@RequestMapping(value = "/index") public String index(){ return "OK"; }
C. 在一个类的上面加上@RequestMapping(value = "/index",method = RequestMethod.GET)
,要访问该类下面的函数,则URL链接中必须加上/index
,访问链接http://127.0.0.1:8088/index/index
@RestController @RequestMapping(value = "/index",method = RequestMethod.GET) public class IndexController { @RequestMapping(value = "/index",method = RequestMethod.GET) public String index(){ return "OK"; } }
@PathVariable
带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
通过@PathVariable
可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的{xxx}
占位符可以通过
@PathVariable("xxx")
绑定到操作方法的入参中。
@RequestMapping(value = "/{id}",method = RequestMethod.GET) public String index(@PathVariable(value = "id",required = false) Integer myId){ return "id:"+myId; }
a. 放置方法1
@RequestMapping(value = "/{id}",method = RequestMethod.GET)
访问URL链接为http://127.0.0.1:8088/index/123
时输出id:123
b. 放置方法2
@RequestMapping(value = "{id}/",method = RequestMethod.GET)
访问URL链接为http://127.0.0.1:8088/123/index
时输出id:123
@PathVariable(value = "id",required = false)
value:获取URL中参数的值(要与@RequestMapping(value = "/{id}")
中的id一致)
required: 是否必选项@RequestParam
绑定请求参数
@RequestParam(value = "id",required = false,defaultValue = "1")
value:获取URL中参数的值
required: 是否必选项
defaultValue: 默认的值
@RequestMapping(value = "/",method = RequestMethod.GET) public String index(@RequestParam(value = "id",required = false,defaultValue = "1") Integer myId){ return "id:"+myId; }
访问URL为http://127.0.0.1:8088/index/?id=12312
时输出内容为id:12312
访问URL为http://127.0.0.1:8088/index/
输出内容为id:1
,此时输出的为默认值@GetMapping
组合注解,
@GetMapping(value = "/index")
相当于@RequestMapping(value = "/index",method = RequestMethod.GET)
的简化版,同样的还有@PostMapping(value = "/index")
等