(二十二)处理器方法返回值:ModelAndView、String、void、Object

一、返回ModelAndView(视图+数据)

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

二、返回String(视图)

内部资源视图名

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

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

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

三、返回void

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

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

四、返回Object

区分String是数据还是视图,看处理器方法的上面是否有@ResponseBody注解,有代表数据;无代表视图

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

@ResponseBody:将数据输出到浏览器(输出到应答体中)

@RequestMapping("/toUserList.do")
@ResponseBody
public String toUserList() throws Exception {
    return "hello SpringMVC HttpMessageConverter";
}

但是此时的Response中Content-Type:text/plain;charset=ISO-8859-1,从而出现中文乱码情况,通过下面方式对服务端进行编码

@RequestMapping(value="some.do",produces="text/plain;charset=utf-8")

<mvc:annotation-driven />

 

五、面试题

如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

答:直接在方法的形参声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面。

 

转载自:http://www.cnblogs.com/xinhudong/p/10556899.html

posted @ 2019-04-02 17:39  测试开发分享站  阅读(328)  评论(0编辑  收藏  举报