一.返回值分类:
- 字符串:返回值为需要展示的视图
- void:返回为默认的页面(方法名.jsp)
- ModleAndView:存储对象并返回设置的页面
1.字符串:
jsp:
1 <a href="/user/testString">response</a>
1 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> 2 <html> 3 <head> 4 <title>success</title> 5 </head> 6 <body> 7 <h3>执行成功</h3> 8 9 ${user.username} 10 ${user.age} 11 </body> 12 </html>
控制器方法:
/** * 返回值为需要展示的视图 * @param model * @return */ @RequestMapping("/testString") public String testString(Model model){ System.out.println("testString执行了..."); //模拟从数据库中查询出User对象 User user = new User(); user.setUsername("美美"); user.setPassword("123"); user.setAge(30); //设置model对象 model.addAttribute("user",user); return "success"; }
2.void
jsp:
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 3 <html> 4 <head> 5 <title>response</title> 6 </head> 7 <body> 8 9 <a href="/user/testString">testString</a> 10 <a href="/user/testVoid">testVoid</a> 11 </body> 12 </html>
方法:
1 /** 2 * void的返回值,会默认跳转到一个testVoid.jsp的页面下导致错误。 3 * 我们可以使用 4 * 1.请求转发:路径名为 "/WEB-INF/pages/success.jsp" 5 * 2.重定向:路径名为 request.getContextPath()+"/index.jsp" 6 * 注: 7 * forward:请求转发为服务器重定向,可以访问/WEB-INF中的jsp文件。 8 * redirect:客户端重定向,不可以访问/WEB-INF中的jsp文件,只能访问webapp中jsp 9 * @param request 10 * @param response 11 * @throws Exception 12 */ 13 @RequestMapping("/testVoid") 14 public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception { 15 16 System.out.println("testVoid执行了..."); 17 18 //请求转发:可以访问/WEB-INF中的jsp文件。 19 //request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response); 20 21 //重定向:不可以访问/WEB-INF中的jsp文件。 22 response.sendRedirect(request.getContextPath() + "/index.jsp"); 23 24 //直接响应 25 //response.setCharacterEncoding("UTF-8"); 26 //response.setContentType("text/html;charset=UTF-8"); 27 28 //response.getWriter().println("hello"); 29 30 return; 31 }
3.ModelAndView
jsp
1 <a href="/user/testModelAndView">testModelAndView</a>
方法:
1 /** 2 * 返回ModelAndView设置的页面 3 * @return 4 */ 5 @RequestMapping("/testModelAndView") 6 public ModelAndView testModelAndView() { 7 8 System.out.println("testModelAndView执行了..."); 9 10 //创建ModelAndView对象 11 ModelAndView mv = new ModelAndView(); 12 13 User user = new User(); 14 user.setUsername("美美"); 15 user.setPassword("123"); 16 user.setAge(30); 17 18 //将user放入ModelAndView对象中,同时也会将user对象放入request对象中 19 mv.addObject("user", user); 20 21 //设置跳转界面 22 mv.setViewName("success"); 23 24 return mv; 25 }
二.使用关键字进行请求转发或重定向
jsp:
1 <a href="/user/testForwardOrRedirect">testForwardOrRedirect</a> <br>
方法:
1 /** 2 * 使用关键字实现请求转发或重定向 3 * @return 4 */ 5 @RequestMapping("/testForwardOrRedirect") 6 public String testForwardOrRedirect() { 7 8 System.out.println("testForwardOrRedirect执行了..."); 9 10 11 // 请求转发 12 // return "forward:/WEB-INF/pages/success.jsp"; 13 14 // 重定向 15 return "redirect:/index.jsp"; 16 17 }