`

@Responsebody与@RequestBody

 
阅读更多
from http://www.cnblogs.com/guodefu909/p/4216327.html


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

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

扩展:@PathVariable获取请求路径变量
function profile() {
    var url = "${pageContext.request.contextPath}/person/profile/";
    var query = $('#id').val() + '/' + $('#name').val() + '/'
            + $('#status').val();
    url += query;
    $.get(url, function(data) {
        alert("id: " + data.id + "\nname: " + data.name + "\nstatus: "
                + data.status);
    });
}
    @RequestMapping(value = "person/profile/{id}/{name}/{status}")
    @ResponseBody
    public Person porfile(@PathVariable int id,@PathVariable String name,@PathVariable boolean status) {
        return new Person(id, name, status);
    }
  //@RequestMapping(value = "/person/profile/{id}/{name}/{status}")中的{id}/{name}/{status}与@PathVariable int id, @PathVariable String name,@PathVariable boolean status一一对应,按名匹配。
分享到:
评论

相关推荐

    Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable

    例如,你可以结合使用`@RequestBody`和`@ResponseBody`来创建一个接收JSON数据并返回JSON响应的方法,同时利用`@PathVariable`处理URL中的动态部分,实现灵活的路由控制。 在实际开发中,我们还需要了解如何配置...

    @ResponseBody 和 @RequestBody 注解的区别

    @ResponseBody 和 @RequestBody 注解的区别 在 Spring 框架中,@ResponseBody 和 @RequestBody 是两个常用的注解,它们都用于处理 HTTP 请求和响应,但是它们的作用和使用场景却有所不同。 一、@ResponseBody 注解...

    彻底根治Spring @ResponseBody JavaScript HTML特殊字符

    在开发Web应用时,我们经常会遇到一个问题:当使用Spring MVC的`@ResponseBody`注解将后端处理结果直接转化为HTTP响应体时,如果这个结果中包含HTML特殊字符,如尖角号、引号、按位与符号等,浏览器可能会误解析,...

    SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(下)

    在Spring MVC框架中,`@RequestBody` 和 `@ResponseBody` 是两个非常重要的注解,它们在处理HTTP请求和响应时起到了关键作用。本篇文章将详细解释这两个注解的工作原理、使用场景以及如何实现Java对象与XML/JSON数据...

    SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)

    总结来说,`@RequestBody`和`@ResponseBody`是Spring MVC中处理HTTP请求和响应的关键工具,它们使得Java对象与HTTP数据之间能够无缝地转换,大大提升了开发效率和代码的可读性。理解和掌握这两个注解的使用,对构建...

    浅析@ReponseBody和@RequestBody注解

    浅析@ReponseBody和@RequestBody注解 @ReponseBody和@RequestBody是Spring MVC框架中两个重要的注解,分别用于处理HTTP请求和响应体。下面我们将详细分析这两个注解的作用和Spring MVC内部是如何对他们进行解析的。...

    springMvc注解之@ResponseBody和@RequestBody详解

    Spring MVC注解之@ResponseBody和@RequestBody详解 在Spring MVC框架中,@ResponseBody和@RequestBody是两个非常重要的注解,它们分别用于处理HTTP请求响应体和请求体的序列化和反序列化。下面,我们将详细介绍这两...

    springMvc注解之 ResponseBody和 RequestBody.docx

    当我们在控制器方法的参数前加上`@RequestBody`时,Spring MVC会尝试将请求体中的内容(通常是以JSON格式)转换为与参数类型匹配的对象。例如,在示例中,如果前端发送了一个嵌套的JSON对象,`@RequestBody Map, ...

    最新版本 jackson 2.8.2 jar与spring 4.x @ResponseBody配合使用

    3. **Spring MVC与@RequestBody和@ResponseBody**: - **@RequestBody**:此注解用于控制器方法的参数,表示请求体中的内容应被转换为该参数的对象。Spring会使用合适的HttpMessageConverter(如Jackson的`...

    Spring MVC – Easy REST-Based JSON Services with @ResponseBody

    `@RequestBody`注解也可以用于处理HTTP请求的主体内容,将请求中的JSON数据转换为Java对象。 标签"源码"意味着文章可能深入讲解了Spring MVC框架的内部实现,或者提供了自定义的代码示例。"工具"可能指的是使用了...

    Springmvc 4.x利用@ResponseBody返回Json数据的方法

    @ResponseBody注解的功能与@RequestMapping中的consumes属性和@RequestBody注解刚好相反。@RequestBody注解用于方法的参数,表示HTTP请求体中的内容需要被转换成相应的Java对象。而@ResponseBody则用于方法的返回值...

    SpringMVC中解决@ResponseBody注解返回中文乱码问题

    除了上述方法,还可以在`&lt;mvc:annotation-driven&gt;`元素内部使用`&lt;mvc:message-converters&gt;`配置自定义的`HttpMessageConverter`,效果与上述配置相同: ```xml &lt;value&gt;text/plain;charset=utf-8 ...

    springMVC的 RequestBody和 ResponseBody和RequestParam.docx

    3. **JSON 字符串与对象区别**:需要注意的是,`@RequestBody` 接收的是前端传过来的 JSON 字符串,而不是直接的对象实例。这意味着如果你想要使用一个 Java 对象来表示接收到的数据,你需要手动将 JSON 字符串转换...

    @Response和@Request

    我们将详细探讨`@ResponseBody`和`@RequestBody`。 `@RequestBody`注解用于将HTTP请求正文中的数据转换为Java对象。当控制器方法的参数带有`@RequestBody`时,Spring会查找合适的`HttpMessageConverter`来解析请求...

    Spring MVC打印@RequestBody、@Response日志的方法

    Spring MVC打印@RequestBody、@Response日志的方法 Spring MVC框架提供了强大的日志记录功能,对于日志记录的实现,Spring MVC提供了多种方式,本文将主要介绍如何使用RequestBodyAdvisor和ResponseBodyAdvisor来...

    快速解决SpringMVC @RequestBody 用map接收请求参数的问题

    快速解决SpringMVC @RequestBody 用map接收请求参数的问题 在 SpringMVC 中,使用 @RequestBody 注解可以将请求体中的数据转换为 Java 对象,但是在使用 map 接收请求参数时,经常会遇到一些问题。本文将讨论如何...

    SpringMVC环境搭建

    本教程将指导你如何搭建一个非Maven的SpringMVC项目,主要关注@RequestBody和@ResponseBody的配置。 首先,让我们了解SpringMVC的基本结构。一个标准的SpringMVC项目通常包含以下几个关键部分: 1. **src目录**:...

    springmvc实现json交互-requestBody和responseBody

    本文将深入探讨如何使用`@RequestBody`和`@ResponseBody`注解来实现JSON的处理。 首先,JSON作为一种轻量级的数据交换格式,其简单性和易于解析的特性使得它在接口调用和HTML页面中被广泛使用。例如,在Web服务接口...

    详解使用@RequestBody取POST方式的json字符串

    本文将深入探讨如何使用`@RequestBody`来接收POST方式的JSON字符串。 首先,`@RequestBody`是Spring MVC中的一个注解,它的作用是从HTTP请求的主体中获取数据,并尝试将其转换为指定类型的对象。在处理JSON数据时,...

Global site tag (gtag.js) - Google Analytics