zoukankan      html  css  js  c++  java
  • 055_SSM——sprinMVC的返回值

    ch04-return-result: 处理返回值。 处理器方法的返回值。
    处理器方法的返回值表示本次请求的处理结果的。
    一个用户发起了请求,希望得到是数据和视图。 通过视图展示数据, 例如在jsp显示查询的结果。

    常用的4类返回值:
    1.ModelAndView
    特点: 有数据和视图两个部分, 如果你的请求需要得到数据和视图,使用ModelAndView最方便。
    对视图执行的是forward转为行为。
    如果你的请求结果只用到视图或者只用数据,使用ModelAndView有些大材小用了。

    2.String: 表示视图, 只表示视图。 框架对返回值的视图执行forward转发行为
    视图两种: 1. 逻辑视图。 2.完整视图路径。

    3.void:了解, 通过void返回值不能表示视图,也不能表示数据。
    可以在ajax请求中, 使用void。 因为ajax请求本身只需要数据,和视图无关。
    可以使用HttpServletResponse输出数据,响应ajax请求。

    使用json作为数据格式,需要在pom.xml加入jackson的依赖
    使用jquery发起ajax请求,需要加入jquery.js文件

    当我是void返回值的时候,我不借助框架将对象转换成json数据,也不借助@ResposeBody响应给浏览器,

    这两步我全在void方法中写了

    4.Object:重点, 返回值是对象,对象表示数据的,和视图无关.
    ajax请求需要的数据,不需要视图。 所以处理器方法返回对象适合ajax的使用场景

    @RequestMapping("/return-void-ajax2.do")
    public Student doSome(String name,Integer age){

    Student student = new Student();
    student.setName("lisi");
    student.setAge(20);
    return student

    }

    框架如何实现把java对象转为json字符串,并通过HttpServletResponse输出给浏览器 ?
    1.实现把java对象转为json字符串,借助HttpMessageConverter接口
    HttpMessageConverter是spring中的接口,翻译过来叫做消息转换器。

    HttpMessageConverter接口的功能其一是:把处理器方法返回的java对象转为你需要的各种数据格式。
    可以转为json,转为xml,转为text,转为二进制等等(而这种数据格式我并没有设置,应该是放在request的请求头中,然后框架在转换的时候,自己从request中哪了出来,并不经我们程序员的手)

    #**********************************************************#
    开发人员需要做的是:在springmvc配置文件中加入一个叫做注解驱动的语句: <mvc:annotation-driven />
    <mvc:annotation-driven />作用是告诉框架创建HttpMessageConverter接口的7个实现类对象,放到内存中使用。
    #**********************************************************#

    接口中方法的功能:
    1)boolean canWrite(Class<?> var1, MediaType var2)
    判断第一个参数的值能否转为var2表示的数据格式,简单的说就是能不能把var1转为var2的数据格式
    例如把student对象转为json。 能转换为var2,方法返回true,其他返回false

    MediaType:媒体类型,表示数据格式的, 类似response.setContentType("application/json")

    2) void write(T var1, MediaType var2, HttpOutputMessage var3)
    执行把var1转为var2表示的数据格式。
    例如 把student对象转为json数据格式

    HttpMessageConverter接口有很多实现类,处理不同的数据格式, 处理json格式有实现类,
    处理text格式有实现类, 处理xml数据有实现类。
    掌握的实现类:
    1.) StringHttpMessageConverter, 当你的处理器方法返回是String时,框架使用这个类
    默认编码方式是iso-8859-1
    public String doSome(String name,Integer age){

    return "hellospringmvc";

    }

    2.) MappingJackson2HttpMessageConverter,当你需要把java对象转为json格式数据,框架使用此类
    默认编码方式是:utf-8
    需要把lisi的student转为json,使用此类
    public Student doSome(String name,Integer age){

    Student student = new Student();
    student.setName("lisi");
    student.setAge(20);
    return student

    }


    MappingJackson2HttpMessageConverter工作方式:内部使用jackson工具库的ObjectMapper,完成
    java对象到json的转为,所以你的项目中需要加入 jackson依赖。

    2。实现json数据通过HttpServletResponse输出到浏览器。
    @ResponseBody:放在方法的上面使用的,作用是执行:
    PrintWriter pw = response.getWriter();
    pw.print(json);
    pw.flush();
    pw.close();

    ====================================================================
    springmvc方法返回是java对象,转为json,需要怎么做?
    1.加入jackson依赖
    2.在springmvc配置文件加入<mvc:annotation-driven/>
    3.在处理器方法的上面加入@ResponseBody注解

  • 相关阅读:
    Notepad++语言格式设置,自定义扩展名关联文件格式
    Windows使用SSH Secure Shell实现免密码登录CentOS
    如何从jks文件中导出公私钥
    tomcat运行监控脚本,自动启动
    2016年统计用区划代码和城乡划分代码(截止2016年07月31日)
    jquery动态出操作select
    阿里负载均衡的一个坑~~~备忘
    神奇的空格
    centos安装tomcat7.0.70
    驱动相关的内核函数分析
  • 原文地址:https://www.cnblogs.com/pogusanqian/p/12427877.html
Copyright © 2011-2022 走看看