Spring MVC_登入功能
阿新 • • 發佈:2018-11-20
1.Spring MVC開發的流程。 (1)編寫輸入表單頁面。 (2)配置處理器對映和處理器。 (3)編寫Form類。 (4)編寫處理器類。 (5)配置JSP檢視解析器。 (6)編寫返回JSP頁面 2 本例的開發過程包括 已經配置好了Spring環境 (1)新建登入頁面login.jsp (2)配置處理器對映與處理器 (3)新建登入表單類com.demo.spring.forms.LoginForm.java (4)新建登入處理器com.demo.spring.actions.LoginAction.java (5)新建歡迎頁面welcome.java 3 具體步驟說明 (1)新建登入頁面login.jsp 新增兩個表單項 使用者名稱和密碼 並需要提供一個登入按鈕和一個引入到註冊頁面register.do的連結 使用引數method來決定使用哪一個請求註冊管理器的函式入口 <form name="form1" action="login.do" method="post"> <table width="300" border="1"> <tr> <td colspan="2">登入視窗</td> </tr> <tr> <td>使用者名稱td> <td><input type="text" name="username" size="10">td> </tr> <tr> <td>密碼</td> <td><input type="password" name="password" size="10"></td> </tr> <tr> <td colspan="2"><input type="submit" name="submit" value="登入"> <a href="register.do?method=init">註冊新使用者</td> </tr> </table> </form> (2)配置處理器對映與處理器 登入頁面login.jsp的 提交地址為login.do 因此在applicationContest.xml中需要新增處理器對映 <bean id="loginMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/login.do">loginAction</prop> </props> </property> </bean> 改對映指向/login.do 並交由loginAction處理器進行處理 因此接下來 我們新增處理器配置如下 <!---定義Action--> <bean id="loginAction" class="com.demo.spring.actions.LoginAction"> <property name="commandClass"> <value>com.demo.spring.forms.LoginForm</value> </property> <!-- 指定失敗要返回的頁面 --> <property name="formView"> <value>login</value> </property> <!-- 指定成功要返回的頁面 --> <property name="successView"> <value>welcome</value> </property> </bean> 這裡指定使用處理器類為 com.demo.spring.actions.LoginAction 並指定3個屬性 comandClass屬性 指定輸入的表單類為com.demo.spring.forms.LoginForm formView屬性 指定失敗要返回的頁面login.jsp successView屬性 指定成功要返回的頁面welcome.jsp (3)新建登入表單類com.demo.spring.forms.LoginForm.java 這個類是一個最原始的JavaBean類 包含了與login.jsp頁面中表單相對應的變數 為變數新增getter/setter函式 package com.demo.spring.forms; public class LoginForm { private String username; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } (4)新建登入處理器com.demo.spring.actions.LoginAction.java 這個類繼承自SimpleFormController 我們只需要實現該類的onSubmit()函式即可接受使用者的請求 在這個函式中 首先通過強制<span class="KSFIND_CLASS" id="0KSFindDIV">型別</span>裝換 取得使用者的表單物件loginForm 呼叫函式isValid()判斷是否驗證成功 如果登入陳宮 則在Session中儲存使用者登入的使用者名稱 並呼叫父類的getSuccessView()取得返回的success.jsp檢視 返回ModelAndView物件 如果登入失敗 首先取得錯誤物件model 將loginForm儲存在model中 然後返回一個ModelAndView物件 其中第一個引數為getFormView() 表示返回login.jsp頁面 第二個引數為model 表示傳遞錯誤對映列表 新建一個函式isValid()來進行登入驗證 處理的邏輯為如果使用者名稱和密碼均為admin 則表示登入成功 否則登入失敗 package com.demo.spring.actions; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController; import com.demo.spring.dao.UserDAO; import com.demo.spring.forms.LoginForm; import com.demo.spring.util.Constants; public class LoginAction extends SimpleFormController { protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { LoginForm loginForm = (LoginForm) command; if (isValid(loginForm)) { request.getSession().setAttribute(Constants.USERNAME_KEY, loginForm.getUsername()); return new ModelAndView(getSuccessView()); } else { Map modle = errors.getModel(); modle.put("loginForm", loginForm); return new ModelAndView(getFormView(), modle); } } public boolean isValid(LoginForm loginForm) { if (loginForm.getUsername().equals("admin") || loginForm.getPassword().equals("admin")) { return true; } else { return false; } } } 在上面的onSubmit() 函式中 如果登陸成功 則儲存一個變數在Session中 為了統一改儲存的變數命名 我們新建了一個實體類com.demo.spring.util.Constants.java 定義USERNAME_KEY來表示儲存的變數名為username 這樣在訪問該變數時 只需要與你用Constants.java類的USERNAME_KEY變數即可 package com.demo.spring.util; public class Constants { public final static String USERNAME_KEY = "username"; } (5)新建歡迎頁面welcome.java <%@ taglib prefix="spring" uri="/spring"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title><spring:message code="welcome.page.title" /></title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <form name="form1" action="logout.do" method="post"> <table width="200" border="1"> <tr> <td colspan="2">登陸成功</td> <tr> <td>歡迎你</td> <td><%=(String) session.getAttribute("username")%></td> </tr> <tr> <td colspan="2"><input type="submit" name="submit" value="退出"></td> </tr> </table> </form> </body> </html>
型別
型別