要实现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. ios开发经常使用RGB色值

    iOS中RGB经常使用的色值,同一时候可将对颜色的设置定义成宏,方便开发应用,如: // RGB颜色转换(16进制->10进制) #define UIColorFromRGB(rgbValue) ...

  2. Unity5.x shader打包AssetBundle总结

    最近比较忙,好久没有更新博客了,新项目切换到unity5.x后使用了新的打包机制,在打包shader的时候遇到了一些问题,这里来记录一下吧. 在上一个项目中,我们使用unity4.7,对于shader ...

  3. Kubeadm安装Kubernetes环境

    Kubeadm方式号称一键安装部署,很多人也试过并且顺利成功,可到了我这里因为折腾系统问题,倒腾出不少的坑出来. kubeadm好处是自动配置了必要的服务,以及缺省配置了安全的认证,etcd,apis ...

  4. .NET零基础入门10:打老鼠之数据存储

    一:数据库设计 到此为止,打老鼠游戏还不能保存每次游戏的成绩,我们今天完成的任务就是要存储成绩到SQLSERVER的数据库中. 在上节课中,我们已经知道了如何创建数据库,所有,先创建数据库" ...

  5. Node.js SDK与fabric链码交互开发

    1.本篇背景 前面已经对链码开发作了比较详细的介绍,并且对官方提供的 fabcar 链码进行了解读,本篇将介绍如何使用 Node.js SDK 与区块链网络中的链码进行交互. 本篇内容基本来自官方 H ...

  6. 【UOJ Round #1】

    枚举/DP+排列组合 缩进优化 QAQ我当时一直在想:$min\{ \sum_{i=1}^n (\lfloor\frac{a[i]}{x}\rfloor + a[i] \ mod\ x) \}$ 然而 ...

  7. Asp.net WebAPI Request参数验证-请不要重复造轮子

    随着web客户端的发展,现在很多公司都有专业的前端开发,做到系统前后端分离.ap.net后端典型的就是采用webapi,但是发现很多时候大家对webapi并不了解,这里我们来说说输入参数的验证.前一段 ...

  8. [leetcode]Gas Station @ Python

    原题地址:https://oj.leetcode.com/problems/gas-station/ 题意: There are N gas stations along a circular rou ...

  9. [leetcode]Palindrome Partitioning @ Python

    原题地址:https://oj.leetcode.com/problems/palindrome-partitioning/ 题意: Given a string s, partition s suc ...

  10. AS 阿里巴巴Java开发规约 CheckStyle-IDEA

    Alibaba Java Coding Guidelines 简介 github地址:https://github.com/alibaba/p3c  官方文档    阿里巴巴Java开发手册(纪念版) ...