六、Spring MVC之返回数据

前面几篇文章重点说明了一下怎么从前台传递参数到目标方法,还没有说怎么把结果返回给前台。本篇来讲述一下spring mvc怎么返回结果数据。

从使用形式上看,有以下几种方式:ModelAndView、Map、Model,这几种方式都可以返回数据到前台,本质上来看都是通过map的形式返回数据的。本系列文章着重于使用,深层次的原因,感兴趣的同志可以去调适源代码,这里只是结合使用方式,做简单的样例和分析。

1、ModelAndView的使用

/**
 * 方法的返回值可以是ModelAndView类型,它可以包含视图和模型信息
 * spring mvc会把模型信息放入到request域对象中,可以跟踪源码调试
 * 这个类org.springframework.web.servlet.view.AbstractView
 * 这个方法exposeModelAsRequestAttributes
 * @return
 */
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView() {
    ModelAndView modelAndView = new ModelAndView("success");
    modelAndView.addObject("name", "Jack use ModelAndView");
    return modelAndView;
}

2、Map的使用

/**
 * 使用map返回数据,实际上是实例化了一个
 * org.springframework.validation.support.BindingAwareModelMap
 * @param map
 * @return
 */
@RequestMapping("/testMap")
public String testMap(Map<String, Object> map) {
    System.out.println(map.getClass().getName());
    map.put("name", "Jack use Map");
    return "success";
}

3、Model的使用,本质上与map一样

/**
 * 使用model和使用map一样,都是实例化了一个
 * org.springframework.validation.support.BindingAwareModelMap
 * @param model
 * @return
 */
@RequestMapping("/testModel")
public String testModel(Model model) {
    System.out.println(model.getClass().getName());
    model.addAttribute("name", "Jack use Model");
    return "success";
}

4、SessionAttributes的使用,可以把数据存放到session域中去,有两个属性,value和types,value执行需要放到会话中的属性的属性名,types指定需要放到会话中的属性的类型。

在类上添加注解:

@SessionAttributes(value = {"user"}, types = {String.class})

目标方法的定义

/**
 * 注解SessionAttribute可以通过属性名指定需要放到会话中的属性,实际上通过value属性
 * 还可以通过types指定哪些类型的属性需要放到会话中去
 * 但是该注解只能用于类上
 * @param map
 * @return
 */
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Map<String, Object> map) {
    User user = new User();
    user.setAge(15);
    user.setUserName("lxy");
    map.put("user", user);
    map.put("name", "jack in sessionAttribute");
    return "success";
}

项目源代码:

https://git.oschina.net/acesdream/spring-mvc

时间: 2024-12-27 23:00:39

六、Spring MVC之返回数据的相关文章

mvc ajax_返回数据

假设cshtml文件中是这样的:<script type="text/javascript"> $(document).ready(function(){ $("#btn").click(function(){ $.ajax({ type: 'POST', url: "/Home/MyAjax", data: { val1: $("#txt1").val(), val2: $("#txt2").

Spring MVC中返回JSON数据的几种方式

我们都知道Spring MVC 的Controller方法中默认可以返回ModeAndView 和String 类型,返回的这两种类型数据是被DispatcherServlet拿来给到视图解析器进行继续处理返回页面的,而不是直接返回给客户端的.有时候我们需要发请求后让服务端直接返回一些数据,不再经过DispatcherServlet,这个时候通常有两种方式: 1.使用@ResponseBody注解 该注解的作用是把方法返回结果转成json或xml格式并进行返回,不管要返回什么类型的数据,是Str

Spring MVC Rest 返回值为空

 问题描述: 采用Spring Restful ,可以通过浏览器的地址栏URL正确访问后台且不报错误,但是前台总是获取不到数据,前台也是收到了后台的响应,就是没有数据. 具体如下: 采用 Spring Restful 对不同的格式,可以发送不同格式化的数据,比如Json.XML.HTML..... 对于配置文件如下: 参考 Spring MVC Rest 学习 一:http://my.oschina.net/heweipo/blog/337581 参考Spring MVC Rest 学习 二:h

Spring MVC前后端数据交互总结

控制器 作为控制器,大体的作用是作为V端的数据接收并且交给M层去处理,然后负责管理V的跳转.SpringMVC的作用不外乎就是如此,主要分为:接收表单或者请求的值,定义过滤器,跳转页面:其实就是servlet的替代品. - append Spring MVC在Web应用中扮演V的角色,负责处理HTTP请求并返回相应的资源,它在用的时候要配置一个核心的Dispatcher负责检查资源,请求过来的时候会查找是否有相应的Handler,有就会把请求交给Controller,一般使用注解来配置暴露给用户

[Spring MVC] @ResponseBody返回结果乱码问题的解决

发现问题 在Controller类方法上加@ResponseBody,直接返回字符串,结果乱码. 如下所示: MockHttpServletResponse: Status = 200 Error message = null Headers = {Content-Type=[text/plain;charset=ISO-8859-1], Content-Length=[45]} Content type = text/plain;charset=ISO-8859-1 Body = { "Msg

解决Spring MVC @ResponseBody返回中文字符串乱码问题

引起乱码原因为spring mvc使用的默认处理字符串编码为ISO-8859-1,具体参考org.springframework.http.converter.StringHttpMessageConverter类中public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1"); 解决方法: 第一种方法: 对于需要返回字符串的方法添加注解,如下: @RequestMapping(value=&quo

spring MVC之返回JSON数据(Spring3.0 MVC)

方式一:使用ModelAndView的contentType是"application/json" 方式二:返回String的            contentType是"text/html" 那么如何设置response的content type呢? 使用注解@RequestMapping 中的produces: @RequestMapping(value = "/upload",produces="application/jso

spring Mvc json返回json的日期格式问题

(一)输出json数据 springmvc中使用jackson-mapper-asl即可进行json输出,在配置上有几点: 1.使用mvc:annotation-driven 2.在依赖管理中添加jackson-mapper-asl <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version

解决Spring MVC @ResponseBody返回html中中文字符串乱码问题

最近有个应用,通过responsebody返回完整的html页面时出现乱码是异常的问题,因为是通过responsebody返回,所以一开始设置了text/plain的字符集,如下: <mvc:annotation-driven>     <mvc:message-converters register-defaults="true">    <bean class="org.springframework.http.converter.Strin