controller中方法的返回值类型
Object、String、ModelAndView、void
ModelMap、Map、void、map、List、Set...
(用的最多的还是:Object、String、ModelAndView、void)
void:
返回值类型为void时:则只是纯粹的执行了方法中的程序,然后响应的url依然为请求的url
例如案例中请求为index.do 则响应的url为 index 在视图解析器解析之后得到的最终的url为 /WEB-INF/jsp/index.jsp
跟Servlet的方式就差不多了
String:
返回值类型为String时:一般用于返回视图名称
1.当方法返回值为Null时,默认将请求路径当做视图 /jsp/thread/secondRequest.jsp
如果说没有试图解析器,如果返回值为Null携带数据只能用JSON
2.当方法返回一个String的字符串时,当字符串为逻辑视图名时只返回视图,
如果要携带数据则使用request,session或者Json
如果要用Model或者ModelMap传递数据,那么Model或者ModelMap必须是方法入参
3.当方法返回值加入forward的时候代表转发,如果写为redirect:xxxx代表重定向,不是返回视图了
乱码解决:
1.Controller传递数据给页面,在RequestMapping当中指定produces="text/json;charset=utf-8"
2.Controller接收页面数据使用编码过滤器
ModelAndView:
返回值类型为ModelAndView时:model是携带到页面的数据 View是视图
例:
@RequestMapping("/threadRequest*") public ModelAndView threadRequest(){ ModelAndView mv=new ModelAndView(); mv.setViewName("index"); //视图 mv.addObject("user","王五"); //数据 return mv; }
Object:
返回值类型为Object时:
1.当方法返回值为Null时,默认将请求路径当做视图 /jsp/thread/secondRequest.jsp 如果说没有试图解析器,如果返回值为Null携带数据只能用JSON
2.当方法返回值为String类型字符串时,就是视图的逻辑名称
3.当返回对象或者集合数据时,要使用Json格式字符串,可选fastJson手动转换,也可以使用jackson自动转换