处理器方法返回值——返回ModelAndView

推荐在控制器类中使用ModelAndView来封装响应到页面的数据和视图名字。ModelAndView可以更方便地管理视图和数据。另一方面,虽然可以返回String类型,但不被推荐。返回String时,可以指定物理或逻辑视图名称来实现页面跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推荐使用ModelAndView,还可以使用返回值为String类型的,但是不推荐。

返回ModelAndView:

应用场景:

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

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

返回String:

一、返回物理视图名称:

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

二、返回逻辑视图名称:

实例:
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

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.成功界面

<%@ 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>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值