`

Spring MVC学习之三:处理方法返回值的可选类型

 
阅读更多

转:http://flyer2010.iteye.com/blog/1294400 有修改

 

spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。下面将对具体的一一进行说明:
ModelAndView
Java代码  收藏代码
  1.     
  2. @RequestMapping ( "/show1" )  
  3. public  ModelAndView show1(HttpServletRequest request,  
  4.            HttpServletResponse response) throws  Exception {  
  5.        ModelAndView mav = new  ModelAndView( "/demo2/show" );  
  6.        mav.addObject("account" "account -1" );  
  7.        return  mav;  
  8.    }  

通过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 = new  HashMap<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. public  String helloWorld()  {  
  4. return   "Hello World" ;  
  5. }  

上面的结果会将文本"Hello World "直接写到http响应流。
Java代码  收藏代码
  1. @RequestMapping ( "/welcome" )  
  2. public  String welcomeHandler() {  
  3.   return   "center" ;  
  4. }  

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

void  如果返回值为空,则响应的视图页面对应为访问地址
Java代码  收藏代码
  1. @RequestMapping ( "/welcome" )  
  2. public   void  welcomeHandler() {}  

此例对应的逻辑视图名为"welcome"。
注意:如果在welcomeHandler的方法列表里加上HttpServletResponse response这个参数的话,就不会返回默认的 welcome.jsp视图.

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

相关推荐

    spring MVC学习笔记

    关于拦截器,在Spring MVC中,拦截器是一种动态拦截处理请求的方法,可以用来进行请求预处理和后处理。拦截器的实现通常需要实现HandlerInterceptor接口,并通过实现其三个方法:preHandle、postHandle和...

    Spring+Spring MVC+MyBatis之零配置之路源代码

    在IT行业中,Spring、Spring MVC和MyBatis是三大非常重要的Java Web开发框架,它们各自在应用程序的不同层次上发挥着关键作用。这个"Spring+Spring MVC+MyBatis之零配置之路源代码"项目旨在展示如何在不使用XML配置...

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

    本文将详细解析Spring MVC Controller支持的多种返回值类型,以及它们各自的用法。 1. ModelAndView `ModelAndView`是Spring MVC提供的一种组合模型数据和视图的类。它允许开发者同时指定视图名称和模型数据。例如...

    java ee期末复习题.docx

    15. Spring MVC 支持的返回值类型:ModelAndView 返回值类型可以添加 Model 数据,并指定视图,String 返回值类型可以携带数据并跳转视图,void 返回类型主要在异步请求时使用,它只返回数据,而不会跳转视图。...

    Spring MVC 学习 之 - URL参数传递详解

    在Spring MVC中,URL参数传递是Web应用程序中常见的数据交互方式之一。本文将深入讲解如何在Spring MVC框架中有效地处理URL参数。 首先,`@Controller`注解用于标记一个类作为Spring MVC的控制器。当应用启动时,...

    spring2.5注解介绍[参考].pdf

    - 返回值可选类型多样,可以是ModelAndView、String、void、自定义对象等,Spring MVC会根据返回值类型自动进行视图渲染或数据处理。 7. **@Cacheable**和**@CacheFlush**:这两个注解用于缓存管理。`@Cacheable`...

    spring 3.0 jar spring最新开发包

    1. **模块化**:Spring 3.0引入了模块化设计,将框架拆分为多个可选模块,便于按需引入,降低了应用的体积和启动时间。 2. **注解支持增强**:Spring 3.0大大增强了对Java注解的支持,如`@Autowired`用于自动装配...

    pringmvcController对app客户端进行请求

    在Spring MVC框架中,Controller是核心组件之一,它负责接收客户端(如APP)的请求,并进行处理后返回响应。本文将深入探讨Spring MVC Controller的工作原理、如何创建与配置,以及如何处理来自APP客户端的请求。 1...

    SpringMVC 常用注解类视频详解

    6. `@RequestParam(value="paramName", required=false)`:`required=false`表示参数可选,如果请求中没有此参数,Spring MVC不会抛出异常。 7. `@ModelAttribute`:主要用于将请求参数绑定到Java对象,通常与表单...

    java微信公众号MVC开发框架

    jwx是开源的java公众号开发MVC框架,基于spring配置文件和微信消息或事件注解,通过微信上下文处理一个或多个微信公众号服务请求。目的主要有两个,其一生封装微信请求xml消息为java实体对象,将返回对象转换为xml...

    WebMvcConfigurer.docx

    `WebMvcConfigurer`接口定义了多个可选的方法,这些方法可以被实现类覆盖来定制Spring MVC的行为。接下来,我们将详细介绍这些方法的功能及用法。 #### 三、方法解析 1. **`configurePathMatch`**: - **功能**:...

    restful-web-services:Spring Boot课程代码

    - JWT(JSON Web Tokens):可选的身份验证机制,用于生成安全的令牌。 8. **测试**: - Spring Boot测试支持:@SpringBootTest、@WebMvcTest等注解用于不同层次的测试。 - MockMVC:模拟MVC层,进行单元测试。 ...

    dwr入门+springmvc实现

    它的最新版本DWR0.6添加许多特性如:支持Dom Trees的自动配置,支持Spring(JavaScript远程调用spring bean),更好浏览器支持,还支持一个可选的commons-logging日记操作. 其大概开发过程如下: 1.编写业务代码,该...

    Struts2的总结和Strut2集成Spring

    Struts2提供了丰富的标签库,支持AJAX,且与各种第三方框架(如Spring和Hibernate)有良好的兼容性。它通过拦截器机制处理请求,使得业务逻辑和Web层分离,易于维护和扩展。 #### Struts2中实现动态Action 动态...

    Spring+Hibernate+Struts工作原理

    Hibernate还提供了缓存机制,包括一级缓存(SessionFactory级别的缓存,每个Session操作的对象会缓存在此)和二级缓存(可选,用于跨Session共享数据,可以使用第三方缓存实现如EhCache)。 【Hibernate优化策略】 ...

    freemarker语法 亲自收集整理

    `&lt;#include filename&gt;`引入指定的FTL文件,可选参数`options`用于设置编码和解析方式。例如: ```html &lt;h1&gt;Some text&lt;#include "common/copyright.ftl" parse=false encoding="UTF-8"&gt;&lt;/h1&gt; ``` 4. **其他常用...

    ModelAttribute注解详细使用.docx

    这个注解支持一个可选的属性`value`,该属性类型为`String`,用来指定绑定到Model对象上的属性名称。如果未指定,则默认使用方法名作为属性名。 #### 二、`@ModelAttribute`的执行时机 一个关键点需要注意的是,当...

    写一个框架的详细步骤.doc

    - **零配置**:默认设置符合最佳实践,提供可选的配置选项。 - **无依赖**:除了Servlet外,不依赖其他类库,降低依赖风险。 - **多层次拦截器**:Action、Controller和Global级别,增强控制流。 - **多样化...

    Ajax资料.rar

    3. **设置请求头**(可选):通过`setRequestHeader()`方法,可以设置请求头信息,如Content-Type。 4. **发送请求**:使用`send()`方法发送请求,GET请求通常不需传递参数,POST请求则需将数据作为参数传入。 5. **...

Global site tag (gtag.js) - Google Analytics