《Java从入门到放弃》框架入门篇:springMVC数据传递 (二)

上一篇讲完了springMVC中数据传递中的接收数据,今天继续完成数据的向后传递。

数据传递的核心对象ModelAndView,注意其包名,不要引用错了!

正确的:org.springframework.web.servlet.ModelAndView

错误的:org.springframework.web.portlet.ModelAndView

我们继续完成前面的登录功能:

如果登录成功则跳转到index.jsp,并显示“欢迎你:xxxx(用户的昵称)”。

如果登录失败则回到login.jsp,并显示提示信息“猪脑子,账号和密码都输不对!”。

具体实现步骤如下:

    1.1)修改User类,添加昵称属性。

public class User {
    
    private String loginid;
    private String loginpwd;
    private String nickname;    //用户昵称
    
    public String getLoginid() {
        return loginid;
    }
    public void setLoginid(String loginid) {
        this.loginid = loginid;
    }
    public String getLoginpwd() {
        return loginpwd;
    }
    public void setLoginpwd(String loginpwd) {
        this.loginpwd = loginpwd;
    }
    public String getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
}

    1.2)修改MyController类,添加login4方法(注意当前方法的返回值和之前方法的区别)。

    @RequestMapping("/login4")
    public ModelAndView login4(@ModelAttribute("user") User use){
        ModelAndView mav = new ModelAndView("index.jsp");    //默认目标视图index.jsp
        
        return mav;
    }

    1.3)在login4方法内判断账号(admin)和密码(666),正确就跳转到index.jsp,错误则回到login.jsp

    @RequestMapping("/login4")
    public ModelAndView login4(@ModelAttribute("user") User use){
        ModelAndView mav = new ModelAndView("index.jsp");
        if(use.getLoginid().equals("admin") && use.getLoginpwd().equals("666")){
            use.setNickname("我是黄河你是海流");
            mav.addObject("user", use);            //添加需要传递到下一个视图的数据
        }
        else{
            mav.addObject("msg", "猪脑子,账号和密码都输不对!");
            mav.setViewName("login.jsp");        //修改视图
        }
        return mav;
    }

    1.4)修改loing.jsp和index.jsp页面,在页面上加入信息的显示。

login.jsp页面

  <body>
    <form action="login2.form" method="post">
        账号:<input name="loginid" type="text" /><br />
        密码:<input name="loginpwd" type="password" /><br />
        <input type="submit" value="登录" />
    </form>
    <div style="color:red;">${msg }</div>
  </body>

        index.jsp页面

  <body>
        欢迎你:${user.nickname }<br />
  </body>

    1.5)运行并查看结果(数据是否正确从Controller类传递到JSP页面)

===================================================

注意:ModelAndView相关于使用request传递数据,如果有多个页面需要使用用户信息,那么还是需要把user对象保存到session 。

===================================================

在springMVC中使用request,response,session对象也非常方便,

将login4的代码修改如下(当前功能只使用session):

    @RequestMapping("/login4")
    public ModelAndView login4(@ModelAttribute("user") User use, 
            HttpServletRequest request, HttpServletResponse response, HttpSession session){
        ModelAndView mav = new ModelAndView("index.jsp");
        if(use.getLoginid().equals("admin") && use.getLoginpwd().equals("666")){
            use.setNickname("我是黄河你是海流");
            //mav.addObject("user", use);            //添加需要传递到下一个视图的数据
            session.setAttribute("user", use);
        }
        else{
            mav.addObject("msg", "猪脑子,账号和密码都输不对!");
            mav.setViewName("login.jsp");        //修改视图
        }
        return mav;
    }

好了,打完收功!!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第九天 ServletContext&amp;Response&amp;request学习

Web-第九天 ServletContext&Response&request学习

1253
来自专栏菩提树下的杨过

Spring Security笔记:使用数据库进行用户认证(form login using database)

在前一节,学习了如何自定义登录页,但是用户名、密码仍然是配置在xml中的,这样显然太非主流,本节将学习如何把用户名/密码/角色存储在db中,通过db来实现用户认...

821
来自专栏JackieZheng

Spring实战——XML和JavaConfig的混合配置

前言 看了园龄已经两年多了,再不能写完内容直接点击发布,留下一片密密麻麻的文字让别人看的头昏脑涨。所以现在每次写完主要内容后,还需要对于格式稍稍调整下。那么有没...

1966
来自专栏IT笔记

关于Shiro登陆退出遇到的一些问题

写在开始 最近项目中出现一些问题,以前可能不大关注,但是问题是实实在在存在的。 ? 问题一 系统重启用户登陆或者退出报错:Disk Write of 407a1...

3026
来自专栏Java帮帮-微信公众号-技术文章全总结

JavaWeb19-Listener ; Filter

Listener & Filter一.Listener 1. listener介绍 Javaweb中的监听器是用于监听web常见对象HttpServletReq...

3508
来自专栏张善友的专栏

HTML生成PDF(c#)

Calling wkhtmltopdf to generate PDF from HTML 老外最多人加分的那篇做法,使用wkhtmtopdf(GPL协议)可以...

18910
来自专栏日常分享

JavaWeb 基于Session的用户登陆注销实现

  通过Session来存储用户的部分登陆信息来验证用户是否在线,这应该时最容易实现的一种Web端方案,本文以SSM(Spring、SpringMVC、myBa...

631
来自专栏java学习

使用idea2017搭建SSM框架

我这里列出的是搭建完了之后所有的目录和文件,诸位先把目录文件建起来,然后我在给出文件内容

882
来自专栏Kubernetes

Kubelet Deivce Manager源码分析

本文基于Kubernetes v1.10的代码,对Kubelet Device Manager的实现进行了代码走读分析,方便对kubelet与device pl...

66212
来自专栏大内老A

[WCF权限控制]利用WCF自定义授权模式提供当前Principal[实例篇]

在《原理篇》中我们谈到:如果采用自定义安全主体权限模式,我们可以通过自定义AuthorizationPolicy或者ServiceAuthorizationMa...

22310

扫码关注云+社区