(一)

返回ModelAndView:

应用场景:

若处理器对请求处理过后,不仅要进行跳转,而且在跳转过程中还要传递数据,此时使用ModelAndView较为方便。

返回String:

一、返回物理视图名称:

这样在地址栏里输入xxx/some.do就可以跳转到welcome.jsp页面。

二、返回逻辑视图名称:

1、在spring容器注册视图解析器:

2、处理器:

这个return的welcome和注册的视图解析器可以拼接出WEB-INF/jsp/welcome.jsp的地址。

三、返回逻辑视图对象名称:

1、在spring容器里注册视图对象:

2、处理器:

注意:视图解析器,会按照注册先后顺序进行匹配,为此有必要添加优先级。


(二)

SpringMVC  返回ModelAndView对象

在控制器类中,处理客户端请求后,可以把需要响应到页面的数据和视图名字都封装到一个ModelAndView对象中,然后直接返回这个ModelAndView对象。在控制器类中需要引入的包为: org.springframework.web.servlet.ModelAndView


下面是示例代码:登录案例,登录成功跳转到show页面,失败返回login页面。

1.login.jsp(登录页面)

[html]  view plain  copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
  4. <%  
  5.     String path = request.getContextPath();  
  6.     String basepath = request.getScheme() + "://"  
  7.             + request.getServerName() + ":" + request.getServerPort()  
  8.             + path + "/";  
  9. %>  
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  11. <html>  
  12. <head>  
  13. <base href="<%=basepath%>" />  
  14. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  15. <title></title>  
  16. </head>  
  17. <body>  
  18.     <h2>login.jsp登录界面</h2>  
  19.     <form action="uc/islogin" method="post">  
  20.         用户名:<input type="text" name="loginname" value="lisi"><br />  
  21.         密码:<input type="text" name="loginpwd" value="123"><br />  
  22.         <!-- 登录失败提示的信息 -->  
  23.         <c:if test="${msg!=null }">  
  24.                 ${msg }<br />  
  25.         </c:if>  
  26.         <input type="submit" value="登录" />  
  27.     </form>  
  28. </body>  
  29. </html>  


2、控制器类 UserController

[java]  view plain  copy
  1. package cn.sz.hcq.control;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4. import org.springframework.ui.Model;  
  5. import org.springframework.web.bind.annotation.RequestMapping;  
  6. import org.springframework.web.bind.annotation.RequestMethod;  
  7. import org.springframework.web.servlet.ModelAndView;  
  8.   
  9. import cn.sz.hcq.pojo.Users;  
  10.   
  11. @Controller  
  12. @RequestMapping("uc")  
  13. public class UserController {  
  14. // 处理登录的控制器  
  15.     @RequestMapping(value = "islogin", method = RequestMethod.POST)  
  16.     public ModelAndView checkLogin(Users users) {  
  17.         ModelAndView mav = new ModelAndView();  
  18.         if (users.getLoginname().equals("lisi")  
  19.                 && users.getLoginpwd().equals("123")) {  
  20.             users.setRealname("李四");  
  21.             // 返回的数据  
  22.             mav.addObject("users", users);  
  23.             // 跳转的页面  
  24.             mav.setViewName("show");  
  25.         } else {  
  26.             mav.addObject("msg""用户名或者密码错误");  
  27.             // 跳转的页面  
  28.             mav.setViewName("login");  
  29.         }  
  30.         return mav;  
  31.     }  
  32.   
  33. }  


3、登录成功show页面

[html]  view plain  copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title></title>  
  8. </head>  
  9. <body>  
  10.     <h2>show页面</h2>  
  11.     登录成功啦: 用户的真实姓名:${users.realname }  
  12. </body>  
  13. </html>  
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐