SpringMVC回写数据方式方法

x33g5p2x  于2022-07-14 转载在 Spring  
字(4.0k)|赞(0)|评价(0)|浏览(511)

回写数据

1、直接返回字符串

将字符串转成json格式回传到客户端

2、直接返回对象或集合      

使用SpringMVC自动将对象或集合转化为json格式

注解方式优化转化json

mvc命名空间

回写数据

1、直接返回字符串

Web基础截断,客户端访问服务器端,如果想直接回写字符串作为响应题返回的话,只需要使用response.getWrite().print("KCandZH")即可,所以在Controller中想直接回写字符串,可以直接在方法中写入response。
方法1:通过SpringMVC框架注入的response对象,使用response.getWrite().print("hello")回写数据,此时不需要视图跳转,业务方法返回值为void

//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="user")
public class userController {
    @RequestMapping("/quick6")
    public void save6(HttpServletResponse response) throws IOException {
        response.getWriter().print("hello itcase");

    }
}

②将需要回写的字符串直接返回,但需要通过**@ResponseBody**注解告知SpringMVC框架,方法返回的字符串不是跳转某个视图,而是直接在http响应体重返回。(加上则不会进行前后缀拼接)

//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="user")
  @ResponseBody//告诉SpringMVC框架不进行视图跳转,而是直接进行数据响应
public class userController {
    @RequestMapping("/quick7")
    public String  save7(HttpServletResponse response) throws IOException {
        return "hello itcase";

    }
}

将字符串转成json格式回传到客户端

user类下

package com.pojo;

public class User {
    private int age;
    private String username;

    public User() {

    }
    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String username) {
        this.username = username;
    }
}

userController类下

//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="user")
    public class userController {
        @RequestMapping("/quick9")
        @ResponseBody
        public String save9() throws JsonProcessingException {
            User user=new User();
            user.setAge(30);
            user.setName("lisi");
        //使用json的转换工具将对象转换成json格式字符串再返回
            ObjectMapper objectMapper=new ObjectMapper();
            String json = objectMapper.writeValueAsString(user);
            return json;
        }
}

    要使用json转换工具,还得导入依赖

<!-- 导入json相关依赖       -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>

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

运行结果

2、直接返回对象或集合      

使用SpringMVC自动将对象或集合转化为json格式

通过SpringMVC帮助我们对对象或集合进行json字符串的转换并回写,为处理器适配器配置消息转换参数是,指定使用jackson进行对象或集合的转换,因此需要在spring-mvc.xml中进行这样配置
配置spring-mvc.xml中处理器映射器

<!--配置处理器映射器 (将指定的对象或集合转为json格式)   -->
    <bean             class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
            </list>
        </property>
    </bean>

 在userController类中                                                                                                             

//配置类,使用注解把这个类放到容器中
@Controller

@RequestMapping(value="user")
    public class userController {

    @RequestMapping("/quick10")
    @ResponseBody
    //配置完成处理器映射器后,SpringMVC会将USer转化为json格式
    public User save10() throws JsonProcessingException {
        User user=new User();
        user.setAge(32);
        user.setName("lisi2");

        return user;
    }
}

运行结果

 注解方式优化转化json

在方法上添加@ResponseBody就可以返回json格式的字符串,但是这样配置比较麻烦,配置的代码比较多,因此,我们可以使用mvc的注解驱动代替上述配置。

<!--mvc的注解驱动-->
<mvc:annotation-driven/>

在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC的三大组件。使用mvc:annotation-driven自动加载RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter(处理适配器),可用在Spring-xml.xml配置文件中使用mvc:annotation-driven替代注解处理器和适配器的配置。
同时使用<mvcannotation-driven>默认底层就会集成jackson进行对象或集合的json格式字符串的转换

 mvc命名空间

因为使用了mvc命名空间,所以得导入mvc

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                      
                            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

在spring-mvc.xml配置文件中

<!--    配置注解驱动-->
    <mvc:annotation-driven/>

这样就完成了注解配置

相关文章