专栏首页王二麻子IT技术交流园地《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值

《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值

上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值。

一、返回ModelAndView

若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回ModelAndView较好。在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而不跳转资源(比如对页面的Ajax异步响应),此时若返回ModelAndView,总有一部分多余,要么Model多余,要么View多余,此时返回ModelAndView不合适。

二、返回String

1:内部资源视图名

在Controller方法中直接返回内部资源视图的名称字符串,如下

@RequestMapping("/toUserList.do")
public String toUserList() throws Exception {
    return "/WEB-INF/jsp/success.jsp";
}

注意返回String时可以配合内部资源视图解析器配置的前缀和后缀一起使用。也可以返回视图对象名,配合XmlViewResolver视图解析器来使用。

三、返回void

1:通过ServletAPI来传递数据并完成跳转。

2:使用Ajax的时候,不需要有返回值。

四、返回Object

处理器方法也可以返回Object对象。但返回的Obejct对象不是作为视图来出现的,而是作为数据在页面直接显示的。返回Object对象,需要配合@ResponseBody注解来使用。如下:

@RequestMapping("/toUserList.do")
@ResponseBody
public String toUserList() throws Exception {
    return new Student();
}

返回Object的时候,还有可能返回List和Map以及自定义类型。这些在处理起来需要前后台配合来开发。下面给出一个例子来说明一下,我们由后台返回一个List<Student>来说明问题。

1:一般返回Object都是将对象转换成了Json后传递给前台浏览器的,由对象转换成Json是由jackson包来完成的。所以我们导入jackson包如下:

jackson-annotations-2.2.3.jar
jackson-core-2.2.3.jar
jackson-databind-2.2.3.jar

2:注册注解驱动

<mvc:annotation-driven />

在springmvc.xml中注册注解驱动后,我们将Controller类的方法稍作修改,如下:

@RequestMapping("/list")
@ResponseBody
public List<Student> list(){
    List<Student> list = new ArrayList<Student>();
    for(int i = 0;i < 5;i++){
        list.add(new Student());
    }
    return list;
}

到此我们就了解了SpringMVC注解式开发处理器方法的各种返回值。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《SpringMVC从入门到放肆》十四、SpringMVC分组数据校验

    上一篇我们学习了数据校验,但是在实际项目中,还是有些不够灵活,今天我们就来继续学习一种更灵活的数据校验方法——分组数据校验。

    I Tech You_我教你
  • HTML出现错位的问题

    引起网页HTML显示错位的几个常见问题:          1、在HTML代码中缺失元素的开始或结束标签          2、CSS设置中对边界、填充或边框的...

    I Tech You_我教你
  • 十、VueJs 填坑日记之在项目中使用Amaze UI

    上一篇博文,我们把jQuery集成到了项目中,今天我们来集成Amaze ui(妹子UI)。先来介绍一下妹子UI。Amaze UI 含近 20 个 CSS 组件、...

    I Tech You_我教你
  • IE8爆出0day,影响所有版本Windows

    日前,安全研究人员发现IE8的0day(CVE-2013-1347)被应用于攻击美国政府的核武器科学家和研究人员中,微软发布警告所有Intern...

    安恒信息
  • 2020年你应该关注这50款前端热门工具:CSS & HTML 工具篇(二)

    大家好,在一篇文章里 2020年让人难以置信的50款前端新工具:JavaScript插件篇(一),我分享了 11 款 JS 插件,本篇文章我将会和大家分享七款 ...

    前端达人
  • 2020年你应该关注这50款前端热门工具:CSS & HTML 工具篇(二)

    大家好,在一篇文章里 2020年让人难以置信的50款前端新工具:JavaScript插件篇(一),我分享了 11 款 JS 插件,本篇文章我将会和大家分享七款 ...

    前端达人
  • 深度学习洪流:为何它能瞬间改变你的生活?(上)

    编者按:我们和电脑之间的交流正在发生着转变,而深度学习也已经润物细无声地进入我们的生活,甚至在你意识到这一点之前,世界已经截然不同。 本文首发于fortune,...

    AI科技评论
  • 【技术】动手实现会写数字的神经网络—半监督学习和生成式对抗网络介绍

    在1889年,梵高画了这个美丽的艺术品:星月夜。如今,我的GAN模型只使用20%的标签数据,学会了画MNIST数字!它是怎么实现的?让我们动手做做看。 ? 半监...

    AiTechYun
  • 陈天奇:深度学习编译技术的现状和未来

    深度学习编译器的部署目标传统的深度学习框架也可以做,一个非常自然的问题是为什么不直接沿用传统的框架。这是一个编译器研究者来往往会忽略的问题。深度学习编译器只有在...

    机器之心
  • Chrome v80 发布:针对 Worker 的 JS 模块支持

    Google 于 2020 年 2 月 4 日星期二发布了 Chrome v80。我一直在等待这个特定版本的发布,它是过去很长时间以来发布的最重要的主要版本。

    疯狂的技术宅

扫码关注云+社区

领取腾讯云代金券