心耘博客 | ZLPRIME-磊落平生志,破浪去乘风 心耘博客 | ZLPRIME-磊落平生志,破浪去乘风
  • 首页
  • 朝花夕拾
    • 光影记录
    • 生活随笔
  • 代码如诗
    • 100 Days of SwiftUI
    • 后端技术
    • 服务器配置
  • 影集
  • 关于我
  • 更多
    • 专题汇总
    • 友情链接
    • 留言板
  • 0
  • 0

SpringMVC的数据响应形式

心耘
3 年前

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

1.页面跳转

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

2.回写数据

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

一、页面跳转

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

SpringMVC的数据响应形式
    @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 方法的参数进行注入,就可以设置我们想要的转换形式。

SpringMVC的数据响应形式
        <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
0
SpringMVC中视图解析器的简答配置
上一篇
SpringMVC静态资源访问的开启
下一篇

评论 (0)

再想想
暂无评论

心耘

73
文章
167
评论
93
喜欢

标签

centos (13) java (22) jenkins (7) linux (12) lombok (1) maven (1) mysql (3) redis (2) rocky linux (3) spring (8) wordpress (5) 发布 (3) 实用技巧 (7) 教程 (6) 服务器配置 (3) 生活 (5) 部署 (2)

聚合文章

生活杂记(一)
家电选购小结-空调
十一带娃心得
通过War包升级Jenkins版本

专题推荐

7

Jenkins合集

12

服务器配置

猜你喜欢

通过War包升级Jenkins版本

通过War包升级Jenkins版本

1 年前
416 0 0
配置Jmeter的Perfmon插件

配置Jmeter的Perfmon插件

2 年前
543 0 0
为JMeter安装插件

为JMeter安装插件

2 年前
542 0 0
Mac中安装并启动Jmeter

Mac中安装并启动Jmeter

2 年前
714 0 2

简介

海边微风起,等风也等你

留言板

留言板

小伙伴们

2Broear 乙末博客 若志随笔 豆豆 诗意笔记 元のDiary
Copyright © 2017-2025 心耘博客 | ZLPRIME-磊落平生志,破浪去乘风. 皖ICP备17019582号
  • 首页
  • 朝花夕拾
    • 光影记录
    • 生活随笔
  • 代码如诗
    • 100 Days of SwiftUI
    • 后端技术
    • 服务器配置
  • 影集
  • 关于我
  • 更多
    • 专题汇总
    • 友情链接
    • 留言板

搜索

  • java
  • spring

心耘

73
文章
167
评论
93
喜欢