`

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

 
阅读更多

spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。下面将对具体的一一进行说明:
ModelAndView

 

Java代码  收藏代码 

 

@RequestMapping("/show1") 
public ModelAndView show1(HttpServletRequest request, 
           HttpServletResponse response) throws Exception { 
       ModelAndView mav = new ModelAndView("/demo2/show"); 
       mav.addObject("account", "account -1"); 
       return mav; 
   }  

 

 

通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面 ,
使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字。
调用addObject()方法将值设置到一个名为ModelMap的类属性,ModelMap是LinkedHashMap的子类,
具体请看类。

Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。

Map 

 

Java代码  收藏代码
    @RequestMapping("/demo2/show") 
        public Map<String, String> getMap() { 
            Map<String, String> map = new HashMap<String, String>(); 
            map.put("key1", "value-1"); 
            map.put("key2", "value-2"); 
            return map; 
        }  
 

 


在jsp页面中可直通过${key1}获得到值, map.put()相当于request.setAttribute方法。
写例子时发现,key值包括 - . 时会有问题.

View 可以返回pdf excel等,暂时没详细了解。

String 指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。
注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。
例如:

 

Java代码  收藏代码
    @RequestMapping(value = "/something", method = RequestMethod.GET) 
    @ResponseBody 
    public String helloWorld()  { 
    return "Hello World"; 
    }  
 

 


上面的结果会将文本"Hello World "直接写到http响应流。

 

Java代码  收藏代码
    @RequestMapping("/welcome") 
    public String welcomeHandler() { 
      return "center"; 
    }  
 

 


对应的逻辑视图名为“center”,URL= prefix前缀+视图名称 +suffix后缀组成。

void  如果返回值为空,则响应的视图页面对应为访问地址

 

Java代码  收藏代码
    @RequestMapping("/welcome") 
    public void welcomeHandler() {}  
 

 


此例对应的逻辑视图名为"welcome"。

小结:
1.使用 String 作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。
2.使用void,map,Model 时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。
3.使用String,ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称。

 

 

 

 

 

 

 

Model model,HttpServletRequest request, ModelMap map声明变量

request.getSession().setAttribute("test", "haiwei2Session");
request.setAttribute("test", "haiwei1request");
map.addAttribute("test", "haiweiModelMap");
model.addAttribute("test", "haiweiModel");

我通过${test}这个方式取值,优先取Model和ModelMap的,Model和ModelMap是同一个东西,谁最后赋值的就取谁的,然后是request,最后是从session中获取

分享到:
评论

相关推荐

    SpringMVC笔记.pdf

    SpringMVC提供了多种方式来共享数据,包括使用ServletAPI、ModelAndView、Model、Map、ModelMap等方式。 六、SpringMVC的视图 SpringMVC提供了多种视图,包括ThymeleafView、转发视图、重定向视图等。 七、...

    SpringMVC model和session

    SpringMVC session的存值和取值

    SpringMVC之Model接口

    // 将数据放置到 ModelMap 对象 model 中,第二个参数可以是任何 java 类型 model.addAttribute("key", someparam); // 省略其他逻辑 // 返回跳转地址 return "path:handleok"; } ``` 而 ModelAndView 对象的...

    1、手写springmvc框架及分析springmvc源码.zip

    1、手写springmvc框架及分析springmvc源码.zip1、手写springmvc框架及分析springmvc源码.zip1、手写springmvc框架及分析springmvc源码.zip1、手写springmvc框架及分析springmvc源码.zip1、手写springmvc框架及分析...

    基于springMVC的session拦截器

    基于springMVC拦截session中的某个值,一般情况下用于拦截session中用户信息是否存在

    SpringMVC面试专题.pdf

    19、怎么样把 ModelMap 里面的数据放入 Session 里面? 20、SpringMvc 怎么和 AJAX 相互调用的? 21、当一个方法向 AJAX 返回特殊对象,譬如 Object,List 等,需要做什么处理? 22、SpringMvc 里面拦截器是怎么写的 23...

    SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi

    SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi

    springmvc基础.docx

    springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器、视图解析器 3. springmvc入门程序 目的:对前端控制器、处理器映射器、处理器...

    SpringMVC-Spring-Maven 登录、model、view实例

    不需要数据库交互,包括登录验证功能,以及Model/ModelMap/Map/ModelAndView与页面交互

    浅谈SpringMVC中的session用法及细节记录

    SpringMVC中的Session用法及细节记录 SpringMVC中Session的用法是开发者经常遇到的一个问题,本文将详细介绍Session在SpringMVC中的用法及细节记录。 Session的保存方式 在SpringMVC中,有两种方式保存Session...

    SpringMVC 传递 和 返回对象实例 以及 zTree例子

    SpringMVC 传递 和 返回对象实例 以及 zTree例子 SpringMVC 传递 和 返回对象实例 以及 zTree例子

    jsp 显示springmvc modelmap传递的对象详细介绍.docx

    jsp 显示springmvc modelmap传递的对象详细介绍.docx

    springmvc案例源码 session 增删改查 登录案例.zip

    springmvc案例源码 session 增删改查 登录案例 含有mybatis知识 适合出学制了解学习使用SpringMVC SSM学习框架

    SpringMVC.docx

    在Controller方法中,可以通过Model、ModelMap或者ModelAndView对象来传递数据到结果页面。例如,可以在方法参数中使用这些对象,添加属性,然后在JSP页面上通过EL表达式(${...})来获取这些值。 综上所述,SSM框架...

    SpringMVC界面跳转及参数传递.docx

    3. **Model和ModelMap**:这两个都是Spring提供的类,它们与Map类似,但提供了更多的便利功能,如自动类型转换和绑定。`Model`和`ModelMap`的主要区别在于`ModelMap`继承了`Map`,因此可以方便地添加多个模型对象。 ...

    分析springmvc源码(2).zip

    分析springmvc源码(2).zip分析springmvc源码(2).zip分析springmvc源码(2).zip分析springmvc源码(2).zip分析springmvc源码(2).zip分析springmvc源码(2).zip分析springmvc源码(2).zip分析springmvc源码(2).zip分析...

    分析springmvc源码(5).zip

    分析springmvc源码(5).zip分析springmvc源码(5).zip分析springmvc源码(5).zip分析springmvc源码(5).zip分析springmvc源码(5).zip分析springmvc源码(5).zip分析springmvc源码(5).zip分析springmvc源码(5).zip分析...

    【狂神SpringMVC配套课程代码】SpringMVC.zip

    【狂神SpringMVC配套课程代码】一共8个模块,大概可以看我的博客,都是自己学配套整理的 欢迎大家作为学习SpringMVC的参考!! 下面附上狂神B站课程网址,和我的博客笔记(共8章) 狂神老师B站课程:...

    springmvc4.2中文文档

    springmvc4.2中文文档springmvc4.2中文文档springmvc4.2中文文档springmvc4.2中文文档springmvc4.

Global site tag (gtag.js) - Google Analytics