微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSM框架学习笔记之SpringMVC二

SpringMVC的数据响应

1.SpringMVC数据响应的方式

(1)页面跳转

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

(2)回写数据

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

2.页面跳转

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

在这里插入图片描述

(2)返回ModelAndView对象

代码示例1:

//UserController.java

    @RequestMapping("quick")
    public ModelAndView save(){
        /*
           Model:模型
           作用:封装数据
           View:视图
           作用:展示数据
        */
        ModelAndView modelAndView = new ModelAndView();
        //设置模型数据
        modelAndView.addobject("username","小C");
        //设置视图
        modelAndView.setViewName("success");
        return modelAndView;
    }

//success.jsp

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

测试截图:

在这里插入图片描述

代码示例2:

//也可以采用形参的方式
//UserController.java

    @RequestMapping("quick2")
    public ModelAndView save2(ModelAndView modelAndView){
        //设置模型数据
        modelAndView.addobject("username","小C的save2");
        //设置视图
        modelAndView.setViewName("success");
        return modelAndView;
    }

//success.jsp

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

测试截图:

在这里插入图片描述

代码示例3:
//也可以采用形参的方式
//UserController.java

    @RequestMapping("quick3")
    public String save3(Model model){
        model.addAttribute("username","小C的save3");
        return "success";
    }


//success.jsp未改动,上文有

测试截图:

在这里插入图片描述

代码示例4:
//也可以采用形参的方式
//UserController.java

    @RequestMapping("quick4")
    public String save4(HttpServletRequest request){
        request.setAttribute("username","小C的save4");
        return "success";
    }


//success.jsp未改动,上文有

测试截图:

在这里插入图片描述


注意!这种方法不常用,因为既然使用了框架,就尽量使用框架为我们提供的东西。

3.回写数据

(1)直接返回字符串
    ①通过SpringMVC框架注入的response对象,使用response.getWriter().print(“hello world”)回写数据,此时不需要视图跳转,业务方法返回为void

代码示例:

//UserController.java

    @RequestMapping("quick5")
    public void save5(HttpServletResponse response) throws IOException {
        response.getWriter().print("Hello World! save5");
    }

//success.jsp未改动,上文有

测试截图:

在这里插入图片描述

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

代码示例:

//UserController.java

    @RequestMapping("quick6")
    @ResponseBody   //告知Spring框架不进行视图跳转,直接进行数据响应
    public String save6() throws IOException{
        return "hello save6";
    }
    
//success.jsp未改动,上文有

测试截图:

在这里插入图片描述

代码示例:
//直接回写字符串
//UserController.java

    @RequestMapping("quick7")
    @ResponseBody //告知Spring框架不进行视图跳转,直接进行数据响应
    public String save7() throws IOException{
        return "{\"username\":\"xiaoc\",\"age\":18}";
    }

//success.jsp未改动,上文有

测试截图:

在这里插入图片描述

代码示例:
//直接回写json格式字符串
//UserController.java

    @RequestMapping("quick8")
    @ResponseBody //告知Spring框架不进行视图跳转,直接进行数据响应
    public String save8() throws IOException{
        User user = new User();
        user.setUsername("小C");
        user.setAge("18");
        //使用json的转换工具将对象转换成json格式的字符串再返回
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsstring(user);
        return json;
    }
//success.jsp未改动,上文有

测试截图:

在这里插入图片描述


(2)返回对象或集合

代码示例:

//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"></bean>
            </list>
        </property>
    </bean>

//UserController.java
    //期望SpringMVC自动将User转换成json格式的字符串
    @RequestMapping("quick9")
    @ResponseBody //告知Spring框架不进行视图跳转,直接进行数据响应
    public User save9() throws IOException{
        User user = new User();
        user.setUsername("XC");
        user.setAge("18");
        return user;
    }

测试截图:

在这里插入图片描述


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

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

测试截图:

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐