要实现Controller返回数据给页面,Spring MVC 提供了以下几种途径:

  • ModelAndView:将视图和数据封装成ModelAndView对象,作为方法的返回值,数据最终会存到HttpServletRequest对象中!
  • Model对象:通过给方法添加引用Model对象入参,直接往Model对象添加属性值。那么哪些类型的入参才能够引用Model对象,有三种类型,分别是  org.springframework.ui.Model、org.springframework.ui.ModelMap 或 java.uti.Map。只要是这些类型的入参,都是指向Model对象的,而且不管定义多少个这些类型的入参都是指向同一个Model对象!
  • @SessionAttributes:通过给Controller类添加@SessionAttributes注解,该注解的name和value属性值都是Model的key值,意思是指Model中这些key对应的数据也会存到HttpSession,不仅仅存到HttpServletRequest对象中!这样页面可以共享HttpSession中存的数据了!
  • @ModelAttribute:使用@ModelAttribute注解的方法会在此Controller每个方法执行前被执行,指定@ModelAttribute的name或value都是一样的功能,都是作为key,将注解的方法返回的对象作为value存放到Model中,不指定name和value的话,则以注解的方法返回的类型名称首字母小写作为key。

当然,除了上述的途径,也可以使用传统的方式,那就是直接使用HttpServletRequest或HttpSession对象来存数据,页面上再去取。

注意:Model中存的数据,最终都会存放到HttpServletRequest对象中,页面上可以通过HttpServletRequest对象获取数据。

接下来,我们就看看demo,通过demo来理解如何通过这几种方式实现将数据返回给页面。

demo场景:通过ResetFul风格的URL路径传递用户ID给Controller,Controller查询出对应的用户信息返回给页面。

Spring MVC配置的视图解析器:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

  ReturnModelDataController1.java:

package edu.mvcdemo.controller;  

import java.util.Map;  

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import edu.mvcdemo.model.User;
import edu.mvcdemo.service.IUserService; /**
* @编写人: yh.zeng
* @编写时间:2017-7-10 下午9:16:54
* @文件描述: Controller中如何将model数据返回给页面的demo1
*/
@Controller
@Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
@RequestMapping("users")
public class ReturnModelDataController1 { @Autowired
@Qualifier("userService")
private IUserService userService; /**
* 方式一,通过ModelAndView返回用户信息数据到页面
* @return
*/
@RequestMapping(value="/view/{userId}/use/ModelAndView", method=RequestMethod.GET)
private ModelAndView getUserInfo(@PathVariable("userId") Integer userId){
User user = userService.getUserById(userId);
return new ModelAndView("userinfo", "user", user);
} /**
* 方式二,通过Model返回用户信息数据到页面
* @return
*/
@RequestMapping(value="/view/{userId}/use/Model", method=RequestMethod.GET)
private String getUserInfo(@PathVariable("userId") Integer userId, Model model){
User user = userService.getUserById(userId);
model.addAttribute("user", user);
return "userinfo";
} /**
* 方式三,通过ModelMap返回用户信息数据到页面
* @return
*/
@RequestMapping(value="/view/{userId}/use/ModelMap", method=RequestMethod.GET)
private String getUserInfo(@PathVariable("userId") Integer userId, ModelMap model){
User user = userService.getUserById(userId);
model.addAttribute("user", user);
return "userinfo";
} /**
* 方式四,通过Map返回用户信息数据到页面
* @return
*/
@RequestMapping(value="/view/{userId}/use/Map", method=RequestMethod.GET)
private String getUserInfo(@PathVariable("userId") Integer userId, Map<String,Object> model){
User user = userService.getUserById(userId);
model.put("user", user);
return "userinfo";
} }

RetunnModelDataController2.java:

[java] view plain copy
package edu.mvcdemo.controller;  

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;
import edu.mvcdemo.model.User;
import edu.mvcdemo.service.IUserService; /**
* @编写人: yh.zeng
* @编写时间:2017-7-11 下午9:09:03
* @文件描述: Controller中如何将model数据返回给页面的demo2
*/
@Controller
@Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
@RequestMapping("users")
@SessionAttributes({"user"}) //Model中key=user的数据也会存到HttpSession
public class RetunnModelDataController2 { @Autowired
@Qualifier("userService")
private IUserService userService; /**
* 方式五,通过@SessionAttributes将指定key的模型数据存到HttpSession,让页面可以获取
* @return
*/
@RequestMapping(value="/view/{userId}/use/SessionAttributes", method=RequestMethod.GET)
private ModelAndView getUserInfo(@PathVariable("userId") Integer userId){
User user = userService.getUserById(userId);
return new ModelAndView("userinfo", "user", user);
} }

RetunnModelDataController3.java:

package edu.mvcdemo.controller;  

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import edu.mvcdemo.model.User;
import edu.mvcdemo.service.IUserService; /**
* @编写人: yh.zeng
* @编写时间:2017-7-11 下午9:09:03
* @文件描述: Controller中如何将model数据返回给页面的demo3
*/
@Controller
@Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
@RequestMapping("users")
public class RetunnModelDataController3 { @Autowired
@Qualifier("userService")
private IUserService userService; /**
* 注解@ModelAttribute用法一:
* 使用@ModelAttribute注解的方法会在此Controller每个方法执行前被执行,
* 指定@ModelAttribute的name或value都是一样的功能,都是作为key,将注解的方法返回的对象作为value存放到Model中,
* 不指定name和value的话,则以注解的方法返回的类型名称首字母小写作为key。
* @param userId ResetFul路径的请求参数
* @return
*/
@ModelAttribute(name="user")
public User addAccount(@PathVariable("userId") Integer userId) {
return userService.getUserById(userId);
} /**
* 注解@ModelAttribute用法二:
* 使用@ModelAttribute注解的方法会在此Controller每个方法执行前被执行
* @param userId ResetFul路径的请求参数
* @param model 模型对象,可以使用org.springframework.ui.Model、org.springframework.ui.ModelMap
* 或 java.uti.Map 作为入参类型,以引用模型对象
*/
/*@ModelAttribute
public void addAccount(@PathVariable("userId") Integer userId, Model model) {
User user = userService.getUserById(userId);
model.addAttribute("user", user);
}*/ /**
* 方式六,通过@SessionAttributes将指定key的模型数据存到HttpSession,让页面可以获取
* @return
*/
@RequestMapping(value="/view/{userId}/use/ModelAttribute", method=RequestMethod.GET)
private String getUserInfo(@PathVariable("userId") Integer userId){
return "userinfo";
} }

RetunnModelDataController4.java:

package edu.mvcdemo.controller;  

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import edu.mvcdemo.model.User;
import edu.mvcdemo.service.IUserService; /**
* @编写人: yh.zeng
* @编写时间:2017-7-11 下午9:09:03
* @文件描述: Controller中如何将model数据返回给页面的demo2
*/
@Controller
@Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
@RequestMapping("users")
public class RetunnModelDataController4 { @Autowired
@Qualifier("userService")
private IUserService userService; /**
* 方式七,直接将数据存到HttpSession,让页面可以获取
* @param userId
* @param session
* @return
*/
@RequestMapping(value="/view/{userId}/use/HttpSession", method=RequestMethod.GET)
private String getUserInfo(@PathVariable("userId") Integer userId, HttpSession session){
User user = userService.getUserById(userId);
session.setAttribute("user", user);
return "userinfo";
} /**
* 方式八,直接将数据存到HttpServletRequest,让页面可以获取
* @param userId
* @param session
* @return
*/
@RequestMapping(value="/view/{userId}/use/HttpServletRequest", method=RequestMethod.GET)
private String getUserInfo(@PathVariable("userId") Integer userId, HttpServletRequest request){
User user = userService.getUserById(userId);
request.setAttribute("user", user);
return "userinfo";
} }

用户信息页面userinfo.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>userinfo.jsp</title>
</head>
<body>
<c:if test="${sessionScope.user != null}">
<h3>HttpSession对象中也存了用户信息!用户信息如下:</h3>
用户编号:${sessionScope.user.no}
<br>
用户名:${sessionScope.user.userName}
<br>
年龄:${sessionScope.user.age}
</c:if>
<c:if test="${requestScope.user != null}">
<h3>HttpServletRequest对象中存的用户信息如下:</h3>
用户编号:${requestScope.user.no}
<br>
用户名:${requestScope.user.userName}
<br>
年龄:${requestScope.user.age}
</c:if>
</body>
</html>

效果:

方式一:通过org.springframework.web.servlet.ModelAndView实现

方式二:通过org.springframework.ui.Model实现

方式三:通过org.springframework.ui.ModelMap实现

方式四:通过java.util.Map实现

方式五:通过org.springframework.web.bind.annotation.SessionAttributes标注指定Model中的某些数据也存储到HttpSession中

方式六:通过org.springframework.web.bind.annotation.ModelAttribute实现

方式七:直接将数据存到HttpSession,让页面可以获取

方式八:直接将数据存到HttpServletRequest,让页面可以获取

项目demo见https://github.com/zengyh/MavenSpringMvcDemo.git

要实现Controller返回数据给页面,Spring MVC 提供了以下几种途径:

  • ModelAndView:将视图和数据封装成ModelAndView对象,作为方法的返回值,数据最终会存到HttpServletRequest对象中!
  • Model对象:通过给方法添加引用Model对象入参,直接往Model对象添加属性值。那么哪些类型的入参才能够引用Model对象,有三种类型,分别是  org.springframework.ui.Model、org.springframework.ui.ModelMap 或 java.uti.Map。只要是这些类型的入参,都是指向Model对象的,而且不管定义多少个这些类型的入参都是指向同一个Model对象!
  • @SessionAttributes:通过给Controller类添加@SessionAttributes注解,该注解的name和value属性值都是Model的key值,意思是指Model中这些key对应的数据也会存到HttpSession,不仅仅存到HttpServletRequest对象中!这样页面可以共享HttpSession中存的数据了!
  • @ModelAttribute:使用@ModelAttribute注解的方法会在此Controller每个方法执行前被执行,指定@ModelAttribute的name或value都是一样的功能,都是作为key,将注解的方法返回的对象作为value存放到Model中,不指定name和value的话,则以注解的方法返回的类型名称首字母小写作为key。

当然,除了上述的途径,也可以使用传统的方式,那就是直接使用HttpServletRequest或HttpSession对象来存数据,页面上再去取。

注意:Model中存的数据,最终都会存放到HttpServletRequest对象中,页面上可以通过HttpServletRequest对象获取数据。

接下来,我们就看看demo,通过demo来理解如何通过这几种方式实现将数据返回给页面。

demo场景:通过ResetFul风格的URL路径传递用户ID给Controller,Controller查询出对应的用户信息返回给页面。

Spring MVC配置的视图解析器:

[html] view plain copy

 
  1. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  2. <property name="prefix" value="/jsp/" />
  3. <property name="suffix" value=".jsp" />
  4. </bean>

ReturnModelDataController1.java:

[java] view plain copy

 
  1. package edu.mvcdemo.controller;
  2. import java.util.Map;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.beans.factory.annotation.Qualifier;
  5. import org.springframework.context.annotation.Scope;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.ui.Model;
  8. import org.springframework.ui.ModelMap;
  9. import org.springframework.web.bind.annotation.PathVariable;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestMethod;
  12. import org.springframework.web.servlet.ModelAndView;
  13. import edu.mvcdemo.model.User;
  14. import edu.mvcdemo.service.IUserService;
  15. /**
  16. * @编写人: yh.zeng
  17. * @编写时间:2017-7-10 下午9:16:54
  18. * @文件描述: Controller中如何将model数据返回给页面的demo1
  19. */
  20. @Controller
  21. @Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
  22. @RequestMapping("users")
  23. public class ReturnModelDataController1 {
  24. @Autowired
  25. @Qualifier("userService")
  26. private IUserService userService;
  27. /**
  28. * 方式一,通过ModelAndView返回用户信息数据到页面
  29. * @return
  30. */
  31. @RequestMapping(value="/view/{userId}/use/ModelAndView", method=RequestMethod.GET)
  32. private ModelAndView getUserInfo(@PathVariable("userId") Integer userId){
  33. User user = userService.getUserById(userId);
  34. return new ModelAndView("userinfo", "user", user);
  35. }
  36. /**
  37. * 方式二,通过Model返回用户信息数据到页面
  38. * @return
  39. */
  40. @RequestMapping(value="/view/{userId}/use/Model", method=RequestMethod.GET)
  41. private String getUserInfo(@PathVariable("userId") Integer userId, Model model){
  42. User user = userService.getUserById(userId);
  43. model.addAttribute("user", user);
  44. return "userinfo";
  45. }
  46. /**
  47. * 方式三,通过ModelMap返回用户信息数据到页面
  48. * @return
  49. */
  50. @RequestMapping(value="/view/{userId}/use/ModelMap", method=RequestMethod.GET)
  51. private String getUserInfo(@PathVariable("userId") Integer userId, ModelMap model){
  52. User user = userService.getUserById(userId);
  53. model.addAttribute("user", user);
  54. return "userinfo";
  55. }
  56. /**
  57. * 方式四,通过Map返回用户信息数据到页面
  58. * @return
  59. */
  60. @RequestMapping(value="/view/{userId}/use/Map", method=RequestMethod.GET)
  61. private String getUserInfo(@PathVariable("userId") Integer userId, Map<String,Object> model){
  62. User user = userService.getUserById(userId);
  63. model.put("user", user);
  64. return "userinfo";
  65. }
  66. }

RetunnModelDataController2.java:

[java] view plain copy

 
  1. package edu.mvcdemo.controller;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.beans.factory.annotation.Qualifier;
  4. import org.springframework.context.annotation.Scope;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.web.bind.annotation.PathVariable;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.RequestMethod;
  9. import org.springframework.web.bind.annotation.SessionAttributes;
  10. import org.springframework.web.servlet.ModelAndView;
  11. import edu.mvcdemo.model.User;
  12. import edu.mvcdemo.service.IUserService;
  13. /**
  14. * @编写人: yh.zeng
  15. * @编写时间:2017-7-11 下午9:09:03
  16. * @文件描述: Controller中如何将model数据返回给页面的demo2
  17. */
  18. @Controller
  19. @Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
  20. @RequestMapping("users")
  21. @SessionAttributes({"user"}) //Model中key=user的数据也会存到HttpSession
  22. public class RetunnModelDataController2 {
  23. @Autowired
  24. @Qualifier("userService")
  25. private IUserService userService;
  26. /**
  27. * 方式五,通过@SessionAttributes将指定key的模型数据存到HttpSession,让页面可以获取
  28. * @return
  29. */
  30. @RequestMapping(value="/view/{userId}/use/SessionAttributes", method=RequestMethod.GET)
  31. private ModelAndView getUserInfo(@PathVariable("userId") Integer userId){
  32. User user = userService.getUserById(userId);
  33. return new ModelAndView("userinfo", "user", user);
  34. }
  35. }

RetunnModelDataController3.java:

[java] view plain copy

 
  1. package edu.mvcdemo.controller;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.beans.factory.annotation.Qualifier;
  4. import org.springframework.context.annotation.Scope;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.ui.Model;
  7. import org.springframework.web.bind.annotation.ModelAttribute;
  8. import org.springframework.web.bind.annotation.PathVariable;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. import edu.mvcdemo.model.User;
  12. import edu.mvcdemo.service.IUserService;
  13. /**
  14. * @编写人: yh.zeng
  15. * @编写时间:2017-7-11 下午9:09:03
  16. * @文件描述: Controller中如何将model数据返回给页面的demo3
  17. */
  18. @Controller
  19. @Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
  20. @RequestMapping("users")
  21. public class RetunnModelDataController3 {
  22. @Autowired
  23. @Qualifier("userService")
  24. private IUserService userService;
  25. /**
  26. * 注解@ModelAttribute用法一:
  27. * 使用@ModelAttribute注解的方法会在此Controller每个方法执行前被执行,
  28. * 指定@ModelAttribute的name或value都是一样的功能,都是作为key,将注解的方法返回的对象作为value存放到Model中,
  29. * 不指定name和value的话,则以注解的方法返回的类型名称首字母小写作为key。
  30. * @param userId  ResetFul路径的请求参数
  31. * @return
  32. */
  33. @ModelAttribute(name="user")
  34. public User addAccount(@PathVariable("userId") Integer userId) {
  35. return userService.getUserById(userId);
  36. }
  37. /**
  38. * 注解@ModelAttribute用法二:
  39. * 使用@ModelAttribute注解的方法会在此Controller每个方法执行前被执行
  40. * @param userId    ResetFul路径的请求参数
  41. * @param model     模型对象,可以使用org.springframework.ui.Model、org.springframework.ui.ModelMap
  42. *                       或 java.uti.Map 作为入参类型,以引用模型对象
  43. */
  44. /*@ModelAttribute
  45. public void addAccount(@PathVariable("userId") Integer userId, Model model) {
  46. User user =  userService.getUserById(userId);
  47. model.addAttribute("user", user);
  48. }*/
  49. /**
  50. * 方式六,通过@SessionAttributes将指定key的模型数据存到HttpSession,让页面可以获取
  51. * @return
  52. */
  53. @RequestMapping(value="/view/{userId}/use/ModelAttribute", method=RequestMethod.GET)
  54. private String getUserInfo(@PathVariable("userId") Integer userId){
  55. return "userinfo";
  56. }
  57. }

RetunnModelDataController4.java:

[java] view plain copy

 
  1. package edu.mvcdemo.controller;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpSession;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.beans.factory.annotation.Qualifier;
  6. import org.springframework.context.annotation.Scope;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.web.bind.annotation.PathVariable;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. import edu.mvcdemo.model.User;
  12. import edu.mvcdemo.service.IUserService;
  13. /**
  14. * @编写人: yh.zeng
  15. * @编写时间:2017-7-11 下午9:09:03
  16. * @文件描述: Controller中如何将model数据返回给页面的demo2
  17. */
  18. @Controller
  19. @Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
  20. @RequestMapping("users")
  21. public class RetunnModelDataController4 {
  22. @Autowired
  23. @Qualifier("userService")
  24. private IUserService userService;
  25. /**
  26. * 方式七,直接将数据存到HttpSession,让页面可以获取
  27. * @param userId
  28. * @param session
  29. * @return
  30. */
  31. @RequestMapping(value="/view/{userId}/use/HttpSession", method=RequestMethod.GET)
  32. private String getUserInfo(@PathVariable("userId") Integer userId, HttpSession session){
  33. User user = userService.getUserById(userId);
  34. session.setAttribute("user", user);
  35. return "userinfo";
  36. }
  37. /**
  38. * 方式八,直接将数据存到HttpServletRequest,让页面可以获取
  39. * @param userId
  40. * @param session
  41. * @return
  42. */
  43. @RequestMapping(value="/view/{userId}/use/HttpServletRequest", method=RequestMethod.GET)
  44. private String getUserInfo(@PathVariable("userId") Integer userId, HttpServletRequest request){
  45. User user = userService.getUserById(userId);
  46. request.setAttribute("user", user);
  47. return "userinfo";
  48. }
  49. }

用户信息页面userinfo.jsp:

[html] view plain copy

 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>userinfo.jsp</title>
  9. </head>
  10. <body>
  11. <c:if test="${sessionScope.user != null}">
  12. <h3>HttpSession对象中也存了用户信息!用户信息如下:</h3>
  13. 用户编号:${sessionScope.user.no}
  14. <br>
  15. 用户名:${sessionScope.user.userName}
  16. <br>
  17. 年龄:${sessionScope.user.age}
  18. </c:if>
  19. <c:if test="${requestScope.user != null}">
  20. <h3>HttpServletRequest对象中存的用户信息如下:</h3>
  21. 用户编号:${requestScope.user.no}
  22. <br>
  23. 用户名:${requestScope.user.userName}
  24. <br>
  25. 年龄:${requestScope.user.age}
  26. </c:if>
  27. </body>
  28. </html>

效果:

方式一:通过org.springframework.web.servlet.ModelAndView实现

方式二:通过org.springframework.ui.Model实现

方式三:通过org.springframework.ui.ModelMap实现

方式四:通过java.util.Map实现

方式五:通过org.springframework.web.bind.annotation.SessionAttributes标注指定Model中的某些数据也存储到HttpSession中

方式六:通过org.springframework.web.bind.annotation.ModelAttribute实现

方式七:直接将数据存到HttpSession,让页面可以获取

方式八:直接将数据存到HttpServletRequest,让页面可以获取

项目demo见https://github.com/zengyh/MavenSpringMvcDemo.git

Spring MVC中Controller如何将数据返回给页面的更多相关文章

  1. Spring MVC中 controller方法返回值

    1.返回ModelAndView 定义ModelAndView对象并返回,对象中可添加model数据.指定view 2.返回String 1.表示返回逻辑视图名 model对象通过 model.add ...

  2. 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录

    java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务 ...

  3. 【Spring MVC】spring mvc中相同的url请求返回不同的结果

    在项目中凡是使用Spring MVC这种控制器的,大多都是返回JSON数据对象,或者JSP页面. 但是相同的URL请求如何让他自动的选择放回的是什么? 在这里有由于鄙人没有亲自测试过,就不敢乱贴代码, ...

  4. Spring MVC中Controller返回值void时报错

    Controller如下: 当使用url访问该处理器方法时,报错如下: 26-Jan-2019 21:16:28.105 警告 [http-nio-8080-exec-39] org.springfr ...

  5. 【spring boot】在Spring mvc中controller中可以拿到对象信息,但是返回给前台却是什么也没有,解决方案

    如图所示: 最后: 问题解决: 这个原因是因为,User类并未给字段提供get/set方法,所以给前台传递过去的值是空的. 解决方案: 为User类添lombok的注解@Data,为实体类提供get/ ...

  6. spring mvc 中 controller 路径配置

    下图中,由于红色部分(value="/")的存在,导致 host:port/项目/dimlist 无法被映射到dimList方法,解决办法是将其去掉. package cn.bgo ...

  7. Spring MVC中返回JSON数据的几种方式

    我们都知道Spring MVC 的Controller方法中默认可以返回ModeAndView 和String 类型,返回的这两种类型数据是被DispatcherServlet拿来给到视图解析器进行继 ...

  8. Spring MVC 中的基于注解的 Controller【转】

    原文地址:http://my.oschina.net/abian/blog/128028 终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 H ...

  9. Spring MVC中基于注解的 Controller

         终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响 ...

随机推荐

  1. 清理tomcat服务器缓存

    据悉,2014年最流行的应用服务器排行榜揭晓Tomcat仍然处于领先位置.41%的部署使用的是Tomcat,和2013年的43%的市场份额数据一 致.下面还是我们的热门选择Jetty和JBoss/Wi ...

  2. Linux学习9-CentOS搭建nginx环境

    前言 之前我们搭建网站的时候,把war包放到tomcat下就能运行起来了,为什么部署上线的时候,又用到了nginx呢? nginx可以做多台服务器的负载均衡,当用户非常少的时候,可以用一台服务直接部署 ...

  3. Java 集合系列之 Vector详细介绍(源码解析)和使用示例

    Vector简介 Vector 是矢量队列,它是JDK1.0版本添加的类.继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口. Vector 继承 ...

  4. 如何在 Xcode 中修改应用的名字

    找到 TARGETS 中的 Build Setting ,下拉找到 Packaging ,修改 Product Name 即可.

  5. 一幅图秒懂LoadAverage(负载)

    转自:http://www.habadog.com/2015/02/27/what-is-load-average/ 一幅图秒懂LoadAverage(负载)   一.什么是Load Average? ...

  6. JavaScript中的方法、方法引用和参数

    首先,我们来看一段代码,如果觉得不甚明白的,则本文会对你有益: var player = function (e) {             return (function f(m) {      ...

  7. ECC校验

    ECC的全称是 Error Checking and Correction or Error correction Coding,是一种用于差错检测和修正的算法.NAND闪存在生产和使用中都会产生坏块 ...

  8. SpringMVC request生命周期

    When the request leaves the browser, it carries information about what the user is asking for. At ve ...

  9. pchar,pwidechar,pansichar作为返回参数时内存访问错误

    function Test:pachr: var   str: string; begin   str := 'Test Char';   result:=pchar(str); end; 上面的Te ...

  10. Threejs 开发3D地图实践总结【转】

    Threejs 开发3D地图实践总结   前段时间连续上了一个月班,加班加点完成了一个3D攻坚项目.也算是由传统web转型到webgl图形学开发中,坑不少,做了一下总结分享. 1.法向量问题 法线是垂 ...