@Responsebody与@RequestBody

avatar 2017年08月27日10:09:56 0 2364 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此

一、预备知识:@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

  • 微信
  • 交流学习,资料分享
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0