• Spring MVC之Action返回类型



    Spring MVC支持的方法返回类型
      1)ModelAndView 对象。包含Model和View对象,可以通过它访问@ModelAttribute注解的对象。
      2)Model 对象。仅包含数据访问,通过 RequestToViewNameTranslator 来隐蔽地决定此请求返回的View视图对象。
      3)Map对象。和Model相似。
      4)View对象。仅包含视图数据,而model数据隐含在@ModelAttribute注解标注的对象中、或者Command对象中(方法参数的Model对象)。
      5)String 值。表示View视图的名称。数据信息的保存同上。
      6)void类型。当开发都直接操作ServletResponse / HttpServletResponse进行请求跳转,或者View由 RequestToViewNameTranslator 隐蔽地决定时,可使用此返回值。
      7)任意对象。如果方法被@ResponseBody注解,可采用此值。Spring会使用HttpMessageConverters将对象转化成文本输出。
      8)HttpEntity<?>或ResponseEntity<?> 对象。使用此值,Spring也会使用HttpMessageConverters将对象转化成文本输出。
      9)Callable<?>对象。异步请求时使用。
      10)DeferredResult<?>对象。当Spring决定使用选择的某个线程产生值时可以使用此对象。

    1、返回String 值。


    1)没有@ResponseBody等其他注解
      String值表示视图名称,model数据隐含在@ModelAttribute注解标注的对象中、或者Command对象中(方法参数的Model对象)。
      解析成真正的视图名称规则为:prefix前缀+视图名称 +suffix后缀(前缀、后缀在Spring配置文件中设定)。

      @RequestMapping(value="/index.do")
      public String index() throws Exception {
        return "login";
      }

    2)有@ResponseBody注解。作为内容输出:将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。
      @RequestMapping(value="/index.do")
      @ResponseBody
      public String index() throws Exception {
        return "login";
      }

    2、返回void类型。
      当开发都直接操作ServletResponse / HttpServletResponse进行请求跳转,或者View由 RequestToViewNameTranslator 隐蔽地决定时,可使用此返回值。

    1)输出流中不存在内容,View由 RequestToViewNameTranslator 隐蔽地决定
      @RequestMapping(value="/index.do")
      public void index() throws Exception {
      
      }
      结果返回的jsp页面为“控制器路径+index.jsp”

    2)输出流存在输出内容
      @RequestMapping(value="/login.do")
      public void login(HttpServletResponse response) throws Exception {
        response.getWriter().write("<h2>hello world</h2>");
      }

    3、返回ModelAndView
      包含Model和View对象,可以通过它访问@ModelAttribute注解的对象。
      @RequestMapping(value="/login.do")
      public ModelAndView login() throws Exception {
        ModelAndView modelAndView=new ModelAndView("login");
        return modelAndView;
      }

    4、返回Model 或者 Map
      仅包含数据访问,通过 RequestToViewNameTranslator 来隐蔽地决定此请求返回的View视图对象(同void)。
      当返回结果为Map时,相当于只是返回了Model,并未指定具体的视图。
      @RequestMapping(value="/login.do")
      public Map<String, Object> login() throws Exception {
        Map<String, Object> model=new HashMap<String,Object>();
        model.put("message", "Hello Map");
        model.put("other", "more item");
        return model;
      }

    5、返回任意类型
      如果方法被@ResponseBody注解,可采用此值,否则会报错。

    6、其他:比较少用,用的时候再说。

  • 相关阅读:
    js之判断非空
    解决eclipse添加不了tomcat8的问题
    Java(eclipse)连接MySQL8.0以上版本数据库方式
    面试必备的:Redis和MongoDB的区别
    简述关系型数据库和非关系型数据库
    非关系型数据库MongoDB初探,以及和Redis的对比
    day53:django:URL别名/反向解析&URL分发&命名空间&ORM多表操作修改/查询
    day52:django:ORM单表/多表操作
    day51:django:dispatch&模板渲染&过滤器&标签&组件&静态文件配置
    day50:django:有名/无名分组&FBV/CBV
  • 原文地址:https://www.cnblogs.com/yuanyee/p/6290016.html
Copyright © 2020-2023  润新知