zoukankan      html  css  js  c++  java
  • 《Java从入门到放弃》入门篇:springMVC数据传递 (二)

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

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

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

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

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

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

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

     

    具体实现步骤如下:

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    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方法(注意当前方法的返回值和之前方法的区别)。

    1
    2
    3
    4
    5
    6
        @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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        @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页面

    1
    2
    3
    4
    5
    6
    7
    8
      <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页面

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

     

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

    wKioL1mRZwKxHtEeAAAmb43PZ2Q221.png    wKiom1mRZwOiTDakAAAfkZAuYjk393.png

     

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

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

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

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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        @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;
        }

    好了,打完收功!!!j_0003.gif

  • 相关阅读:
    Python NameError: name 'include' is not defined [closed]
    Python3 venv 创建虚拟环境
    python编程:从入门到实践读书笔记(一)
    kafka(2.2.1)(kerberos+LDAP+Sentry)访问使用
    实现Base64解码和命令分发器
    装饰器器应用及用途
    __slots__和运算符重载中的反向方法
    python插件化开发
    python分发包管理
    SocketServer模块
  • 原文地址:https://www.cnblogs.com/yixueyuan/p/7358979.html
Copyright © 2011-2022 走看看