SpringMVC控制类的Controller方法返回值

  1. Controller方法返回值

    1. 返回字符串

      1. 逻辑视图名

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

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

return "itemList";

参考第一天内容

  1. Redirect重定向

Contrller方法返回字符串可以重定向到一个url地址

如下商品修改提交后重定向到商品编辑页面。

/*** 更新商品** @param item* @return*/@RequestMapping("updateItem")public String updateItemById(Item item) {// 更新商品this.itemService.updateItemById(item);// 修改商品成功后,重定向到商品编辑页面// 重定向后浏览器地址栏变更为重定向的地址,// 重定向相当于执行了新的request和response,所以之前的请求参数都会丢失// 如果要指定请求参数,需要在重定向的url后面添加 ?itemId=1 这样的请求参数return "redirect:/itemEdit.action?itemId=" + item.getId();}
  1. forward转发

Controller方法执行后继续执行另一个Controller方法

如下商品修改提交后转向到商品修改页面,修改商品的id参数可以带到商品修改方法中。

/*** 更新商品** @param item* @return*/@RequestMapping("updateItem")public String updateItemById(Item item) {// 更新商品this.itemService.updateItemById(item);// 修改商品成功后,继续执行另一个方法// 使用转发的方式实现。转发后浏览器地址栏还是原来的请求地址,// 转发并没有执行新的request和response,所以之前的请求参数都存在return "forward:/itemEdit.action";}

//结果转发到editItem.action,request可以带过去

return "forward: /itemEdit.action";

需要修改之前编写的根据id查询商品方法

因为请求进行修改商品时,请求参数里面只有id属性,没有itemId属性

修改,如下图::

使用request和response进行重定向和转发

  1. 返回ModelAndView

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

参考第一天的内容

使用modelAndView默认都是使用转发的方式的,如果要使用重定向,需要创建RediectView(没有意义)。

  1. 返回void

如果不做任何处理,默认会转发到当前的请求的url:

案例:

@RequestMapping("/addStu")

public void addStudent(){

//可以使用request,response转发或者重定向

System.out.println("添加学生,返回void");

//在方法中不做任何重定向和转发操作

// 当方法的返回值为void时,默认会转发进入当前的url 类似:return "addStu"  /WEB-INF/jsp/addStu.jsp

}

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

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

request.getRequestDispatcher("页面路径").forward(request, response);request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);

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

response.sendRedirect("url")response.sendRedirect("/springmvc_d02_c02/itemEdit.action");
  1. 可以通过response指定响应结果,例如响应json数据如下:
response.getWriter().print("{\"abc\":123}");
  1. 代码演示

以下代码一次测试,演示上面的效果

/*** 返回void测试** @param request* @param response* @throws Exception*/@RequestMapping("queryItem")public void queryItem(HttpServletRequest request, HttpServletResponse response) throws Exception {// 1 使用request进行转发// request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request,// response);// 2 使用response进行重定向到编辑页面// response.sendRedirect("/springmvc_d02_c02/itemEdit.action");// 3 使用response直接显示response.getWriter().print("{\"abc\":123}");}
  1. 返回Model(使用Model传递数据)

Model可以认为是ModelAndView的一部分,纯粹的只是分装了数据模型。

在返回Model时由于没有视图的部分, 所有springMVC默认和void的处理方式一样,转发到当前的URL。

案例:

@RequestMapping("/userInfo")

public Model userInfo(Model model){

User user = userService.queryById(1);

model.addAttribute("user", user);

return model;

}

转发到当前的url

添加JSP

响应结果:

Model同样有4个方法可以添加数据模型对象:

默认对象都是放在request作用域中的。

其实使用Model设置数据模型时,可以没有返回值:

所有的model中的数据默认都是设置在request作用域中的。

  1. ModelMap传递数据

ModelMap本来就是一个Map,就是用来设置数据的。

ModelMap在初始化的时候,可以设置数据。

构造之后,通过可以通过API设置数据模型;

所有的API和Model一样,是Model的一个非直接实现类。

所以当返回ModelMap时,所有的处理和Model的处理是一样的。

案例:

使用ModelMap替换Model没有任何问题。

ModelMap是类,是可以自己创建对象的。

情况一:返回void

情况二:返回ModelMap

  1. 返回一个Map

当返回一个java.util.Map时,处理方式几乎和ModelMap完全一致:

使用Map作为处理方法的参数,spring同样会创建Map对象设置数据模型到作用域中。

  1. 返回一个javaBean对象

案例:

直接返回user对象,响应方式和void一致。

注意:springMVC默认会将对象的名称作为key,将对象设置到request的作用域中。

  1. 返回一个List

响应处理依然和void一致。

案例:

测试:无论controller中的返回值的对象名称是什么?页面都是通过userList获取。

当返回值为List是,默认springMVC会将list设置到request作用域中,并且给list的key为: xxxList     其中xxx是List 中存储的类型的类名的首字母小写的组成。

例如:List<String> sts = new ArrayList<String>()    在页面中通过JSTL获取的key是:stringList

  1. 返回Set

Set和List几乎一致,唯一的区别是set和list集合的本质区别。

SpringMVC控制类的Controller方法返回值相关推荐

  1. SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器

    SpringMVC入门(二)-- 参数的传递.Controller方法返回值.json数据交互.异常处理.图片上传.拦截器 参考文章: (1)SpringMVC入门(二)-- 参数的传递.Contro ...

  2. SpringMVC的Controller方法返回值

    一.返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可以添加model数据.指定的view. public ModelAndView queryI ...

  3. Java框架-SpringMVC的应用(json数据交互、控制器方法返回值、文件上传)

    1. 搭建SpringMVC开发环境 1.1 创建项目,添加依赖 <?xml version="1.0" encoding="UTF-8"?> &l ...

  4. .net mvc actionresult 返回字符串_072-SpringMVC后端控制器接收参数、处理器方法返回值类型、拦截器、文件上传下载...

    1. 注解式开发之annotation-driven解释 (1) mvc注解驱动在哪个文件中配置? 在springmvc中配置 (2) 配置mvc注解驱动使用哪个标签? 2. 注解式开发之视图解析器 ...

  5. Java方法返回值类型归纳

    Java方法返回值类型归纳 我们再调用一个方法时,将方法体内产生的一条数据输出到方法体外使用,这条数据我们叫做返回值. 返回值类型分为两大类:第一类,无返回值类型:void.第二类,有返回值类型,返回 ...

  6. php构造函数里抛出异常_php-在类的构造函数中返回值

    php-在类的构造函数中返回值 到目前为止,我有一个带有构造函数的29447791671682017201728类 public function __construct ($identifier = ...

  7. 父类作为方法的形参以及父类作为方法返回值

    1.父类作为方法的形参 语句:修饰符 父类类型 方法名(){} 2.父类作为方法返回值 语句:修饰符 void/返回值类型 方法名(父类类型 形参名){} 代码例子: 动物类: /*** @autho ...

  8. C# 方法返回值的个数

    方法返回值类型总的来说分为值类型,引用类型,Void 有些方法显示的标出返回值 public int Add(int a,int b) {return a+b; } 有些方法隐式的返回返回值,我们可以 ...

  9. java泛型 方法返回值带有泛型 <T>

    方法返回值前的<T>的左右是告诉编译器,当前的方法的值传入类型可以和类初始化的泛型类不同,也就是该方法的泛型类可以自定义,不需要跟类初始化的泛型类相同. 转自:https://blog.c ...

最新文章

  1. checking for C++ compiler default output file name
  2. org.jbpm.configuration.ConfigurationException: name 'default.jbpm.context'
  3. java 获取密码框密码,获得Windows下的密码框密码--编程学习网
  4. qpython3 l_QPython 3(com.hipipal.qpy3) - 3.0.0 - 应用 - 酷安网
  5. 小班同学学习经历分享(一)游戏程序员成长札记
  6. java做度量衡换算器_简易单位换算器_度量衡单位转换
  7. 笔记本锁定计算机功能键,笔记本键盘锁定键在哪_笔记本电脑的“键盘锁”是哪一个键-win7之家...
  8. Android 虚拟机技术为何至今依旧“屹立不倒”?
  9. html电子印章,挑战电子印章系统 HTML版
  10. Android学习之登陆界面设计(一)前后期准备以及相关配置
  11. 软件测试灵魂三问,如何回怼?
  12. 阿里云最新最全扩容方法
  13. 学生信息管理系统——python版(附流程图)
  14. 北斗短报文和北斗定位入门篇
  15. win10更新右键没有卸载怎么解决?
  16. dolphinscheduler v2.0.1 master和worker执行流程分析(一)
  17. 小福利,运用python里面的talib模块和cufflinks模块实现stock可视化分析
  18. Markdown语法之html内嵌样式
  19. C#,图像二值化(12)——基于谷底最小值的全局阈值算法(Valley-Minium Thresholding)与源代码
  20. 如何包装自己的简历?(HR眼中的好简历是什么样的?/这样写简历才会有面试机会)...

热门文章

  1. 基于PHP构建OAuth 2.0 认证平台
  2. input type=file图片上传时,先预览
  3. Problem D. Country Meow 2018ICPC南京
  4. cocos2dx 物理碰撞
  5. 详细解读MySQL中的权限
  6. PE格式第七讲,重定位表
  7. Java调用存储过程返回数组
  8. qt——QFileDialog使用对话框选取本地文件
  9. Media Player 嵌套网页中播放上传视频记录
  10. HBase完全分布式集群部署