@RequestMapping
springmvc用@RequestMapping来映射请求
例:
注解在方法上,相对于类上的路径。
@RequestMapping("/controller1") public String save1() { System.out.println("UserController..."); return "success.jsp"; }
此时访问http://localhost:8080/controller就能用save1()方法处理URL请求。会先在控制台打印"UserController..." 然后跳转到success.jsp
如果@RequestMapping注解在类上,则相对于Web根目录
例:
此时save1()能处理的URL访问路径是//localhost:8080/user/controller
@ResponseBody
@ResponseBody将java对象转化为json格式,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,也就是不会跳转页面,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。 可能不太理解。举个例子,
@RequestMapping("/controller5") @ResponseBody public User save5() throws JsonProcessingException { User u = new User(); u.setAge(18); u.setName("jy"); return u; }
此时访问http://localhost:8080/user/controller5 就会看到如下结果。
@RequestBody
主要用来接收前端传递给后端的json类型的数据(application/json
、application/xml
等类型的数据)。
例:
@RequestMapping("/controller8") @ResponseBody public void save8(@RequestBody List<User> list) throws JsonProcessingException { System.out.println(list); }
加了@RequestBody后可以直接收一个List类型的参数,没有加是不能直接接收的。
@RequestParam
将请求参数绑定到控制器的参数上
有三个参数
value:可以理解为请求参数的别名
defaultValue:在请求参数为空的时候赋值给请求参数
required:true时请求参数不能为空,不然报404. 为false时可以空,使其等于null。
例:
@RequestMapping("/controller9") @ResponseBody public void save9(@RequestParam(value = "n",defaultValue = "张哥") String name) throws JsonProcessingException { System.out.println(name); }
@PathVariable
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中
例:
@RequestMapping("/controller10/{name}") //restful风格 @ResponseBody public void save10(@PathVariable(value = "name") String name) { System.out.println(name); }
例:
访问 localhost:1010/user/controller10/zhang (zhang为占位符)
结果在控制台打印zhang
会持续更新spring,欢迎各位好兄弟关注!!!