51SpringMVC - Controller方法返回值

简介: 51SpringMVC - Controller方法返回值

返回ModelAndView

controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view。

参考之前的文章: 参数绑定(Model / ModelMap)

返回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}");

代码演示:

以下代码一次测试,演示上面的效果

/**
 * 返回void测试
 * 
 * @param request
 * @param response
 * @throws Exception
 */
@RequestMapping("queryItem")
public void queryItem(HttpServletRequest request, HttpServletResponse response) throws Exception {
  // 1 使用request进行转发
  // request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request,
  // response);
  // 2 使用response进行重定向到编辑页面
  // response.sendRedirect("/springmvc-web2/itemEdit.action");
  // 3 使用response直接显示
  response.getWriter().print("{\"abc\":123}");
}

返回字符串

1. 逻辑视图名

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

//指定逻辑视图名,经过视图解析器解析为jsp物理路径:/WEB-INF/jsp/itemList.jsp
return "itemList";
2. Redirect重定向

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

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

/**
 * 更新商品
 * 
 * @param item
 * @return
 */
@RequestMapping("updateItem")
public String updateItemById(Item item) {
  // 更新商品
  this.itemService.updateItemById(item);
  // 修改商品成功后,重定向到商品编辑页面
  // 重定向后浏览器地址栏变更为重定向的地址,
  // 重定向相当于执行了新的request和response,所以之前的请求参数都会丢失
  // 如果要指定请求参数,需要在重定向的url后面添加 ?itemId=1 这样的请求参数
  return "redirect:/itemEdit.action?itemId=" + item.getId();
}
3. forward转发

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

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

/**
 * 更新商品
 * 
 * @param item
 * @return
 */
@RequestMapping("updateItem")
public String updateItemById(Item item) {
  // 更新商品
  this.itemService.updateItemById(item);
  // 修改商品成功后,重定向到商品编辑页面
  // 重定向后浏览器地址栏变更为重定向的地址,
  // 重定向相当于执行了新的request和response,所以之前的请求参数都会丢失
  // 如果要指定请求参数,需要在重定向的url后面添加 ?itemId=1 这样的请求参数
  // return "redirect:/itemEdit.action?itemId=" + item.getId();
  // 修改商品成功后,继续执行另一个方法
  // 使用转发的方式实现。转发后浏览器地址栏还是原来的请求地址,
  // 转发并没有执行新的request和response,所以之前的请求参数都存在
  return "forward:/itemEdit.action";
}
//结果转发到editItem.action,request可以带过去
return "forward: /itemEdit.action";

需要修改之前编写的根据id查询商品方法

因为请求进行修改商品时,请求参数里面只有id属性,没有itemId属性

修改,如下图:


目录
相关文章
|
JSON 前端开发 Java
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(下)
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(下)
113 0
|
Java
【SpringMVC】注解、参数传递、返回值和页面跳转的关键步骤(三)
【SpringMVC】注解、参数传递、返回值和页面跳转的关键步骤(三)
72 0
|
1月前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
38 1
|
1月前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
35 1
|
1月前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
29 0
|
4月前
|
前端开发 Java Spring
SpringMVC种通过追踪源码查看是哪种类型的视图渲染器(一般流程方法)
这篇文章通过示例代码展示了如何在Spring MVC中编写和注册拦截器,以及如何在拦截器的不同阶段添加业务逻辑。
SpringMVC种通过追踪源码查看是哪种类型的视图渲染器(一般流程方法)
|
5月前
|
开发者 索引
SpringMVC原理(2)-目标方法是怎么被找到的
目标方法(Handler)是如何被找到的 涉及组件:HandlerMapping、MappingRegistry、HandlerExecutionChain
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
|
XML JSON 前端开发
SpringMVC入门的注解、参数传递、返回值和页面跳转---超详细教学
SpringMVC入门的注解、参数传递、返回值和页面跳转---超详细教学
310 1
|
7月前
|
设计模式 前端开发 Java
[Spring ~源码] Spring的run方法以及SpringMVC执行流程
[Spring ~源码] Spring的run方法以及SpringMVC执行流程