zlprime zlprime
  • 首页
  • 朝花夕拾
    • 摄影
    • 读书
    • 生活
    • 随笔
  • 技能分享
    • WordPress
  • 其它
    • 游记地图
    • 闲言碎语
    • 阅读书单
    • 友情链接
    • 留言板
  • Java
首页 › Java › SpringMVC的数据响应形式

SpringMVC的数据响应形式

Stone
10月前Java
815 0 0

SpringMVC的数据响应形式主要分为两大类,一种是根据返回结果进行页面跳转,另一种是返回回写数据。具体分类如下:

1.页面跳转

  • 直接返回字符串
  • 通过ModelAndView对象返回

2.回写数据

  • 直接返回字符串
  • 返回对象或集合

一、页面跳转

1.直接返回字符串:直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转。

    @RequestMapping(value = "/save",method = RequestMethod.GET,params = {"username"})
    public String save(){
        System.out.println("Save running");
        return "success";
    }

2.返回ModelAndView对象

    //返回ModelAndView对象    
    @RequestMapping(value = "/quick")
    public ModelAndView quick(){
        ModelAndView modelAndView = new ModelAndView();
        /*
        *   Model:模型,用于封装数据
        *   View:视图, 用于展示数据
        * */
        //设置模型数据
        modelAndView.addObject("username","zhanglei");
        //设置视图名称
        modelAndView.setViewName("success");
        return modelAndView;
    }
    
     /*
    * SpringMVC会自动根据方法的参数值进行注入
    * 所以ModelAndView可以是形参,SpringMVC会自动帮你创建实体对象进行调用。
    * */
    @RequestMapping(value = "/quick1")
    public ModelAndView quick1(ModelAndView modelAndView){
        modelAndView.addObject("username","zhang");
        modelAndView.setViewName("success");
        return modelAndView;
    }
    
     /*
     * 视图根据返回字符串
     * Model以形参的形式,由SpringMVC创建,并在其中传入数据
     * */
    @RequestMapping(value = "/quick2")
    public String quick2(Model model){
        model.addAttribute("username","sun");
        return "success";
    }

二、回写数据

1.直接返回字符串

使用ResponseBody注解,告知SpringMVC框架,该方法不根据返回字符串进行跳转,直接将字符串在http响应体中返回

    @RequestMapping(value = "/quick4")
    @ResponseBody //告知SpringMVC框架该方法不进行视图跳转,直接进行数据响应
    public String quick4(){
        return "success";
    }

2.返回对象或集合

我们可以直接通过SpringMVC将对象或集合中的数据转换成json。但是需要为处理器适配器配置消息转换参数,指定使用jackson进行对象或集合的转换。想要使用jackson对对象或集合进行转换,首先要导入jackson的坐标:

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

SpringMVC的默认处理器适配器是 RequestMappingHandlerAdapter ,在该类中提供了 setArgumentResolvers 方法用于对参数转换进行设置,其传入的参数是一个List对象。我们只需在springMVC的配置文件中,对该类的setArgumentResolvers 方法的参数进行注入,就可以设置我们想要的转换形式。

        <bean id="myAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
                <property name="messageConverters">
                        <list>
                                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
                        </list>
                </property>
        </bean>

这样设置之后,我们在处理器(@Controller)中,直接返回实体对象。SpringMVC会自动将里面的信息封装为JSON对象,然后进行返回。

    @RequestMapping(value = "/quick6")
    @ResponseBody
    public User quick6() throws Exception {
        User user = new User();
        user.setAge(18);
        user.setName("zhang");
        return user;
    }

也可以在SpringMVC的配置文件中,直接使用 <mvc:annotation-driven> ,mvc的注解驱动,取代刚才在SpringMVC配置文件中的相关配置。使用 <mvc:annotation-driven>自动加载 RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter( 处 理 适 配 器 ),并且默认底层就会集成jackson进行对象或集合的json格式字符串的转换。

但是需要引入一下约束文件,才能使用

<!--设置约束文件-->
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven />
java spring ssm
0
本文系作者 @Stone 原创发布在 zlprime。未经许可,禁止转载。
SpringMVC中视图解析器的简答配置
上一篇
SpringMVC静态资源访问的开启
下一篇
评论 (0)
再想想
聚合文章
JDBC的使用总结
5月前
Centos8中安装RabbitMQ
5月前
集合之Map集合
5月前
Collections集合工具类和可变参数
5月前
相关文章
JDBC的使用总结
Centos8中安装RabbitMQ
集合之Map集合
Collections集合工具类和可变参数
简介

海边微风起,等风也等你

留言板
留言板
小伙伴们
2Broear Libra の 向往 云帆沧海 若志随笔 豆豆 Chuanbo
Copyright © 2017-2023 zlprime. 皖ICP备17019582号
  • 首页
  • 朝花夕拾
    • 摄影
    • 读书
    • 生活
    • 随笔
  • 技能分享
    • WordPress
  • 其它
    • 游记地图
    • 闲言碎语
    • 阅读书单
    • 友情链接
    • 留言板
热门搜索
  • java
  • spring
Stone
67 文章
139 评论
83 喜欢
  • 0
  • 0
  • Top