原文链接:http://www.yiidian.com/springmvc/return-value.html
Spring MVC的控制器方法返回值可以支持多种写法,每种写法的场景和效果都不一样。下面分别来看看每种返回值的使用。
1 普通字符串
返回普通字符串这种情况比较常见,主要用在我们处理完业务逻辑后,需要跳转到应用的其他页面。
代码示例:
/** * 1)字符串 - 普通字符串(代表页面名称,不是完整路径,最后经过视图解析器的解析) * 优势:写法简单 * 劣势:只能转发到视图解析器指定的特定目录 */ @RequestMapping("/string") public String string(){ System.out.println("一点教程网-普通字符串...."); //这里返回页面名称,必须经过视图解析器解析的!!! return "index"; }
视图解析器配置:
页面地址:
2 转发字符串
普通字符串,只能转发到视图解析器指定前缀的目录下的页面,如果想转发到视图解析器目录以外的页面,这时可以使用转发字符串的写法。
代码示例:
/** * 2)字符串 - 转发字符串 * 转发字符串格式: * forward:完整页面的路径 例如:forward:/pages/index.jsp * * 优势:更加灵活,可以转到本项目下的任何页面,可以传递request域对象数据 * 劣势:写法稍复杂 */ @RequestMapping("/forward") public String forward(){ System.out.println("一点教程网-转发字符串...."); return "forward:/index.html"; }
页面地址:
3 重定向字符串
如果希望使用重定向的方式跳转页面,这时可以使用重定向字符串完成。
代码示例:
/** * 3)字符串 - 重定向字符串 * 重定向字符串格式: * redirect:完整页面的路径 例如:redirect:/pages/index.jsp * * 优势:很灵活,可以重定向到项目内和项目以外的页面 * 劣势:写法稍复杂,不能转发requesy域对象数据 */ @RequestMapping("/redirect") public String redirect(){ System.out.println("一点教程网-重定向字符串...."); return "redirect:http://www.yiidian.com"; }
4 返回空
一般我们在文件下载的时候,就不需要控制器方法返回任何内容,所以设置为void即可。
代码示例:
/** * 4)返回void * 用于文件下载 */ @RequestMapping("/void") public void returnVoid(HttpServletResponse response){ System.out.println("void...."); //模拟文件下载 //1.读取需要下载的文件 File file = new File("e:/spring.jpg"); //2.构建文件输入流 try { InputStream in = new FileInputStream(file); //3.获取文件输出流(从response对象获取) OutputStream out = response.getOutputStream(); //4.边读边写 byte[] buf = new byte[1024]; int len = 0; while( (len = in.read(buf))!=-1 ){ out.write(buf,0,len); } //5.流资源关闭 out.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } return; }
5 ModelAndView
Spring MVC提供了ModelAndView对象,该对象既可以存储数据到request域,也可以设置视图。其实Spring MVC任何处理器适配器最终执行完控制器后,都会返回ModelAndView对象。所以这是一个比较底层的对象。
代码示例:
/** * 5)ModelAndView: 封装了Model数据和视图数据的对象 */ @RequestMapping("/mv") public ModelAndView mv(){ ModelAndView mv = new ModelAndView(); //设置模型数据 mv.addObject("model","一点教程网"); //设置视图数据 mv.setViewName("index"); return mv; }
6 返回Java对象
这里返回的Java对象,可能是普通JavaBean,也可以是List或Map集合等。一般希望把控制器的返回Java对象转换为Json字符串,才需要返回Java对象。我们下章节重点来讲解:《Spring MVC JSON数据转换》
源码下载:https://pan.baidu.com/s/1sINJe9oIuysksT00LK31ng
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4