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 }
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 }
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";

浙公网安备 33010602011771号