`

spring mvc 处理方法的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void

阅读更多

ModelAndView

Java代码  
 
1 @RequestMapping("/show1")  
2 publicModelAndView show1(HttpServletRequest request,  
3            HttpServletResponse response) throwsException {  
4        ModelAndView mav = newModelAndView("/demo2/show");  
5        mav.addObject("account", "account -1");  
6        returnmav;  
7    }  

 

 

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

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

Map  

Java代码  
1 @RequestMapping("/demo2/show")  
2     public Map<String, String> getMap() {  
3         Map<String, String> map = newHashMap<String, String>();  
4         map.put("key1", "value-1");  
5         map.put("key2", "value-2");  
6         return map;  
7     }  

 


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

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

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

Java代码  
1 @RequestMapping(value = "/something", method = RequestMethod.GET)  
2 @ResponseBody  
3 publicString helloWorld()  {  
4 return"Hello World";  
5 }  

 


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

Java代码  
1 @RequestMapping("/welcome")  
2 publicString welcomeHandler() {  
3   return"center";  
4 }  

 


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

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

Java代码  
1 @RequestMapping("/welcome")  
2 publicvoidwelcomeHandler() {}  

 


此例对应的逻辑视图名为"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中获取

分享到:
评论

相关推荐

    Spring MVC 3.0实战指南.ppt

    访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 视图解析器类型 基于协商的视图解析器 ...

    springmvc关于modelAndView的使用详细

    关于springmvc中的ModelAndView的详细代码,可以更好的了解spring。

    Spring MVC 入门实例

    这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...

    Spring3MVC注解教程.ppt

    访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 视图解析器类型 基于协商的视图...

    java spring mvc

    主控制器调用Controller方法处理请求,(对DB操作可以调用DAO组件),方法执行后返回一个ModelAndView对象结果 d.ModelAndView里包含了响应View和数据信息,主控制器调用ViewResolver视图解析器根据ModelAndView的内容...

    SpringMVC ModelAndView、Model及Map、@SessionAttributes场景与应用

    SpringMVC ModelAndView、Model及Map、@SessionAttributes场景与应用

    SpringMVC Controller 返回值的可选类型详解

    本篇文章主要介绍了SpringMVC Controller 返回值的可选类型详解 ,spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void,有兴趣的可以了解一下

    spring mvc 思维导图

    Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。...

    Spring ModeAndView

    ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。  最简单的ModelAndView是持有View的名称返回,之后...

    Spring ModelAndView

    Spring mvc ModelAndView Serviceresponse ibatis

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

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

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

    Spring MVC 学习笔记

    6、 View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术; 7、最后返回到DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。

    SpringMVC处理模型数据-2.docx

    – Map及Model: 入参为org.springframework.ui.Model、org.springframework.ui.ModelMap 或 Java.uti.Map 时,处理方法返回时,Map中的数据会自动添加到模型中。 – @SessionAttributes: 将模型中的某个属性暂...

    Spring MVC 员工管理系统

    ④ 处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和渲染视图时需要用到的模型数据对象; ⑤ 由于ModelAndView中包含的是视图逻辑名,DispatcherServlet必须...

    spring+spring Mvc+mybatis+layui实现数据表格的增删改查

    这是通过ssm+layui 实现的简单的对数据表格的增删改查,所有页面纯由layui实现。如果你是新手学习layui,那这个绝对会对你有很大的帮助; 如果你之前已经学过甚至已经使用过,那这个可以当做一个参考

    SSM框架测试题以及答案解析.docx

    B:控制器处理方法的返回值若为: ModelAndView, 在处理方法的方法体内,除了通过setViewNam e()或者setView()设置视图,还必须通过addobject( 0)添加模型数据 c: Mode1AndView的addobject ()方法跟addA110...

    基于框架的Web开发-处理数据模型、转发和重定向.docx

    如果控制器的处理方法返回的是ModelAndView对象,方法体可以向这个对象中添加模型数据和视图。例如之前的例子: @RequestMapping(path="/detail/{userName}") public ModelAndView showDetail(@PathVariable(...

    springmybatis

    mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in action之八mybatis 动态sql语句 mybatis实战教程mybatis in ...

    springmvc demo

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发...

Global site tag (gtag.js) - Google Analytics