SpringMVC:处理器方法返回值——返回ModelAndView以及String
(一)返回ModelAndView:应用场景:若处理器对请求处理过后,不仅要进行跳转,而且在跳转过程中还要传递数据,此时使用ModelAndView较为方便。返回String:一、返回物理视图名称:这样在地址栏里输入xxx/some.do就可以跳转到welcome.jsp页面。二、返回逻辑视图名称:1、在spring容器注册视图解析器:2、处理器:这个return的welcome和注册的视图解析器
(一)
返回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="UTF-8"%>
- <%@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>
- <base href="<%=basepath%>" />
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title></title>
- </head>
- <body>
- <h2>login.jsp登录界面</h2>
- <form action="uc/islogin" method="post">
- 用户名:<input type="text" name="loginname" value="lisi"><br />
- 密码:<input type="text" name="loginpwd" value="123"><br />
- <!-- 登录失败提示的信息 -->
- <c:if test="${msg!=null }">
- ${msg }<br />
- </c:if>
- <input type="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")
- public class 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>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title></title>
- </head>
- <body>
- <h2>show页面</h2>
- 登录成功啦: 用户的真实姓名:${users.realname }
- </body>
- </html>
更多推荐
所有评论(0)