1.回写数据
客户端访问服务端,服务端把数据回写给客户端进行展示
1.1 直接返回字符串
Web基础阶段,客户端访问服务器端,如果想直接回写字符串作为响应体返回的话,只需要使用response.getWriter(),print("hello world")即可,那么在Controller中想直接回写字符串该怎样呢?
(1)通过SpringMVC框架注入的response对象,使用response.getWriter(),print("hello world")回写数据,此时不需要视图跳转,业务方法返回值为void
(2)将需要回写的字符串直接返回,但此时需要通过@ResponseBody注解告知SpringMVC框架,方法返回的字符串不是视图(页面)跳转而是直接在http响应体中返回(直接进行数据响应)。
1.1.1 直接回写json格式字符串
(1)简单写法:拼接字符串
(2)使用json转换工具Jackson
在pom.xml中要导入jackson包
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.9</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.9</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.9</version> </dependency> </dependencies>
2.1 返回对象或集合
(1)通过SpringMVC帮助我们对对象或集合进行json字符串的转换并回写,为处理器适配器配置消息转换参数,指定使用jackson进行对象或集合的转换,因此需要在spring-mvc.xml中进行如下配置
在spring-mvc.xml配置
<!--配置处理器映射器--> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> </list> </property> </bean>
之后
(2)在方法上添加@ResponseBody就可以返回json格式的字符串,但是这样配置比较麻烦,配置的代码比较多,因此,我们可以使用mvc的注解驱动代替上述配置,这是最终采取的形式
在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC的三大组件。
使用<mvc:annotation-driven>自动加载RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter(处理适配器),可以在spring-mvc.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。同时使用<mvc:annotation-driven>默认底层就会集成jackson进行对象或集合的json格式字符串的转换。
完整的spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- ~ Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved. --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!--Controller组件扫描--> <context:component-scan base-package="com.company.controller"/> <!--配置内部资源视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--/jsp/success.jsp--> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--配置处理器映射器--> <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">--> <!-- <property name="messageConverters">--> <!-- <list>--> <!-- <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>--> <!-- </list>--> <!-- </property>--> <!-- </bean>--> <!--mvc的注解驱动--> <mvc:annotation-driven/> </beans>