1.1 返回ModelAndView

  controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view。

1.2 返回void

在controller方法形参上可以定义request和response,使用request或response指定响应结果:

1、使用request转向页面,如下:

request.getRequestDispatcher("页面路径").forward(request, response);

2、也可以通过response页面重定向:

response.sendRedirect("url")

3、也可以通过response指定响应结果,例如响应json数据如下:

response.setCharacterEncoding("utf-8");

response.setContentType("application/json;charset=utf-8");

response.getWriter().write("json串");

1.3 返回字符串

1.3.1 逻辑视图名

controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。

//指定逻辑视图名,经过视图解析器解析为jsp物理路径:
/WEB-INF/jsp/item/editItem.jsp
return "item/editItem";

1.3.2 Redirect重定向

redirect:重定向   url发生改变,request域中的数据不能带到重定向的方法中

Contrller方法返回结果重定向到一个url地址,如下商品修改提交后重定向到商品查询方法,参数无法带到商品查询方法中。

如果使用request进行传参,会报空指针异常的错误,因为不能通过request将数据传过去。

model.addAttribute("id", items.getId());
//redirect:重定向   url发生改变,request域中的数据不能带到重定向的方法中
//使用request将参数带过去
//request.setAttribute("id",items.getId());//这里会报空指针异常,因为不能通过request将数据传过去
//在springmvc中凡是以redirect字符串开头的都是重定向
return "redirect:itemEdit.action";

redirect方式相当于“response.sendRedirect()”,转发后浏览器的地址栏变为转发后的地址,因为转发即执行了一个新的request和response。

由于新发起一个request原来的参数在转发时就不能传递到下一个url,如果要传参数可以/item/queryItem.action后边加参数,如下:

/item/queryItem?...&…..

也可以通过model.addAttribute("id", items.getId());进行传参。

1.3.3 forward转发

forward:请求转发  浏览器url不发生改变,request域中的数据可以带到转发后的方法中

controller方法执行后继续执行另一个controller方法,如下商品修改提交后转向到商品修改页面,修改商品的id参数可以带到商品修改方法中。

//forward:请求转发  浏览器url不发生改变,request域中的数据可以带到转发后的方法中
/*
* 相对路径:相对于当前目录,也就是当前类的目录下,这时候可以使用相对路径跳转
* 绝对路径:从项目名开始
*/
model.addAttribute("id", items.getId());
return "forward:itemEdit.action";
//return "forward:/itemEdit.action";//绝对路径的写法
/forward中以'/'开头的为绝对路径,'/'表示从根开始;不以'/'开头的为相对路径

forward方式相当于“request.getRequestDispatcher().forward(request,response)”,转发后浏览器地址栏还是原来的地址。转发并没有执行新的request和response,而是和转发前的请求共用一个request和response。所以转发前请求的参数在转发后仍然可以读取到。

1.3.4 相对路径与绝对路径

相对路径:相对于当前目录,也就是当前类下的目录,这时候可以使用相对路径跳转。

绝对路径:从项目名开始。

return "forward:/itemEdit.action";//绝对路径的写法

在springmvc中不管是forward还是redirect,以/开头就是绝对路径,不以/开头的就是相对路径

转载于:https://www.cnblogs.com/wyhluckdog/p/10200355.html

springmvc中Controller方法的返回值相关推荐

  1. springMVC之Controller方法的返回值

    1. 第一种返回ModelAndView 在方法结束时定义ModelAndView类,在调用其addObject方法进行参数的设置,调用setViewName方法,定义跳转视图名 String nam ...

  2. Java面试题:IO流中read()方法为什么返回值是int

    Question:IO流中read()方法为什么返回值是int? anwser:因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte, ...

  3. controller调用另一个controller中的方法 获取返回值_必须掌握!你知道 Spring 中运用的 9 种设计模式吗 ?...

    Spring中涉及的设计模式总结,在面试中也会经常问道 Spring 中设计模式的问题.本文以实现方式.实质.实现原理的结构简单介绍 Sping 中应用的 9 种设计模型,具体详细的刨析会在后面的文章 ...

  4. SpringAop切面中获取方法的返回值

    场景: 需要用到aop统一接口异常的返回值 当接口抛出异常的时候封装成response对象,但是如果不同接口要返回的response不同,需要在执行前获取到接口返回值的类型 如果要取到方法的返回值,需 ...

  5. JAVA IO中read()方法的返回值

    以下是不太严谨的个人理解,有错误欢迎指出,共同进步: read()方法的作用是从输入流读取数据的下一个字节,返回的字节的值是一个0~255之间的整数.到达流的末尾返回-1. 刚开始我以为这个返回值表示 ...

  6. vue 方法获取返回值_vue中子组件怎么获取父组件中的方法的返回值

    楼主解决了吗?好像通过@自定义方法名='父组件的方法名'这样绑定到子组件里面取不行,只能通过:自定义方法名='父组件方法名',然后在子组件中的props:['自定义方法名'],再在子组件中要使用的地方 ...

  7. Spring MVC 中的 controller层的方法的返回值类型

    Controller方法的返回值可以有以下几种: 1.返回ModelAndView 返回ModelAndView时最常见的一种返回结果.需要在方法结束的时候定义一个ModelAndView对象,并对M ...

  8. SpringMVC——控制器方法的返回值类型(ModelAndView、String、void、Object)

    文章目录: 1.控制器controller方法的返回值 1.1 返回值类型:ModelAndView 1.2 返回值类型:String(这里的String是视图) 1.2.1 控制器类 1.2.2 s ...

  9. SpringMVC——处理器方法的返回值类型

    目录 1. 控制器controller方法的返回值 1.1 返回值类型:ModelAndView 1.2 返回值类型:String 1.3返回值类型:void 1.4 返回值类型:Object(可以是 ...

最新文章

  1. PyTorch 手把手搭建(MNIST)神经网络
  2. Java多线程编写简易飞机大战(一)
  3. 和方舟rust一样的手游_方舟生存进化手游2.0版本的泰克科技有多强?恐龙大军都顶不住...
  4. rfc垮端口 sap_SAP扫盲系列之二:SAP ABAP应用服务器的组成部分
  5. 【大神】软件建模仿真空气冷凝集水器,末日饮水荒野求生水资源解决方案
  6. Leetcode-136. 只出现一次的数字(python3)
  7. 中石油训练赛 - Bee Problem(dfs+连通块)
  8. 什么是java构造函数_什么是java构造函数
  9. NOIP2011 铺地毯
  10. WPF指南之XAML概述
  11. Tomcat 申请证书配置https
  12. 全球英文经典演讲100篇_日语演讲100问(1)即兴演讲不即兴!(理论篇)
  13. flex自定义preloader预加载进度条
  14. python获取指定字符串中重复模式最高的字符串
  15. 转载--卷积神经网络卷积层池化层输出计算公式
  16. win10家庭版系统安装SQL2005
  17. JSP页面乱码的几种解决方案
  18. AI教程之Meta 的新 AI 将文本转换为视频
  19. Matlab:搭建神经网络
  20. seafile专业版集成微软的office online实现在线协同编辑

热门文章

  1. Windows Phone 7 MVVM模式通讯方式之实现Command
  2. linux text mode下如何修改语言
  3. CSS3中的transform变形
  4. 用Python进行SQLite数据库操作
  5. 二分图的最大带权匹配
  6. 重构-改善既有代码的设计:简化函数调用 (八)
  7. golang中的mysql类型对应
  8. golang操作redis
  9. 贷款利率最高多少合法?
  10. return 语句不可返回指向“栈内存”的“指针”