SpringMVC四种响应传值的方式

1、返回值为void类型

  使用方法的参数requesr和response进行数据分享和页面跳转

 @RequestMapping("/test1")
public void test1(HttpServletRequest request, HttpServletResponse response) throws Exception{
      //通过request和response控制页面和共享数据
      request.setAttribute("msg","你好,太阳");
      request.getRequestDispatcher("views/test.jsp").forward(request,response);
}

2、返回值为ModelAndView类型

  使用控制ModelAndView对象进行数据共享和页面的跳转

@RequestMapping("/test2")
public ModelAndView test2(){
      //通过moderAndView对象控制页面和共享数据
      ModelAndView mv = new ModelAndView();
      mv.setViewName("test");
      mv.addObject("msg","你好,月亮");
      return mv;
}

3、返回值为String类型

  使用方法的参数model进行数据共享,使用返回的字符串控制页面的跳转,可以使用试图解析器自动补充前后缀

@RequestMapping("/test3")
public String test3(Model model){
      //使用model对象进行共享数据,使用返回的字符串进行控制页面
      model.addAttribute("msg","你好,星星");
      model.addAttribute(new User("qq","123"));
      return "test";
}

  当返回的字符串使用forward或redirect控制重定向或请求转发时,视图解析器将不再会添加前缀后缀。

@RequestMapping("/test4")
public String test4(Model model){
      //使用forward和redirect可以控制重定向或请求转发,此时不会再加前后缀
      model.addAttribute("msg","你好,星星");
      model.addAttribute(new User("qq","1234"));
      return "forward:views/test.jsp";
}

4、返回值为对象类型

  返回的对象可以在页面上拿到,key为返回的对象类型首字母小写,可以使用@ModelAttribute("别名")修改共享对象的key值

  返回的页面的路径为请求的路径+视图解析器拼接的后缀

@RequestMapping("/test5")
public User test5(){
      //使用访问路径名+.jsp作为返回路径
      return new User("mike","xxxx");
}

  这种方法一般与JSON连用,返回JSON格式的对象字符串

  MVC的注解解析器支持使用@RequestBody和@ResponseBody读写JSON。

  需要先导入依赖

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.6</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.6</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.6</version>
        </dependency>

  在方法上使用@ResponseBody,会将返回的对象以字符串格式返回

@[email protected]@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Employee {  //在转换成JSON格式时忽略该属性   @JsonIgnore
    private Integer id;
    private String name;
    //在转换成JSON格式时进行格式化
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    //在转换成JSON格式时起别名
    @JsonProperty("gender")
    private Boolean sex;
    //使返回的字符串按照自己设定的格式格式集合即可
    public Map toJsonMap(){
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Map map = new HashMap();
        map.put("id",this.id);
        map.put("name",this.name);
        map.put("birthday",format.format(this.birthday));
        map.put("gender",this.sex);
        return map;
    }
}
@RequestMapping("/test8")
@ResponseBody
public Employee test8(){
     return new Employee(1,"张三",new Date(),true);
}
@RequestMapping("/test9")
@ResponseBody
public Object test9(){
    Employee employee = new Employee(1,"张三",new Date(),true);
    return employee.toJsonMap();
}

原文地址:https://www.cnblogs.com/xfdhh/p/11517485.html

时间: 2024-10-10 16:58:12

SpringMVC四种响应传值的方式的相关文章

servlet的四种响应

在一个servlet的请求中,响应的方式的通常有四式,response.getWriter(),response.getOutputStream(), request.getRequestDispatcher("ajax.jsp").forward(request, response) 和 response.sendRedirect("ajax.jsp") . 其中 response.getWriter() 输出页面 response.getOutputStream

转 四种操作xml的方式(SAX, DOM, JDOM, DOM4J)比较

四种操作xml的方式(SAX, DOM, JDOM, DOM4J)比较 (2010-10-29 15:31:28) 转载▼  http://blog.sina.com.cn/s/blog_6458bf440100mgjs.html 标签: 杂谈 分类: JAVA技术 1 介绍 引子:XML自从出现以来,以其可扩展性.自描述性.自相容性等优点,被誉为信息标准化过程的有力工具,基于XML的标准将成为以后信息标准的主流.伴随而生的是针对XML的操作技术,“名人总的有人去解析”吗!下面是愚人对目前主要的

四种保存数据的方式

转载地址:http://blog.csdn.net/tianyitianyi1/article/details/7713103 在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:

java中的四种单例实现方式

在java中,单例设计模式是非常常见的设计模式,对单例设计模式的概念,不做过多的介绍,下面将逐一介绍四种单例设计模式: 1.第一种单例设计模式 1.1 代码实现 package com.singleton.one; /**  * 第一种单例设计模式  * @author Administrator  *  */ public class SingleTonOne { // 实例化 private static SingleTonOne instance = new SingleTonOne();

oracle四种访问数据库的方式

1.sql plus——命令操作: 数据库自带的命令工具,通过此工具可以在dos窗口中直接对数据库进行操作.使用此工具有两种进入方式: (1).在安装后的数据库下有一个应用程序开发,子目录里有一个sql plus,直接单击打开,就可以输入用户名.密码登录数据库进行操作. (2).直接打开windows的dos窗口(win键+R—>cmd命令回车进入),输入sql plus命令然后输入用户名密码即可以进入. 2.sql developer——图形化界面操作: 数据库自带的图形化操作工具,通过该工具

springMVC 前后台日期格式传值解决方式之二(共二) @InitBinder的使用

关于springmvc日期问题的解决方式 除了本博客的[springMVC 前后台日期格式传值解决方式之 @DateTimeFormat的使用和配置]一文, 还有如下这种方式: 在Controller里加上这段代码: 1 @InitBinder 2 public void initBinder(ServletRequestDataBinder binder) { 3 /** 4 * 自动转换日期类型的字段格式 5 */ 6 SimpleDateFormat sdf = new SimpleDat

tp-02 四种url访问的方式

1:http://localhost/index.php?m=模块&c=控制器&a=操作方法 [get模式] 2:http://localhost/index.php/模块[模块文件夹]/控制器/操作方法 [pathinfo模式] 3:http://localhost/模块[模块文件夹]/控制器/操作方法 [rewite重写模式] 4:http://localhost/index.php?s=/模块[模块文件夹]/控制器/操作方法 [兼容模式] 具体的url模式 在ThinkPHP/con

属性传值,协议传值,block传值,单例传值四种界面传值方式

一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N + 1界面传值.而在此基础上,必须知道跳转界面的明确位置及所要传的值的具体类型.在第二个界面中声明所要传值 类型的属性. @interface SecondViewController : UIViewController //声明一个字符串属性来保存第一个界面传过来的字符串内容 @propert

Tomcat的四种web应用部署方式详解

在Tomcat中有四种部署Web应用的方式,简要的概括分别是: (1)利用Tomcat自动部署 (2)利用控制台进行部署 (3)增加自定义的Web部署文件(%Tomcat_Home%\conf\Catalina\localhost\AppName.xml) (4)手动修改%Tomcat_Home%\conf\server.xml文件来部署web应用 第一种方式:利用Tomcat自动部署 利用Tomcat自动部署方式是最简单的.最常用的方式.若一个web应用结构为D:\workspace\WebA