SpringMVC笔记(三): 数据响应

数据响应的方式

页面跳转
直接返回字符串

这种方法会将返回的字符串与视图解析器的前后缀拼接后跳转
SpringMVC笔记(三): 数据响应_第1张图片
返回带有前缀字符串:
转发:forward :/WEB-INF/view/index.jsp
重定向: redirect: /index.jsp

再spring-mvc.xml中配置内部资源解析器


    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        
        <property name="prefix" value="/jsp/">property>
        <property name="suffix" value=".jsp">property>
    bean>
通过ModelAndView对象返回

Model : 模型—>封装数据
View: 视图–>展示数据

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/quick2")//请求映射
    public ModelAndView save2(){
       ModelAndView modelAndView = new ModelAndView();
       //设置模型数据
        modelAndView.addObject("username","wu");
       //设置视图名称
        modelAndView.setViewName("success");
       return modelAndView;
    }

SpringMVC笔记(三): 数据响应_第2张图片
ModelAndView的方式2

@RequestMapping(value = "/quick3")//请求映射
    public ModelAndView save3(ModelAndView modelAndView){
        modelAndView.addObject("username","wu");
        modelAndView.setViewName("success");
        return modelAndView;
    }

原始方式

	@RequestMapping(value = "/quick5")//请求映射
    public String save5(HttpServletRequest request){
        request.setAttribute("username","wuyongzhao");
        return "success";
    }

回写数据
直接返回字符串

Web基础阶段, 客户端访问服务器, 如果想直接回写字符串作为响应体返回的话, 只需使用response.getWriter().print( “hello world” )即可

在Controller中回写字符串:

①通过Spring MVC框架注入response对象, 使用response.getWriter().print("hello world ")回写数据,此时不需要视图跳转, 业务方法返回值为void

	@RequestMapping(value = "/quick6")//请求映射
    public void save6(HttpServletResponse response) throws IOException {
       response.getWriter().print("hello world");
    }

②将需要回写的字符串字节返回, 但此时需要通过@ResponseBody注解告知SpringMVC框架, 方法返回的字符串不是跳转是直接在http响应体中返回

	@RequestMapping(value = "/quick7")//请求映射
    @ResponseBody//告知SpringMVC框架不进行视图跳转, 直接进行数据响应
    public String save7() throws IOException {
        return "hello world";
    }
直接回写Json格式字符串
	@RequestMapping(value = "/quick8")//请求映射
    @ResponseBody
    public String save() throws IOException {
        return "{\"username\":\"zhangsan\",\"age\":18}";
    }

下面通过对象的形式来回写json数据格式

  1. 在pom.xml中导入json 的坐标
	
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-coreartifactId>
            <version>2.9.0version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>2.9.0version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-annotationsartifactId>
            <version>2.9.0version>
        dependency>
  1. 准备好对象
package com.domain;

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

回写成json格式

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping(value = "/quick9")//请求映射
    @ResponseBody
    public String save9() throws IOException {
        User user = new User();
        user.setName("lisi");
        user.setAge(18);
        //使用json转换工具: 将对象转换成json格式的字符串
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(user);
        return json;
    	}
	}

SpringMVC笔记(三): 数据响应_第3张图片

返回对象或集合

在spring-mvc.xml中配置处理器映射器

	
    <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>
@Controller
@RequestMapping("/user")
public class UserController {

    //返回对象或集合
    //期望SpringMVC自动将User转换成json格式字符串
    @RequestMapping(value = "/quick10")//请求映射
    @ResponseBody
    public User save10() throws IOException {
        User user = new User();
        user.setName("lisi");
        user.setAge(20);

        return user;
    }
}

在方法上添加@ResponseBody就可以返回json格式的字符串, 但是这样配置比较麻烦, 配置的代码比较多, 因此我们可以使用mvc的注解驱动替代上述配置
在这里插入图片描述
在SpringMVC的各个组件中, 处理器映射器, 处理器适配器, 视图解析器称为 SpringMVC的三大组件

使用 自动加载RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter(处理器适配器), 可用在Spring-mvc.xml配置文件中使用 替代注解处理器和适配器的配置

同时使用默认底层就会集成Jackson进行对象或集合的json格式字符串的转换

具体操作

在spring-xml文件中相对应的位置加上这两行配置代码

 xmlns:mvc="http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd

SpringMVC笔记(三): 数据响应_第4张图片
在spring-xml文件中加上 , 并把先前的配置处理器映射器的代码注释调
在这里插入图片描述
启动服务器
SpringMVC笔记(三): 数据响应_第5张图片

你可能感兴趣的:(Spring,SpringMVC,spring,Java,xml,tomcat)