java控制器返回视图类型_springMVC对于Controller返回值的可选类型

本文详细介绍了SpringMVC中Controller处理方法的各种返回类型,包括ModelAndView、Model、ModelMap、Map、View、String以及Void。重点讲解了每种类型的使用场景和如何与视图、模型结合,特别是在处理HTTP响应和视图渲染时的不同策略。
摘要由CSDN通过智能技术生成

2018-01-11

对于springMVC处理方法支持支持一系列的返回方式:

(1)ModelAndView

(2)Model

(3)ModelMap

(4)Map

(5)View

(6)String

(7)Void

一、ModelAndView:一个包含模型和视图的ModelAndView 对象。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@RequestMapping(method=RequestMethod.GET)publicModelAndView index(){

ModelAndView modelAndView= new ModelAndView("/user/index");

modelAndView.addObject("xxx", "xxx");returnmodelAndView;

}

View Code

对于ModelAndView构造函数可以指定返回页面的名称,也可以通过setViewName方法来设置所需要跳转的页面;

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@RequestMapping(method=RequestMethod.GET)publicModelAndView index(){

ModelAndView modelAndView= newModelAndView();

modelAndView.addObject("xxx", "xxx");

modelAndView.setViewName("/user/index");returnmodelAndView;

}

View Code

返回的是一个包含模型和视图的ModelAndView对象;

关于ModelAndView的详细介绍请见:http://www.cnblogs.com/javahr/p/8267460.html

二、Model:一个模型对象,主要包含spring封装好的model和modelMap,以及java.util.Map,当没有视图返回的时候视图名称将由requestToViewNameTranslator决定;

三、ModelMap

待续

四、Map

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@RequestMapping("/demo2/show")public MapgetMap() {

Map map = new HashMap();

map.put("key1", "value-1");

map.put("key2", "value-2");returnmap;

}

View Code

响应的view应该也是该请求的view。等同于void返回。

在jsp页面中可直通过${key1}获得到值, map.put()相当于request.setAttribute方法。

五、View

这个时候如果在渲染页面的过程中模型的话,就会给处理器方法定义一个模型参数,然后在方法体里面往模型中添加值。

可以返回pdf excel等,暂时没详细了解。

六、String

对于String的返回类型,笔者是配合Model来使用的。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@RequestMapping(method =RequestMethod.GET)publicString index(Model model) {

String retVal= "user/index";

List users =userService.getUsers();

model.addAttribute("users", users);returnretVal;

}

View Code

指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。

注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@RequestMapping(value="/showdog")publicString hello1(){return "hello";

}

View Code

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@RequestMapping(value="/print")

@ResponseBodypublicString print(){

String message= "Hello World, Spring MVC!";returnmessage;

}

View Code

或者通过配合@ResponseBody来将内容或者对象作为HTTP响应正文返回(适合做即时校验);

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@RequestMapping(value = "/valid", method =RequestMethod.GET)public@ResponseBody

String valid(@RequestParam(value= "userId", required = false) Integer userId,

@RequestParam(value= "logName") String strLogName) {return String.valueOf(!userService.isLogNameExist(strLogName, userId));

}

View Code

关于String.valueOf()方法的使用请见:http://www.cnblogs.com/javahr/p/8267717.html

返回字符串表示一个视图名称,这个时候如果需要在渲染视图的过程中需要模型的话,就可以给处理器添加一个模型参数,然后在方法体往模型添加值就可以了。

如果返回的是对象则会产生一个默认的视图,然后将返回的对象直接解析成JSON,默认视图+JSON生成正文返回。

七、void

当返回类型为void的时候,则

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@Controller

@RequestMapping(value="/type")public class TypeController extendsAbstractBaseController{

@RequestMapping(method=RequestMethod.GET)public voidindex(){

ModelAndView modelAndView= newModelAndView();

modelAndView.addObject("xxx", "xxx");

}

}

View Code

返回的结果页面还是:/type

这个时候我们一般是将返回结果写在了HttpServletResponse 中了,如果没写的话,spring就会利用RequestToViewNameTranslator 来返回一个对应的视图名称。如果这个时候需要模型的话,处理方法和返回字符串的情况是相同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值