SpringMVC:處理器方法返回值——返回ModelAndView以及String
阿新 • • 發佈:2019-02-08
(一)
返回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(登入頁面)
- <%@ page language="java"contentType="text/html; charset=UTF-8"
- pageEncoding
- <%@taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%>
- <%
- String path = request.getContextPath();
- String basepath = request.getScheme() + "://"
- + request.getServerName() + ":" + request.getServerPort()
- + path + "/";
- %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <basehref="<%=basepath%>"/>
- <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">
- <title></title>
- </head>
- <body>
- <h2>login.jsp登入介面</h2>
- <formaction="uc/islogin"method="post">
- 使用者名稱:<inputtype="text"name="loginname"value="lisi"><br/>
- 密碼:<inputtype="text"name="loginpwd"value="123"><br/>
- <!-- 登入失敗提示的資訊 -->
- <c:iftest="${msg!=null }">
- ${msg }<br/>
- </c:if>
- <inputtype="submit"value="登入"/>
- </form>
- </body>
- </html>
2、控制器類 UserController
- package cn.sz.hcq.control;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.servlet.ModelAndView;
- import cn.sz.hcq.pojo.Users;
- @Controller
- @RequestMapping("uc")
- publicclass UserController {
- // 處理登入的控制器
- @RequestMapping(value = "islogin", method = RequestMethod.POST)
- public ModelAndView checkLogin(Users users) {
- ModelAndView mav = new ModelAndView();
- if (users.getLoginname().equals("lisi")
- && users.getLoginpwd().equals("123")) {
- users.setRealname("李四");
- // 返回的資料
- mav.addObject("users", users);
- // 跳轉的頁面
- mav.setViewName("show");
- } else {
- mav.addObject("msg", "使用者名稱或者密碼錯誤");
- // 跳轉的頁面
- mav.setViewName("login");
- }
- return mav;
- }
- }
3、登入成功show頁面
- <%@ page language="java"contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">
- <title></title>
- </head>
- <body>
- <h2>show頁面</h2>
- 登入成功啦: 使用者的真實姓名:${users.realname }
- </body>
- </html>