SpringMVC(二十三):返回ModelAndView方式

star2017 1年前 ⋅ 305 阅读

  SpringMVC 内部使用了一个org.springframework.ui.Model接口来存储模型数据,该接口的实现类ExtendedModelMap继承了ModelMap,ModelMap 继承了java.util.LinkedHashMap
  SpringMVC 在调用方法之前会创建一个隐含的模型对象,作为模型数据的存储容器。如果处理方法的参数为ModelModelAndView类型,则 SpringMVC 会将隐含模型引用传递给这些参数。

  1. SpringMVC 提供了多种途径输出模型数据

    • Model 和 ModelMap
    • ModelAndView
    • @ModelAttribute
    • @SessionAttributes
      @ModelAttribute@SessionAttributes在后面的参绑定注解里说明。
  2. 常见返回ModelAndView 两种用法。

    • 返回String
    • 返回ModelAndView

示例代码

SpringMVC 返回ModelAndView

@Controller
@RequestMapping("/user")
public class UserController {

    /**
     * 只返回视图(jsp页面:userInfo.jsp)
     * @return
     */
    @RequestMapping("/userInfo")
    public String userInfo() {
        return "userInfo";
    }

    /**
     * 返回视图
     * model封装参数
     * @param model
     * @return
     */
    @RequestMapping("/userInfo1")
    public String userInfo1(Model model) {
        model.addAttribute("name", "张一丰");
        return "userInfo";        
    }

    /**
     * 返回视图
     * ModelMap 封装参数
     * @param model
     * @return
     */
    @RequestMapping("/userInfo11")
    public String userInfo11(ModelMap modelMap) {
        modelMap.addAttribute("name", "张一丰");
        return "userInfo";        
    }

    /**
     * 在ModelAndView的构造方法指定视图名称(viewName)
     * model封装数据
     * 返回的是包含模型和视图的ModelAndView对象
     * @return
     */
    @RequestMapping("/userInfo2")
    public ModelAndView userInfo2() {
        ModelAndView mv = new ModelAndView("userInfo");
        mv.addObject("name", "张二丰");
        return mv;        
    }

    @RequestMapping("/userInfo3")
    public ModelAndView userInfo3() {
        ModelAndView mv = new ModelAndView("userInfo", "name", "张三丰");
        return mv;
    }

    /**
     * 返回ModelAndView model封装数据 设置viewName
     * 
     * @return
     */
    @RequestMapping("/userInfo4")
    public ModelAndView userInfo4() {
        ModelAndView mv = new ModelAndView();
        mv.addObject("name", "张四丰");
        mv.setViewName("userInfo");
        return mv;
    }

    /**
     * 通过构造方法返回ModelAndView,提供了三个构造方法
     * new ModelAndView(String viewName)
     * new ModelAndView(String viewName, Map<String, ?> model)
     * new ModelAndView(String viewName, String modelName, Object modelObject)
     */

jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!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>Spring MVC Controller</title>
</head>
<body>
    <h1>userInfo.jsp</h1>
    <hr>    
    <h3>获取model中数据:${name }</h3>
</body>
</html>
更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: