利用 Spring IOC 技術實現用戶登錄的驗證機制,對用戶進行登錄驗證。
首先利用 Spring 的自動裝配模式將 User 對象注入到控制器中,然後將用戶輸入的用戶名和密碼與系統中限定的合法用戶的用戶名和密碼進行匹配。
當用戶名與密碼匹配成功時,跳轉到登錄成功頁面;當用戶名與密碼不匹配時,跳轉到登錄失敗的頁面。
1.創建 User 對象,定義用戶名和密碼屬性,代碼如下:
package com.importnew; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
2.創建控制器 TestUtil ,注入 User 對象並進行登錄驗證。代碼如下:
package com.importnew; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class TestUtil extends AbstractController{ private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { String username = arg0.getParameter("username"); String password = arg0.getParameter("password"); if(username.equals(user.getUsername()) && password.equals(user.getPassword())){ return new ModelAndView("yes"); }else{ return new ModelAndView("Error"); } } }
3.在 Spring 的配置文件 applicationContext.xml 中為 User 對象的屬性賦值,並使用自動裝配的方式在控制器 TestUtil 中注入 User 對象。代碼如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <bean id="user" class="com.importnew.User" > <property name="username"> <value>admin</value> </property> <property name="password"> <value>123</value> </property> </bean> <bean autowire="byName" id="testUtil" class="com.importnew.TestUtil" > <property name="user"> <ref bean="user"/> </property> </bean> </beans>
4.在 web.xml 文件中配置 applicationContext.xml 的自動加載,當項目啟動後程序將自動加載配置文件中的信息。代碼如下:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
———————————————————————————————————————————————————
備注:
TestUtil 中繼承的類 AbstractController 需要引關於 spring-web-mvc 的 JAR 包支持。
////end