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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
package
com.boventech.learning.controller;
import
java.util.HashMap;
import
java.util.Map;
import
org.springframework.stereotype.Controller;
import
org.springframework.ui.Model;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod;
import
org.springframework.web.bind.annotation.RequestParam;
import
org.springframework.web.bind.annotation.ResponseBody;
import
org.springframework.web.servlet.ModelAndView;
import
com.boventech.learning.entity.User;
/**
* MVCReturn
* @author peng.xia
*
*/
@Controller
@RequestMapping
(
"/MVCReturn"
)
public
class
SpringMVCReturnController {
//对于ModelAndView构造函数可以指定返回页面的名称,也可以通过setViewName方法来设置所需要跳转的页面;
@RequestMapping
(value=
"/index1"
,method=RequestMethod.GET)
public
ModelAndView index(){
ModelAndView modelAndView =
new
ModelAndView(
"/user/index"
);
modelAndView.addObject(
"name"
,
"xxx"
);
return
modelAndView;
}
//返回的是一个包含模型和视图的ModelAndView对象;
@RequestMapping
(value=
"/index2"
,method=RequestMethod.GET)
public
ModelAndView index2(){
ModelAndView modelAndView =
new
ModelAndView();
modelAndView.addObject(
"name"
,
"xxx"
);
modelAndView.setViewName(
"/user/index"
);
return
modelAndView;
}
/**
* Model一个模型对象,
* 主要包含spring封装好的model和modelMap,以及java.util.Map,
* 当没有视图返回的时候视图名称将由requestToViewNameTranslator决定;
* @return
*/
@RequestMapping
(value=
"/index3"
,method=RequestMethod.GET)
public
Map<String, String> index3(){
Map<String, String> map =
new
HashMap<String, String>();
map.put(
"1"
,
"1"
);
//map.put相当于request.setAttribute方法
return
map;
}
//响应的view应该也是该请求的view。等同于void返回。
//返回String
//通过model进行使用
@RequestMapping
(value=
"/index4"
,method = RequestMethod.GET)
public
String index(Model model) {
String retVal =
"user/index"
;
User user =
new
User();
user.setName(
"XXX"
);
model.addAttribute(
"user"
, user);
return
retVal;
}
//返回String
//通过Map进行使用
@RequestMapping
(value=
"/index5"
,method = RequestMethod.GET)
public
String index(Map<String, Object> map) {
String retVal =
"user/index"
;
User user =
new
User();
user.setName(
"XXX"
);
model.addAttribute(
"user"
, user);
return
retVal;
}
//通过配合@ResponseBody来将内容或者对象作为HTTP响应正文返回(适合做即时校验);
@RequestMapping
(value =
"/valid"
, method = RequestMethod.GET)
@ResponseBody
public
String valid(
@RequestParam
(value =
"userId"
, required =
false
) Integer userId,
@RequestParam
(value =
"name"
) String name) {
return
String.valueOf(
true
);
}
//返回字符串表示一个视图名称,这个时候如果需要在渲染视图的过程中需要模型的话,就可以给处理器添加一个模型参数,然后在方法体往模型添加值就可以了,
@RequestMapping
(method=RequestMethod.GET)
public
void
index5(){
ModelAndView modelAndView =
new
ModelAndView();
modelAndView.addObject(
"xxx"
,
"xxx"
);
}
//返回的结果页面还是:/type
//这个时候我们一般是将返回结果写在了HttpServletResponse 中了,如果没写的话,
//spring就会利用RequestToViewNameTranslator 来返回一个对应的视图名称。如果这个时候需要模型的话,处理方法和返回字符串的情况是相同的。
}
|
本文转自 沫沫金 51CTO博客,原文链接:http://blog.51cto.com/zl0828/1612427,如需转载请自行联系原作者