@Responsebody与@RequestBody

一、预备知识:@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。 用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
  1. @RequestMapping(value = "/aaa")//类级别,可以没有
  2. public class myController {
  3.     @RequestMapping(value = "/bbb")//方法级别,必须有
  4.     public String getMyName() {
  5.         return "myReturn";
  6.     }
  7. }
对应的action就是:<form action="aaa/bbb"> 返回页面就是myReturn.jsp  

二、@Responsebody与@RequestBody

@Responsebody 表示该方法的返回结果直接写入 HTTP response body 中 一般在异步获取数据时使用,在使用 @RequestMapping 后,返回值通常解析为跳转路径, 加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取json数据,加上 @Responsebody 后,会直接返回json数据。 @RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。
  1. function login() {//页面异步请求
  2.     var mydata = '{"name":"' + $('#name').val() + '","id":"'
  3.             + $('#id').val() + '","status":"' + $('#status').val() + '"}';
  4.     $.ajax({
  5.         type : 'POST',
  6.         contentType : 'application/json',
  7.         url : "${pageContext.request.contextPath}/person/login",
  8.         processData : false,
  9.         dataType : 'json',
  10.         data : mydata,
  11.         success : function(data) {
  12.             alert("id: " + data.id + "\nname: " + data.name + "\nstatus: "
  13.                     + data.status);
  14.         },
  15.         error : function() {
  16.             alert('出错了!');
  17.         }
  18.     });
  19. };
 
  1. @RequestMapping(value = "person/login")
  2. @ResponseBody
  3. public Person login(@RequestBody Person person) {//将请求中的mydata写入Person对象中
  4.    return person;//不会被解析为跳转路径,而是直接写入HTTP response body中
  5. }
 

三、扩展:@PathVariable获取请求路径变量

  1. function profile() {
  2.     var url = "${pageContext.request.contextPath}/person/profile/";
  3.     var query = $('#id').val() + '/' + $('#name').val() + '/'
  4.             + $('#status').val();
  5.     url += query;
  6.     $.get(url, function(data) {
  7.         alert("id: " + data.id + "\nname: " + data.name + "\nstatus: "
  8.                 + data.status);
  9.     });
  10. }
 
  1. @RequestMapping(value = "person/profile/{id}/{name}/{status}")
  2. @ResponseBody
  3. public Person porfile(@PathVariable int id,@PathVariable String name,@PathVariable boolean status) {
  4.     return new Person(id, name, status);
  5. }
  6. //@RequestMapping(value = "/person/profile/{id}/{name}/{status}")中的{id}/{name}/{status}与@PathVariable int id, @PathVariable String name,@PathVariable boolean status一一对应,按名匹配。
    原文地址:http://www.cnblogs.com/guodefu909/p/4216327.html 本文地址:https://liuyanzhao.com/6086.html  

发表评论

目前评论:1