处理器方法的返回值

使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类
型:

 第一种:ModelAndView
 第二种:String
 第三种:无返回值 void

 第四种:返回自定义类型对象

1.返回 ModelAndView

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

2.返回 String

处理器方法返回的字符串可以指定逻辑视图名,通过视图解析器解析可以
将其转换为物理视图地址

返回内部资源逻辑视图名

若要跳转的资源为内部资源,则视图解析器可以使用
InternalResourceViewResolver 内部资源视图解析器。此时处理器方法返回的
字符串就是要跳转页面的文件名去掉文件扩展名后的部分。这个字符串与视图
解析器中的 prefix、suffix 相结合,即可形成要访问的 URI。

直接修改处理器类 MyController

 

当然,也可以直接返回资源的物理视图名。不过,此时就不需要再在视图
解析器中再配置前辍与后辍了。

 

3.返回 void(了解即可,不做详细描述)

4.返回对象 Object

处理器方法也可以返回 Object 对象。这个 Object 可以是 Integer,
String,自定义对象,Map,List 等。但返回的对象不是作为逻辑视图出现
的,而是作为直接在页面显示的数据出现的。
返回对象,需要使用@ResponseBody 注解,将转换后的 JSON 数据放入
到响应体中。

A、环境搭建

由于返回 Object 数据,一般都是将数据转化为了 JSON 对象后传递给浏览
器页面的。而这个由 Object 转换为 JSON,是由 Jackson 工具完成的。所以
需要导入 Jackson 的相关 Jar 包。

 B、 声明注解驱动

将 Object 数据转化为 JSON 数据,需要由消息转换器
HttpMessageConverter 完成。而转换器的开启,需要由<mvc:annotation-
driven/>来完成。
SpringMVC 使用消息转换器实现请求数据和对象,处理器方法返回对象和
响应输出之间的自动转换
当 Spring 容器进行初始化过程中,在<mvc:annotation-driven/>处创建
注解驱动时,默认创建了七个 HttpMessageConverter 对象。也就是说,我
们注册<mvc:annotation-driven/>,就是为了让容器为我们创建
HttpMessageConverter 对象。

 4.1返回自定义类型对象

返回自定义类型对象时,不能以对象的形式直接返回给客户端浏览器,而
是将对象转换为 JSON 格式的数据发送给浏览器的。
由于转换器底层使用了 Jackson 转换方式将对象转换为 JSON 数据,所以
需要导入 Jackson 的相关 Jar 包

4.1.1 定义数据类

4.1.2 修改处理器 MyController

 

4.1.3 修改 index 页面

 

4.2 返回 List 集合

4.2.1 修改处理器 MyController

4.2.2 修改 index 页面

 

4.3 返回字符串对象 

若要返回非中文字符串,将前面返回数值型数据的返回值直接修改为字符
串即可。但若返回的字符串中带有中文字符,则接收方页面将会出现乱码。此
时需要使用@RequestMapping 的 produces 属性指定字符集。
produces,产品,结果,即该属性用于设置输出结果类型

直接修改处理器。

修改页面:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值