上一篇講完了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; }