springmvc09

ModelAndView 返回值
若处理器方法处理完后,需要跳转到其他资源,且又要在跳转的资源间传递数据,此时处理器方法返回 ModelAndView 比较好。当然,若要返回 ModelAndView,则处理器方法中需要定义 ModelAndView对象。


返回值 String ,表示逻辑视图名称或完整视图路径
@Controller
public class MyController {
/*
* 处理器方法返回String,表示逻辑视图名称,需要配置视图解析
* */
@RequestMapping(value = "/returnString-view.do")
public String doReturnView(HttpServletRequest request,String name, Integer age) {
System.out.println("dosome方法的,name=" + name + ", age=" + age);

//手动添加数据到request作用域
request.setAttribute("myname",name);
request.setAttribute("myage",age);
/*
* show:逻辑视图名称
* 框架对视图执行forward转发操作
* */
return "show";
}

//处理器方法返回 String,表示完整视图路径,此时不能配置视图解析器
@RequestMapping(value = "/returnString-view2.do")
public String doReturnView2(HttpServletRequest request,String name, Integer age) {
System.out.println("---doReturnView2方法---,name=" + name + ", age=" + age);

//手动添加数据到request作用域
request.setAttribute("myname",name);
request.setAttribute("myage",age);
/*
* 完整视图路径,项目中不能配置视图解析器
* 框架对视图执行forward转发操作
* */
return "WEB-INF/view/show.jsp";
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

返回值 void ,了解
void:不能表示数据,也不能表示视图。在处理ajax的时候,可以使用void返回值。通过HttpServletResponse输出数据。响应ajax请求。ajax请求服务器端返回的就是数据,和视图无关。


返回值 object 对象
object:例如String,Integer,Map,List,Student 等等都是对象,对象有属性,属性就是数据。所以返回 object 表示数据,和视图无关。可以使用对象表示的数据,响应ajax请求。


现在做 ajax,主要使用 json的数据格式。
面试:springmvc开发中,返回值是object类型,如何转换为 json ?实现步骤:

1 加入处理json的工具库的依赖,springmvc默认使用的jackson

pom.xml 加入jackson依赖

<!--jackson依赖-->
<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> 注解驱动

主配置文件 springmvc.xml 加入:

<!--@ResponseBody注解驱动-->
<mvc:annotation-driven/>

3 在处理器方法的上面加上 @ResponseBody
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
3 在处理器方法的上面加上 @ResponseBody

控制器方法 MyController.java

//处理器方法返回一个Student,通过框架转为json,响应ajax请求
//@ResponseBody 作用:把处理器方法返回对象转为json后,通过HttpServletResponse输出给浏览器
@ResponseBody
@RequestMapping(value = "returnStudentJson.do")
public Student doStudentJsonObject(String name,Integer age){

Student student = new Student();
student.setName("lisi");
student.setAge(10);
return student; //会被框架转为json
}


原文地址:https://www.cnblogs.com/huaobin/p/14908527.html