Spring MVC方法的返回值类型

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自动转换

猜你喜欢

转载自www.cnblogs.com/whtt/p/11826041.html