处理器方法的返回值--返回对象Object

处理器方法也可以返回Object对象。这个Object可以是Integer,String,自定义对象, Map,List 等。但返回的对象不是作为逻辑视图出现的,而是作为直接在页面显示的数据出现的。返回对象,需要使用@ResponseBody注解,将转换后的JSON数据放入到响应体中。

实现步骤:
1.在pom.xml中加入处理json的工具库的依赖,springmvc默认使用的jackson:

由于返回Object数据,一般都是将数据转化为了JSON对象后传递给浏览器页面的。而 这个由Object转换为JSON,是由消息转换器HttpMessageConverter底层使用Jackson工具完成的,所以需要导入Jackson 的相关Jar包。

XML 复制代码
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>
2.在springmvc配置文件中加入 <mvc:annotation-driven> 注解驱动:

注解驱动涉及到了消息转换器接口

<!-- 注册mvc的注解驱动 -->

<mvc:annotation-driven/>
作用: <mvc:annotation-driven/>在加入到springmvc配置文件后,会自动创建消息转换器HttpMessageConverter接口的7个实现类对象,完成java对象到json、xml、text、二进制等数据格式的转换。(这里:将JAVA对象转换为JSON格式的数据 )

ObjectMapper om = new ObjectMapper();

json = om.writevalueAsString(student);

3.在处理器方法的上面加入@ResponseBody注解:

作用:通过HttpServletResponse应答对象,将转换后的JSON数据放入到响应体中,输出给浏览器

response.setContentType("application/json;charset=utf-8");

PrintWriter pw = response.getWriter();

pw.printIn(json);

HttpMessageConveter接口 :消息转换器。

注解驱动涉及到了消息转换器接口。

功能:定义了java转为json,xml,二级制,text等数据格式的方法。 这个接口有很多的实现类

这些实现类完成 java对象到json , java对象到xml,java对象到二进制等数据的转换

<mvc:annotation-driven/>在加入到springmvc配置文件后,会自动创建消息转换器HttpMessageConverter接口的7个实现类对象,包括 MappingJackson2HttpMessageConverter ( 使用jackson工具库中的ObjectMapper实现java对象转换成json字符串:

ObjectMapper om = new ObjectMapper();

json = om.writevalueAsString(student);

java 复制代码
@Controller
@RequestMapping("/data")
public class MyController4 {

    @RequestMapping("/single.do")
    @ResponseBody
    public Student doJsonObject(){
        //创建java对象,转为json
        Student student = new Student("李四",22,"lisi@qq.com");
        return student;
    }

    @RequestMapping("/list.do")
    @ResponseBody
    public List<Student> doJsonArray(){
        //创建List对象,转为jsonArray
        List<Student> students = new ArrayList<>();
        students.add(new Student("李四",22,"lisi@qq.com"));
        students.add(new Student("王五",23,"wangwu@qq.com"));
        return students;
    }
}
当返回值为String类型时:

返回字符串对象

若要返回非中文字符串,将前面返回数值型数据的返回值直接修改为字符串即可。但若 返回的字符串中带有中文字符,则接收方页面将会出现乱码。此时需要使用 @RequestMapping 的 produces 属性指定字符集。 produces,产品,结果,即该属性用于设置输出结果类型。

相关推荐
南极企鹅7 分钟前
深入理解 MVCC:数据库并发控制的基石
java·数据库·mysql
凯瑟琳.奥古斯特40 分钟前
力扣1235:加权区间调度最优解
java·python·算法·leetcode·职场和发展
想不到ID了1 小时前
第八篇: 登录注册功能实现
java·javascript
码语智行1 小时前
shp文件生成
java
plainGeekDev1 小时前
AlertDialog → DialogFragment
android·java·kotlin
薛定谔的悦1 小时前
光伏-储能-负荷联合预测:给 EMS 装上“预知能力“
java·数据库·人工智能·python·储能
大菜菜小个子1 小时前
template<typename T>使用
java·开发语言·算法
Refrain_zc1 小时前
Android开发: 拒绝 Activity 重建!onConfigurationChanged 实现平板横竖屏无缝切换
java
方也_arkling1 小时前
【Java-Day15】API篇-ArrayList集合
java·开发语言
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第89题】【Mysql篇】第19题:Hash 索引和 B+ 树索引的区别?它们在使用方面的区别?
java·数据库·mysql·面试·哈希算法