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

相关推荐
六千江山18 分钟前
从字符串中提取符合规则的汽车车牌
java
33255_40857_2805927 分钟前
从韩立结婴看Java进阶:一个10年老码农的修仙式成长指南
java
赵星星52027 分钟前
透彻理解Java中的深拷贝与浅拷贝:从误区到最佳实践
java·后端
心月狐的流火号29 分钟前
Java CompletableFuture 核心API
java
黑客影儿39 分钟前
Java技术总监的成长之路(技术干货分享)
java·jvm·后端·程序人生·spring·tomcat·maven
京东云开发者44 分钟前
EXCEL导入—设计与思考
java·架构
Warren981 小时前
软件测试-Selenium学习笔记
java·javascript·笔记·学习·selenium·测试工具·安全
没有bug.的程序员1 小时前
JVM 运行时数据区详解:内存模型与对象生命周期全景解析
java·jvm·运行时数据区·内存模型·对象生命周期
杨DaB1 小时前
【SpringBoot】Dubbo、Zookeeper
spring boot·后端·zookeeper·dubbo·java-zookeeper
一语长情2 小时前
Netty流量整形:保障微服务通信稳定性的关键策略
java·后端·架构