`
tanghui
  • 浏览: 7332 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

springMVC 返回类型选择

 
阅读更多

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"


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

Java代码  收藏代码
  1. @RequestMapping("/welcome"
  2. public String welcomeHandler() { 
  3.   return "center"


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

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

Java代码  收藏代码
  1. @RequestMapping("/welcome"
  2. 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接收和返回参数各种情况整合

    2. **异常处理:** 在处理前端传来的数据时,应当考虑到可能出现的异常情况,如数据类型不匹配等,并作出相应的处理。 3. **安全性考虑:** 对于敏感信息的传输,应当采取加密措施,确保数据安全。 以上就是关于...

    SpringMVC返回图片的几种方式(小结)

    SpringMVC返回图片的几种方式小结 在SpringMVC中,返回图片的方式有多种,主要包括返回二进制图片、返回图片的HTTP地址、返回base64格式的图片、直接返回二进制的图片等。下面是对这些方式的详细介绍。 I. 返回二...

    SpringMVC.pdf

    Controller类通常用@Controller注解标识,用来处理具体的请求,返回相应的视图名称或数据。视图页面则利用JSP、HTML等技术,展示数据或提供交互界面。配置文件中,需要声明组件扫描路径、视图解析器等,确保...

    springmvc返回json用到的jar包

    - 方法的返回类型可以是`Map, Object&gt;`、自定义的Java对象或者`String`(如果JSON字符串已经构建好)。Jackson库会自动将这些类型转换为JSON格式。 5. **数据转换**: - 如果你的返回类型是自定义Java对象,那么...

    SpringMVC 方法四种类型返回值总结(你用过几种)

    主要介绍了SpringMVC 方法四种类型返回值总结(你用过几种),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    springmvc实战项目sample

    SpringMVC支持多种视图技术,如JSP、FreeMarker、Thymeleaf等,可以根据项目需求选择合适的视图技术。 8. **国际化与主题** SpringMVC提供国际化和主题支持,通过`ResourceBundleMessageSource`和`ThemeSource`...

    springMVC教案.rar

    SpringMVC允许定义全局或特定类型的异常处理器,通过@ControllerAdvice和@ExceptionHandler注解实现。 8. **视图解析**: 视图解析器如InternalResourceViewResolver,负责根据视图名查找实际的视图资源。例如,...

    SpringMVC学习编程代码

    对于异常处理,SpringMVC提供了`@ExceptionHandler`注解,可以用来捕获并处理特定类型的异常,创建统一的错误页面或返回JSON响应。 在实际项目中,我们可能还需要配置拦截器(Interceptor),它们可以对请求和响应...

    SpringMVC+Mybatis demo

    3. **HandlerAdapter**:适配不同的Controller,确保DispatcherServlet可以调用任何类型的Controller方法。 4. **ViewResolver**:解析逻辑视图名到实际视图,如JSP页面。 在"SpringMVC+Mybatis demo"中,Service层...

    springMVC学习

    本指南提供了 SpringMVC 的核心思想、框架特点、入门示例、参数传递、标签介绍、拦截器、类型转换、JSON 格式数据的输入和输出、文件上传、国际化和本地化、验证等方面的知识点,旨在帮助开发者快速掌握 SpringMVC ...

    尚硅谷SpringMVC部分全套教学文档笔记

    - SpringMVC支持自动将请求参数绑定到Controller的方法参数,这涉及到模型绑定和类型转换。 - 数据绑定可以是简单的类型如字符串,也可以是复杂类型如自定义对象,Spring会自动进行转换。 4. **@ModelAttribute...

    SpringMVC详解

    随着版本的更新,SpringMVC不断引入新的特性和改进,例如SpringMVC 3.1中的生产者、消费者请求限定,增强了对请求类型的控制,使得API设计更加灵活。 以上只是SpringMVC框架的部分内容,实际使用中还包括视图模板...

    燕青老师springmvc的课堂教案

    5. **HandlerAdapter**:处理器适配器允许SpringMVC支持各种类型的控制器。它调用控制器的方法并处理返回的结果。 6. **Controller**:控制器是用户接口与业务逻辑之间的桥梁,接收请求,调用服务层进行处理,并将...

    SpringMVC实战

    10. **MultipartResolver**:处理文件上传的组件,使得SpringMVC可以方便地处理multipart/form-data类型的请求。 11. **RESTful API**:SpringMVC支持创建RESTful风格的Web服务,通过HTTP动词(GET、POST、PUT、...

    springmvc+mybatis+postgresql+maven整合

    它支持多种数据类型,如JSON、数组、几何类型等,并且具有强大的事务处理能力。在Java应用中,我们通常使用JDBC API来连接和操作PostgreSQL数据库,Spring框架提供的JdbcTemplate或JPA等高级接口也可以简化数据库...

    SpringMVC入门最简洁工程

    - `HandlerAdapter`:处理器适配器,确保DispatcherServlet能调用任何类型的Controller。 - `ViewController`:视图控制器,处理逻辑结果并返回视图名。 - `ViewResolver`:视图解析器,将视图名转换为实际的视图...

    SpringMVC demo 完整源码实例下载.zip

    SpringMVC提供MultipartFile接口处理文件上传,而文件下载则可以通过StreamingResponseBody或者直接返回文件路径实现。这些功能的实现涉及了流处理和响应头设置,确保了文件传输的正确性和效率。 异常处理在Web应用...

    手写 springmvc

    5. **ViewResolver**:解析视图名称并返回对应的视图对象,支持多种视图技术如JSP、Freemarker、Thymeleaf等。 6. **AOP(面向切面编程)**:在SpringMVC中,AOP用于实现拦截器、事务管理等功能。手写时需实现切面...

    SpringMVC详细文档,内容通俗易懂,适合学习springMVC的初学者

    - **HandlerAdapter**:处理器适配器,允许SpringMVC支持多种类型的处理器。 - **ModelAndView**:模型和视图,处理器返回的结果,包含了模型数据和视图名称。 - **ViewResolver**:视图解析器,根据逻辑视图名...

Global site tag (gtag.js) - Google Analytics