SSM框架学习笔记之SpringMVC(二)

SpringMVC的数据响应

1.SpringMVC数据响应的方式

(1)页面跳转

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

(2)回写数据

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

2.页面跳转

(1)返回字符串形式
直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转
SSM框架学习笔记之SpringMVC(二)
(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>

测试截图:
SSM框架学习笔记之SpringMVC(二)

代码示例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>

测试截图:
SSM框架学习笔记之SpringMVC(二)

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

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


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

测试截图:
SSM框架学习笔记之SpringMVC(二)

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

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


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

测试截图:
SSM框架学习笔记之SpringMVC(二)
注意!这种方法不常用,因为既然使用了框架,就尽量使用框架为我们提供的东西。

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未改动,上文有

测试截图:
SSM框架学习笔记之SpringMVC(二)

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

代码示例:

//UserController.java

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

测试截图:
SSM框架学习笔记之SpringMVC(二)

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

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

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

测试截图:
SSM框架学习笔记之SpringMVC(二)

代码示例:
//直接回写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未改动,上文有

测试截图:
SSM框架学习笔记之SpringMVC(二)
(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;
    }

测试截图:
SSM框架学习笔记之SpringMVC(二)
    在方法上添加@ResponseBody就可以返回json格式的字符串,但是这样配置比较麻烦,配置的代码比较多,因此,我们可以使用mvc的注解驱动代替上述配置

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

测试截图:
SSM框架学习笔记之SpringMVC(二)

上一篇:ASP.NET MVC-访问api进行可视化增删改查


下一篇:HashMap的扩容机制, ConcurrentHashMap和Hashtable主要区别