1. 程式人生 > >SpringMVC:處理器方法返回值——返回ModelAndView以及String

SpringMVC:處理器方法返回值——返回ModelAndView以及String

(一)

返回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(登入頁面)

  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. <basehref="<%=basepath%>"/>
  14. <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">
  15. <title></title>
  16. </head>
  17. <body>
  18.     <h2>login.jsp登入介面</h2>
  19.     <formaction="uc/islogin"method="post">
  20.         使用者名稱:<inputtype="text"name="loginname"value="lisi"><br/>
  21.         密碼:<inputtype="text"name="loginpwd"value="123"><br/>
  22.         <!-- 登入失敗提示的資訊 -->
  23.         <c:iftest="${msg!=null }">
  24.                 ${msg }<br/>
  25.         </c:if>
  26.         <inputtype="submit"value="登入"/>
  27.     </form>
  28. </body>
  29. </html>


2、控制器類 UserController

  1. package cn.sz.hcq.control;  
  2. import org.springframework.stereotype.Controller;  
  3. import org.springframework.ui.Model;  
  4. import org.springframework.web.bind.annotation.RequestMapping;  
  5. import org.springframework.web.bind.annotation.RequestMethod;  
  6. import org.springframework.web.servlet.ModelAndView;  
  7. import cn.sz.hcq.pojo.Users;  
  8. @Controller
  9. @RequestMapping("uc")  
  10. publicclass UserController {  
  11. // 處理登入的控制器
  12.     @RequestMapping(value = "islogin", method = RequestMethod.POST)  
  13.     public ModelAndView checkLogin(Users users) {  
  14.         ModelAndView mav = new ModelAndView();  
  15.         if (users.getLoginname().equals("lisi")  
  16.                 && users.getLoginpwd().equals("123")) {  
  17.             users.setRealname("李四");  
  18.             // 返回的資料
  19.             mav.addObject("users", users);  
  20.             // 跳轉的頁面
  21.             mav.setViewName("show");  
  22.         } else {  
  23.             mav.addObject("msg""使用者名稱或者密碼錯誤");  
  24.             // 跳轉的頁面
  25.             mav.setViewName("login");  
  26.         }  
  27.         return mav;  
  28.     }  
  29. }  


3、登入成功show頁面

  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. <metahttp-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>