SpringMVC(四) - SpringMVC 的数据响应

1. SpringMVC 的数据响应方式

(1)页面跳转

        直接返回字符串

        通过ModelAndView 对象返回

(2)回写数据

        直接返回字符串

        返回对象或集合

2. 页面跳转 - 返回字符串

3. 页面跳转 - 返回ModelAndView 形式1

        在Controller 中方法返回ModelAndView 对象,并且设置视图名称。

    @RequestMapping(value = "/quick2")
    public ModelAndView save2(){
        /*
            Model:模型,作用封装数据
            View:视图,作用展示数据
         */
        ModelAndView modelAndView = new ModelAndView();
        // 设置模型数据
        modelAndView.addObject("username","it");
        // 设置视图名称
        modelAndView.setViewName("success");
        return modelAndView;
    }

4. 页面跳转 - 返回ModelAndView 形式2

        在Controller 中方法形参上直接声明ModelAndView,无需在方法中自己创建,在方法中直接使用该对象设置视图,同样可以跳转页面。

    @RequestMapping(value = "/quick3")
    public ModelAndView save3(ModelAndView modelAndView){
        modelAndView.addObject("username","it");
        modelAndView.setViewName("success");
        return modelAndView;
    }


    @RequestMapping(value = "/quick4")
    public String save4(Model model){
        model.addAttribute("username","it");
        return "success";
    }

5. 页面跳转 - 返回ModelAndView 形式3(不常用)

        在Controller 中方法形参上直接使用原生的HTTPServletRequest 对象,只需声明即可。

    @RequestMapping(value = "/quick5")
    public String save5(HttpServletRequest request){
        request.setAttribute("username","it");
        return "success";
    }

6. 回写数据 - 直接回写字符串

        通过SpringMVC 框架注入的response 对象,使用response 回写数据,此时不需要视图跳转,业务方法返回值为void

    @RequestMapping(value = "/quick6")
    public void save6(HttpServletResponse response) throws IOException {
        response.getWriter().print("hello SpringMVC");
    }

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

    @RequestMapping(value = "/quick7")
    @ResponseBody
    public String save7(){
        return "hello SpringMVC";
    }

7. 回写数据 - 直接回写json 格式字符串

        使用json 转换根据jackson 进行转换

     @RequestMapping(value = "/quick8")
    @ResponseBody
    public String save8() {
        return "{\"username\":\"zhangsan\",\"age\":18}";
    }

    @RequestMapping(value = "/quick9")
    @ResponseBody
    public String save9() {
        User user = new User();
        user.setUsername("lisi");
        user.setAge(30);

        ObjectMapper om = new ObjectMapper();
        String json = om.writeValueAsString(user);

        return json;
    }

8. 回写数据 - 返回对象或集合

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

    <!--配置处理器映射器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.cbor.MappingJackson2CborHttpMessageConverter"/>
            </list>
        </property>
    </bean>
    @RequestMapping(value = "/quick10")
    @ResponseBody
    public User save10() {
        User user = new User();
        user.setUsername("lisi");
        user.setAge(30);

        return user;
    }

注意:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值