zoukankan      html  css  js  c++  java
  • (六)springmvc之ModelAndView、Model、Map、ModelMap

    <a href="<%=request.getContextPath()%>/responseData/response_1">使用原生的作用域</a>
        
        <a href="<%=request.getContextPath()%>/responseData/response_2">ModelAndView</a>
        
        <a href="<%=request.getContextPath()%>/responseData/response_3">Model,Map,ModelMap</a>

    controller

    package com.shyroke.controller;
    
    import java.util.Map;
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    @RequestMapping(value = "/responseData")
    public class ResponseDataController {
        @Autowired
        private HttpServletRequest request;
        @Autowired
        private HttpServletResponse response;
        @Autowired
        private HttpSession session;
        @Autowired
        private ServletContext servletContext;
    
        @RequestMapping(value = "/response_1")
        public String response_1() throws Exception {
            this.request.setAttribute("req_key", "Request作用域");
    
            this.session.setAttribute("session_key", "Session作用域");
    
            this.servletContext.setAttribute("app_key", "Application作用域");
    
            return "responseData";
        }
    
        @RequestMapping(value = "/response_2")
        public ModelAndView response_2() throws Exception {
            /**
             * ModelAndView中的数据只保存在Request中。
             */
            ModelAndView mv = new ModelAndView();
            mv.addObject("mv_1", "ModelAndView中的数据1");
            mv.addObject("mv_2", "ModelAndView中的数据2");
    
            mv.setViewName("responseData");
    
            return mv;
        }
    
        /**
         * Model,Map,ModelMap中放入相同的数据,会前后覆盖。
         * 
         * 
         * ModelAndView与上述3个放入相同的数据,最后起作用是ModelAndView中的数据。
         */
        @RequestMapping(value = "/response_3")
        public ModelAndView response_3(Model model, Map map, ModelMap modelMap)
                throws Exception {
            System.out.println("response_3方法");
    
            ModelAndView mv = new ModelAndView();
            mv.addObject("mv_1", "ModelAndView中的数据1");
            mv.addObject("common", "ModelAndView中放入的");
    
            model.addAttribute("model_1", "Model中的数据");
            model.addAttribute("model_2", "Model中的数据2");
    
            map.put("map_1", "Map中的数据1");
            map.put("map_2", "Map中的数据2");
    
            modelMap.addAttribute("modelMap_1", "ModelMap中的数据");
            modelMap.put("modelMap_2", "ModelMap中的数据2");
            modelMap.addAttribute("common", "ModelMap中放入的");
            map.put("common", "Map中放入的");
            model.addAttribute("common", "Model中放入的");
    
            mv.setViewName("responseData");
            return mv;
            // return "responseData";
        }
    
    }
    • ModelAndView中的数据只保存在Request中。
    •  Model,Map,ModelMap中放入相同的数据,会前后覆盖。
    •  ModelAndView与上述3个放入相同的数据,最后起作用是ModelAndView中的数据。

    结果:

  • 相关阅读:
    机器学习(十七)— SVD奇异值分解
    机器学习(十五)— Apriori算法、FP Growth算法
    机器学习(十四)— kMeans算法
    深度学习—反卷积的理解
    【ECMAScript5】ECMAScript5中有关数组的常用方法
    【window】window10永久关闭更新
    【js】使用javascript 实现静态网页分页效果
    【vue】钩子函数生命周期
    【vue】vue中ref用法
    【vue-waring】element UI 由版本1.4.12 升级到element-ui@2.0.10
  • 原文地址:https://www.cnblogs.com/shyroke/p/7776830.html
Copyright © 2011-2022 走看看