处理器方法的返回值--返回对象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,产品,结果,即该属性用于设置输出结果类型。

相关推荐
色空大师21 分钟前
【Result<T>泛型接收转化失败】
java·泛型
Geoking.26 分钟前
【设计模式】中介者模式(Mediator)详解
java·设计模式·中介者模式
大猫和小黄27 分钟前
Java异常处理:从基础到SpringBoot实战解析
java·开发语言·spring boot·异常
hero.fei1 小时前
kaptcha 验证码生成工具在springboot中集成
java·spring boot·后端
mikelv011 小时前
实现返回树状结构小记
java·数据结构
Duang007_1 小时前
【LeetCodeHot100 超详细Agent启发版本】两数之和 (Two Sum)
java·人工智能·python
色空大师1 小时前
maven引入其他项目依赖爆红
java·maven
yangminlei1 小时前
深入理解Sentinel:分布式系统的流量守卫者
java
JavaEdge.1 小时前
java.io.IOException: Previous writer likely failed to write hdfs报错解决方案
java·开发语言·hdfs
w***76551 小时前
存储技术全景:从基础原理到未来趋势
spring boot·后端·mybatis