SpringMVC响应数据和视图
一 、返回页面文件名
1. 返回逻辑视图
2. 返回带前缀的物理视图 (不受视图解析器的影响)
- 请求转发:forward:/success.jsp
- 重定向:redirect:/success.jsp
3. 方法返回ModelAndView
public ModelAndView jump(){
ModelAndView mav = new ModelAndView();
mav.setViewName("视图名称");
mav.addobject("数据名称", "值");
return mav;
}
public ModelAndView jump(ModelAndView mav){
mav.setViewName("视图名称");
mav.addobject("数据名称", "值");
return mav;
}
4. 方法返回String:视图名称
public String jump(Model model){
model.addAttribute("数据名称", "值");
return "视图名称";
}
二、返回数据
1. 直接响应字符串
/*
返回字符串: 使用response对象写出去
*/
@RequestMapping("/returnStr01")
public void returnStr01(HttpServletResponse resp) throws IOException {
resp.getWriter().write("str01...");
}
/*
返回字符串: 使用@ResponseBody,打注解,告诉springmvc,方法的返回值是字符串,不是页面
*/
@ResponseBody
@RequestMapping("/returnStr02")
public String returnStr02() {
return "str02...";
}
- 如果使用
@ResponseBody
响应的中文字符串,即使配置了CharacterEncodingFilter
,也会有乱码。 - 解决方法:在
springmvc.xml
里配置如下: - 配置SpringMVC的
StringHttpMessageConverter
进行字符串处理转换,设置采用utf-8
字符集。
<mvc:annotation-driven>
<!--
配置消息转换器:
1. 当我们的方法上打上了@ResponseBody,返回字符串的时候,里面有中文,就会出现乱码的问题
2. 即便我们在web.xml中配置了中文乱码的过滤器,也不能解决。
3. 需要配置下面的这段消息转换器 , 这段配置一旦写就,即对全局的项目产生影响。
-->
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<!--指定默认的编码-->
<property name="defaultCharset" value="utf-8"/>
<!--指定支持的内容类型和编码-->
<property name="supportedMediaTypes">
<list>
<value>text/html;cahrset=utf-8</value>
<value>application/json;cahrset=utf-8</value>
<value>text/plain;cahrset=utf-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
2. 返回json数据
- 自己把JavaBean对象转换成json格式的字符串,响应给客户端。
- 方法返回JavaBean对象,使用
@ResponseBody
注解Springmvc帮我们转换成json格式。
- 前提条件
在pom.xml中导入依赖:jackson-databind
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
使用示例
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.itheima.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*
返回数据 : json数据
*/
@Controller
public class Controller04 {
/*
返回json字符串
1. 自己转化成json字符串,然后返回
*/
@ResponseBody
@RequestMapping("/returnjson01")
public String returnjson01() throws JsonProcessingException {
System.out.println("returnjson01...");
//1. 创建对象
User user = new User("admin" , "123456");
//2. 转化成json
ObjectMapper om = new ObjectMapper();
String json = om.writeValueAsstring(user);
//3. 返回json
return json;
}
/*
返回json字符串
1. 不需要我们自己转化对象成json字符串。
2. 只需要返回对象即可。
*/
@ResponseBody
@RequestMapping("/returnjson02")
public User returnjson02() throws JsonProcessingException {
System.out.println("returnjson02...");
//1. 创建对象
User user = new User("管理员" , "123456");
//2. 直接返回2
return user;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。