@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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab 医学图像处理(matlab进行图像处理)

    对图像文件增加椒盐噪声,然后进行中值滤波Y=imread(‘D:\321.jpg’);%读入图像I=rgb2gray(Y);%转换成灰度图J=imnoise(I,‘salt&pepper’,0.02);%给图像添加椒盐噪声K=medfilt2(J);%对增加噪声后的图像进行中值滤波subplot(2,2,1);imshow(I);title(‘原图’);%显示图像,并…

    2022年4月18日
    50
  • 汇编指令和机器码的对应表pdf_机器码与汇编对应表

    汇编指令和机器码的对应表pdf_机器码与汇编对应表一、状态寄存器PSW(ProgramFlag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:1514131211109876543210   OFDFIFTFSFZF AF PF CF条件码:①OF(OverflowFlag)溢出标志。溢出时为1,否则置0。②SF(SignFlag)符号标志。结果为负时置1,否则置0.③ZF(ZeroFlag)零标志,运算结果为0时ZF位置1,否则…

    2022年8月30日
    0
  • 云时代如何保护数据

    云时代如何保护数据

    2021年8月9日
    49
  • 交换机划分vlan配置_同一交换机vlan互通

    交换机划分vlan配置_同一交换机vlan互通原标题:一步步详解华为交换机配置实例,一看就会实例一、配置交换机的vlan,使同vlan交换机互通在项目中,给网络项目划分vlan,这个是最常见的配置,基本上大部分项目都有的,那么如何来划分vlan呢?使同vlan的主机能够互相通信呢?我们来看下下面案例。如下图:LSW1与LSW2都是三层交换机,现在两台交换机分别连着两台pc。其中:LSW1的0/0/1端口连着pc1,0/0/2连着pc2,0/0…

    2022年9月19日
    0
  • TVS(瞬态抑制二极管)、Schottky(肖特基二极管)、Zener (齐纳二极管,也称稳压二极管)主要特点及区别和使用[通俗易懂]

    TVS(瞬态抑制二极管)、Schottky(肖特基二极管)、Zener (齐纳二极管,也称稳压二极管)主要特点及区别和使用[通俗易懂]1.简单介绍TVSTVS(TransientVoltageSuppressor)二极管,又称为瞬态抑制二极管,是普遍使用的一种新型高效电路保护器件,它具有极快的响应时间(亚纳秒级)和相当高的浪涌吸收能力。当它的两端经受瞬间的高能量冲击时,TVS能以极高的速度把两端间的阻抗值由高阻抗变为低阻抗,以吸收一个瞬间大电流,把它的两端电压箝制在一个预定的数值上,从而保护后面的电路元件不受瞬…

    2022年10月29日
    0
  • Web端即时聊天项目实现(基于WebSocket)

    Web端即时聊天项目实现(基于WebSocket)Web端即时聊天项目实现项目背景 其实这个项目算是我做过的花时间最长也投入心血最多的一个项目了,当时决定开始做这个的时候我几乎什么都不会,那时我个人的情况是:-JavaEE方面:会jsp+servlet,也简单使用过Struts,Spring仅仅只是听说过。-前端方面:html,css有一些基础,会使用Bootstrap前端工具开发集,js基本不了解。-数据库…

    2022年5月14日
    53

发表回复

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

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