@ResponseBody注解使用简介

@ResponseBody注解使用简介1、@ResponseBody注解简介:@ResponseBody注解:主要做两件事:1、将返回值转换成JSON,如果返回值是String或者其他基本数据类型则不满足key-value形式,不能转换成json类型,则返回字符串2、设置响应头为application/json;charset=utf-8;返回值为字符串,则不能转换成json格式的则响应头设置为text/html,为防止中文乱码,因此需要使用@RequestMapping(,produces=“text/html;ch

大家好,又见面了,我是你们的朋友全栈君。

1、@ResponseBody注解简介:

  • @ResponseBody注解:
    • 主要做两件事:1、将返回值转换成JSON,如果返回值是String或者其他基本数据类型则不满足key-value形式,不能转换成json类型,则返回字符串

    • 2、设置响应头为application/json;charset=utf-8;返回值为字符串,则不能转换成json格式的则响应头设置为text/html,

    • 为防止中文乱码,因此需要使用@RequestMapping(,produces = “text/html;charset=utf-8”)设置响应头编码方式为utf-8

    • 如果方法只是用注解@RequestMapping()注解,则只要有返回值,无论返回值是什么,都会执行跳转操作;返回值设置成void则不执行跳转。

    • 在使用@RequestMapping()注解的前提下,使用@ResponseBody()注解,则有返回值会使用@ResponseBody()注解进行转换并返回前台页面,不会执行跳转操作。

    • 使用注解@RequestMapping()需要导入(json相关)包:jackson-annotations-xxx.jar、jackson-core-xxx.jar、jackson-databind-xxx.jar

    • 还要注意spring版本和json包版本对应,此处使用spring-4.1.6和jackson-2.4.0版本

2、引入的包:
在这里插入图片描述
3、sprigMVC环境搭建在上一篇博客《Spring MVC请求参数传值、重定向(redirect)与转发(forward)》
介绍。

4、@ResponseBody在Controller类中的使用
4.1、返回值会转成json数据

@RequestMapping("Demo11")
    @ResponseBody
    public People Demo11(People peo){ 
   
        System.out.println("这是Demo11!!!!"+peo.getName());
        People p = new People();
        p.setAge(peo.getAge());
        p.setName(peo.getName());
        System.out.println("@@@@@@@@@@@@22 -- "+p.toString());
        return p;
    }

返回结果(在页面中展示):
在这里插入图片描述
4.2、返回值为中文字符串,需要设置字符编码:
返回值为字符串的情况:返回值为字符串,则不能转换成json格式的,返回的响应头 (conten-type) 为text/html,
为防止中文乱码,因此需要使用@RequestMapping(,produces = “text/html;charset=utf-8”)设置响应头编码方式为utf-8

实例代码:

@RequestMapping(value = "Demo12",produces = "text/html;charset=utf-8")
    @ResponseBody
    public String Demo12(People peo){ 
   
        return peo.getName();
    }

返回值显示结果:
在这里插入图片描述
5、前端jsp页面:
demo.jsp:

<%@page contentType="text/html; utf-8" pageEncoding="UTF-8" language="java" %>
<html>
<body>
<h2>Hello World!</h2>
<hr>

<form action="Demo12" method="post">
    <table>
        <tr>
            <td>用户姓名:</td>
            <td><input type="text" name="name"/></td>
        </tr>
        <tr>
            <td>年龄:</td>
            <td>
                <input type="number" name="age"/>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="提交"/>
                <input type="reset" value="重置"/>
            </td>
        </tr>
    </table>
</form>
</body>
</html>

6、使用@ResponseBody特别注意的是要引入的json相关的包
在这里插入图片描述

要注意jackson包的版本要与Spring包的版本相匹配,不然会报错:

[org.springframework.context.support.ClassPathXmlApplicationContext]Exception encountered during context initialization – cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonMerge

此处使用的版本是Spring-4.1.6-xxx.jar 和 jackson-2.4.0-xxx.jar版本。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144989.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 经典sql基本语句大全

    经典sql基本语句大全SQL分类:  DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)   DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)   DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)  首先,简要介绍基础语句:  1、说明:创建数据库CREATEDATABASEdatabase

    2022年6月3日
  • 51单片机LCD1602程序详解[通俗易懂]

    51单片机LCD1602程序详解[通俗易懂]LCD1602工业字符型液晶。1602是指LCD显示的内容为16X2,即可以显示两行,每行16个字符.特殊接口说明RS:寄存器选择输入端RS=1:指向数据寄存器RS=0:指向指令寄存器RW:读写控制输入端RW=0:写操作RW=1:读操作E:使能信号输入端读操作时,高电平有效;写操作时,下降沿有效;程序编写:#include#inc

    2022年7月16日
  • html导航栏可以展开的下拉菜单,html导航栏下拉菜单如何制作[通俗易懂]

    html导航栏可以展开的下拉菜单,html导航栏下拉菜单如何制作[通俗易懂]html导航栏下拉菜单如何制作发布时间:2020-09-2615:29:13来源:亿速云阅读:88作者:小新小编给大家分享一下html导航栏下拉菜单如何制作,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!我们要说的是html导航栏下拉菜单的制作,先看一个完整的实例代码:.dropdown{position:relative;display:inline-block;}.drop…

    2022年5月28日
  • node读取文件操作

    node读取文件操作导言:nodejs中所有与文件相关的操作都在fs模块中,而读写操作又是我们会经常用到的操作,nodejs的fs模块针对读操作为我们提供了readFile,read,createReadStream三个方法,针对写操作为我们提供了writeFile,write,createWriteStream三个方法,下面分析一下它们的区别:一、readFile和writeFile1、readFile…

    2022年5月29日
  • 基础篇:Linux 常用命令总结「建议收藏」

    基础篇:Linux 常用命令总结「建议收藏」熬夜爆肝Linux集合,还不收藏?

    2022年5月28日
  • C++学习——四种字符串与数据连接的方法

    C++学习——四种字符串与数据连接的方法方法调用很简单,sprintf itoa函数在我的其他博客也有详解,请翻阅查看,话不多说,直接撸代码:#include <iostream>#include <string>#include <cstdlib>#include <sstream>#include <cstring> using namespace std;…

    2022年8月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号