目录
回写数据
1、直接返回字符串
Web基础截断,客户端访问服务器端,如果想直接回写字符串作为响应题返回的话,只需要使用response.getWrite().print("KCandZH")即可,所以在Controller中想直接回写字符串,可以直接在方法中写入response。
方法1:通过SpringMVC框架注入的response对象,使用response.getWrite().print("hello")回写数据,此时不需要视图跳转,业务方法返回值为void
//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="user")
public class userController {
@RequestMapping("/quick6")
public void save6(HttpServletResponse response) throws IOException {
response.getWriter().print("hello itcase");
}
}
②将需要回写的字符串直接返回,但需要通过@ResponseBody注解告知SpringMVC框架,方法返回的字符串不是跳转某个视图,而是直接在http响应体重返回。(加上则不会进行前后缀拼接)
//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="user")
@ResponseBody//告诉SpringMVC框架不进行视图跳转,而是直接进行数据响应
public class userController {
@RequestMapping("/quick7")
public String save7(HttpServletResponse response) throws IOException {
return "hello itcase";
}
}
将字符串转成json格式回传到客户端
user类下
package com.pojo;
public class User {
private int age;
private String username;
public User() {
}
public void setAge(int age) {
this.age = age;
}
public void setName(String username) {
this.username = username;
}
}
userController类下
//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="user")
public class userController {
@RequestMapping("/quick9")
@ResponseBody
public String save9() throws JsonProcessingException {
User user=new User();
user.setAge(30);
user.setName("lisi");
//使用json的转换工具将对象转换成json格式字符串再返回
ObjectMapper objectMapper=new ObjectMapper();
String json = objectMapper.writeValueAsString(user);
return json;
}
}
要使用json转换工具,还得导入依赖
<!-- 导入json相关依赖 -->
<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>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
运行结果
2、直接返回对象或集合
使用SpringMVC自动将对象或集合转化为json格式
通过SpringMVC帮助我们对对象或集合进行json字符串的转换并回写,为处理器适配器配置消息转换参数是,指定使用jackson进行对象或集合的转换,因此需要在spring-mvc.xml中进行这样配置
配置spring-mvc.xml中处理器映射器
<!--配置处理器映射器 (将指定的对象或集合转为json格式) -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</list>
</property>
</bean>
在userController类中
//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="user")
public class userController {
@RequestMapping("/quick10")
@ResponseBody
//配置完成处理器映射器后,SpringMVC会将USer转化为json格式
public User save10() throws JsonProcessingException {
User user=new User();
user.setAge(32);
user.setName("lisi2");
return user;
}
}
运行结果
注解方式优化转化json
在方法上添加@ResponseBody就可以返回json格式的字符串,但是这样配置比较麻烦,配置的代码比较多,因此,我们可以使用mvc的注解驱动代替上述配置。
<!--mvc的注解驱动-->
<mvc:annotation-driven/>
、
在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC的三大组件。使用<mvc:annotation-driven>自动加载RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter(处理适配器),可用在Spring-xml.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。
同时使用<mvcannotation-driven>默认底层就会集成jackson进行对象或集合的json格式字符串的转换
mvc命名空间
因为使用了mvc命名空间,所以得导入mvc
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
在spring-mvc.xml配置文件中
<!-- 配置注解驱动-->
<mvc:annotation-driven/>
这样就完成了注解配置