@responseBody注解的使用
1、
@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML
数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
2、
@RequestMapping("/login")
@ResponseBody
public User login(User user){
return user;
}
User字段:userName pwd
那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'
效果等同于如下代码:
@RequestMapping("/login")
public void login(User user, HttpServletResponse response){
response.getWriter.write(JSONObject.fromObject(user).toString());
}
3
- @RequestMapping("/home")
- public class IndexController {
- @RequestMapping(value = {
- "",
- "/page",
- "page*",
- "view/*,**/msg"
- })
- String indexMultipleMapping() {
- return "Hello from index multiple mapping.";
- }
- }
- 如你在这段代码中所看到的,@RequestMapping 支持统配符以及ANT风格的路径。前面这段代码中,如下的这些 URL 都会由 indexMultipleMapping() 来处理:
- localhost:8080/home
- localhost:8080/home/
- localhost:8080/home/page
- localhost:8080/home/pageabc
- localhost:8080/home/view/
- localhost:8080/home/view/view
- 带有 @RequestParam 的 @RequestMapping
@RequestParam 注解配合 @RequestMapping 一起使用,可以将请求的参数同处理方法的参数绑定在一起。
@RequestParam 注解使用的时候可以有一个值,也可以没有值。这个值指定了需要被映射到处理方法参数的请求参数, 代码如下所示: - @RestController
- @RequestMapping("/home")
- public class IndexController {
- @RequestMapping(value = "/id")
- String getIdByValue(@RequestParam("id") String personId) {
- System.out.println("ID is " + personId);
- return "Get ID from query string of URL with value element";
- }
- @RequestMapping(value = "/personId")
- String getId(@RequestParam String personId) {
- System.out.println("ID is " + personId);
- return "Get ID from query string of URL without value element";
- }
- }
在代码的第26行,id 这个请求参数被映射到了 thegetIdByValue() 这个处理方法的参数 personId 上。
如果请求参数和处理方法参数的名称一样的话,@RequestParam 注解的 value 这个参数就可省掉了, 如代码的第31行所示。