springmvc--controller方法返回值

1.1. 返回void

在Controller方法形参上可以定义request和response,使用request或response指定响应结果:

1、使用request转发页面,如下:

request.getRequestDispatcher("页面路径").forward(request, response);

request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);

 

2、可以通过response页面重定向:

response.sendRedirect("url")

response.sendRedirect("/springmvc-web2/itemEdit.action");

 

3、可以通过response指定响应结果,例如响应json数据如下:

response.getWriter().print("{\"abc\":123}");

 1 /**
 2  * 返回void测试
 3  * 
 4  * @param request
 5  * @param response
 6  * @throws Exception
 7  */
 8 @RequestMapping("queryItem")
 9 public void queryItem(HttpServletRequest request, HttpServletResponse response) throws Exception {
10     // 1 使用request进行转发
11     // request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request,
12     // response);
13 
14     // 2 使用response进行重定向到编辑页面
15     // response.sendRedirect("/springmvc-web2/itemEdit.action");
16 
17     // 3 使用response直接显示
18     response.getWriter().print("{\"abc\":123}");
19 }
View Code

 

1.2. 返回字符串

1.1.1. 逻辑视图名

controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。

//指定逻辑视图名,经过视图解析器解析为jsp物理路径:/WEB-INF/jsp/itemList.jsp

return "itemList";

 

参考第一天内容

1.1.2. Redirect重定向

Contrller方法返回字符串可以重定向到一个url地址

如下商品修改提交后重定向到商品编辑页面。

 1 /**
 2 
 3  * 更新商品
 4 
 5  *
 6 
 7  * @param item
 8 
 9  * @return
10 
11  */
12 
13 @RequestMapping("updateItem")
14 
15 public String updateItemById(Item item) {
16 
17     // 更新商品
18 
19     this.itemService.updateItemById(item);
20 
21  
22 
23     // 修改商品成功后,重定向到商品编辑页面
24 
25     // 重定向后浏览器地址栏变更为重定向的地址,
26 
27     // 重定向相当于执行了新的request和response,所以之前的请求参数都会丢失
28 
29     // 如果要指定请求参数,需要在重定向的url后面添加 ?itemId=1 这样的请求参数
30 
31     return "redirect:/itemEdit.action?itemId=" + item.getId();
32 
33 }
View Code

 

 

1.1.3. forward转发

Controller方法执行后继续执行另一个Controller方法

如下商品修改提交后转向到商品修改页面,修改商品的id参数可以带到商品修改方法中。

 1 /**
 2 
 3  * 更新商品
 4 
 5  *
 6 
 7  * @param item
 8 
 9  * @return
10 
11  */
12 
13 @RequestMapping("updateItem")
14 
15 public String updateItemById(Item item) {
16 
17     // 更新商品
18 
19     this.itemService.updateItemById(item);
20 
21  
22 
23     // 修改商品成功后,重定向到商品编辑页面
24 
25     // 重定向后浏览器地址栏变更为重定向的地址,
26 
27     // 重定向相当于执行了新的request和response,所以之前的请求参数都会丢失
28 
29     // 如果要指定请求参数,需要在重定向的url后面添加 ?itemId=1 这样的请求参数
30 
31     // return "redirect:/itemEdit.action?itemId=" + item.getId();
32 
33  
34 
35     // 修改商品成功后,继续执行另一个方法
36 
37     // 使用转发的方式实现。转发后浏览器地址栏还是原来的请求地址,
38 
39     // 转发并没有执行新的request和response,所以之前的请求参数都存在
40 
41     return "forward:/itemEdit.action";
42 
43  
44 
45 }
46 
47 //结果转发到editItem.action,request可以带过去
48 
49 return "forward: /itemEdit.action";
View Code

 

 

posted on 2018-02-01 15:38  jovelove  阅读(346)  评论(0)    收藏  举报