Spring(四): SpringMVC-数据响应,ModelAndView,Json的使用

一 页面跳转

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

Spring(四): SpringMVC-数据响应,ModelAndView,Json的使用

 @RequestMapping("/quick")
    public String save(){
        System.out.println("Controller save running...");
        return "redirect:/success.jsp";
    }

2.通过ModelAndView

(1)直接返回ModelAndView

手动新建ModelAndView,然后对model和view分别设置

    @RequestMapping("/quick2")
    public ModelAndView save2(){
//       model:模型 封装数据
//       view:视图 展示数据
        ModelAndView modelAndView = new ModelAndView();
//       设置模型数据
        modelAndView.addObject("username","itcast");
//       设置视图名称
        modelAndView.setViewName("index.jsp");
        return modelAndView;
    }

(2)用SpringMVC创建ModelAndView,后对model和view分别设置

    @RequestMapping("/quick3")
    public ModelAndView save3(ModelAndView modelAndView){

//       设置模型数据
        modelAndView.addObject("username","itheima");
//       设置视图名称
        modelAndView.setViewName("index.jsp");
        return modelAndView;
    }

(3)用SpringMVC创建model,后用返回viewname

    @RequestMapping("/quick4")
    public String save4(Model model){

        model.addAttribute("username","itheima");
        return "index.jsp";
    }

(4)用request,将model放入域中,也可以实现页面跳转。传入形参,SpringMVC直接返回实参

    @RequestMapping("/quick5")
    public String save5(HttpServletRequest request){

        request.setAttribute("username","it");
        return "index.jsp";
    }

 (5)对应的index.jsp,如下

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>hello world!</h1>
    <h1>${username}</h1>
</body>
</html>

二 回写数据

1.直接返回字符串 

(1)通过SpringMVC注入response对象,使用response.getWriter().print();回写数据,注意返回值为void

@RequestMapping("/quick6")
    public void save6(HttpServletResponse response) throws IOException {

        response.getWriter().print("hello itcast");
    }

(2)将需要回写的字符串直接返回,但此时需要通过@ResponseBody注解告知SpringMVC框架,方法返回的字符串不是跳转而是直接在http响应体中返回(直接返回视图)重点

    @RequestMapping("/quick7")
    @ResponseBody//告知SpringMVC不进行视图跳转,直接进行数据响应
    public String save7()  {
        return "hello world";
    }

返回结果为: Spring(四): SpringMVC-数据响应,ModelAndView,Json的使用

 (3)可返回Json字符串

可以直接return json字符串,也可以使用接送的转换工具将对象转换成json格式字符串再返回

下面我们只演示后一种情况

首先导包,注意版本要求(2.9以上)

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

而后,创建对象,进行赋值,再将其转换成json格式字符串

 Spring(四): SpringMVC-数据响应,ModelAndView,Json的使用

2.返回对象或集合

(1)我们可以通过SpringMVC帮助我们对对象集合进行json字符串的转换并回写

首先,需要在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>

而后,直接返回对象就可以,即可返回json格式字符串

    @RequestMapping("/quick10")
    @ResponseBody
    public User save10()  {

        User user = new User();
        user.setAge(18);
        user.setName("xiaoming");
        return user;
    }

(2)我们可以利用MVC的注解驱动代码代替上述配置Spring(四): SpringMVC-数据响应,ModelAndView,Json的使用

 首先,我们加载mvc驱动

Spring(四): SpringMVC-数据响应,ModelAndView,Json的使用

 而后,在spring-mvc.xml下进行MVC注解驱动

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

最后,运行程序,就可得到和(1)同样的效果。

上一篇:springboot结合mvc配置controller控制jsp页面


下一篇:SpringMVC的搭建