利用 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

最新文章

  1. 火焰图分析openresty性能瓶颈
  2. Android中Fragment与Activity之间的交互(两种实现方式)
  3. 用react的ReactCSSTransitionGroup插件实现简单的弹幕动画
  4. Hadoop中MR程序的几种提交运行模式
  5. Android样式的开发:layer-list篇
  6. 使自定义事件支持多绑定 js
  7. Nginx 的 RTMP 模块的在线统计功能 stat 在 multi-worker 模式下存在 Bug
  8. ExtJs4.2 知识点
  9. phpMyAdmin中mysql的创建数据库时的编码的问题
  10. Install Cocos2d-x v3.3 on Ubuntu 14.04 &amp; Ubuntu 14.10(转)
  11. axure制作圆形组件——axure制作技巧
  12. Android Intent 传递数据注意事项
  13. React browserHistory.push()传参
  14. VUE引入字体图标库
  15. Xgboost GPU 加速
  16. ThinkingInJava 学习 之 0000003 控制执行流程
  17. Gradle 设置全局代理
  18. LeetCode题解之 Longest Common Prefix
  19. Linux命令(自学)
  20. AltiumDesigner PCB布局布线过程与技巧

热门文章

  1. mysql外键创建失败原因
  2. unity3d 各键值对应代码
  3. 项目管理01--使用Maven构建项目(纯干货)
  4. JS高级——原型链
  5. JS——缓慢动画封装案例
  6. [Windows Server 2008] 手工创建安全网站
  7. ARM架构与体系学习(二)——3级流水线
  8. 自己写一个爬虫 copider
  9. [转载]java中Date,SimpleDateFormat
  10. 发现:Click事件也能获取鼠标单击的坐标