利用Spring IOC技术实现用户登录验证机制

 更新时间:2016年10月18日 13:53:02   作者:Hosens  
这篇文章主要为大家详细介绍了Spring IOC技术实现用户登录验证机制的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 使用Log4j2代码方式配置实现线程级动态控制

    使用Log4j2代码方式配置实现线程级动态控制

    这篇文章主要介绍了使用Log4j2代码方式配置实现线程级动态控制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • java计算图两点之间的所有路径

    java计算图两点之间的所有路径

    这篇文章主要为大家详细介绍了java计算图两点之间的所有路径,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • spring项目中切面及AOP的使用方法

    spring项目中切面及AOP的使用方法

    我们知道,spring两大核心,IOC(控制反转)和AOP(切面),那为什么要使用AOP,AOP是什么呢?带着这些问题通过本文学习下吧
    2021-06-06
  • 解决HttpServletResponse和HttpServletRequest取值的2个坑

    解决HttpServletResponse和HttpServletRequest取值的2个坑

    这篇文章主要介绍了解决HttpServletResponse和HttpServletRequest取值的2个坑问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 一文讲解如何解决Java中的IllegalArgumentException异常

    一文讲解如何解决Java中的IllegalArgumentException异常

    这篇文章主要给大家介绍了关于如何解决Java中IllegalArgumentException异常的相关资料,IllegalArgumentException是Java中的一个标准异常类,通常在方法接收到一个不合法的参数时抛出,需要的朋友可以参考下
    2024-03-03
  • springcloud eureka切换nacos的配置方法

    springcloud eureka切换nacos的配置方法

    这篇文章主要介绍了springcloud eureka切换nacos,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 解决RestTemplate反序列化嵌套对象的问题

    解决RestTemplate反序列化嵌套对象的问题

    这篇文章主要介绍了解决RestTemplate反序列化嵌套对象的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • ocp开闭原则_动力节点Java学院整理

    ocp开闭原则_动力节点Java学院整理

    这篇文章主要为大家详细介绍了ocp开闭原则的相关资料,ocp开闭原则指导我们如何建立一个稳定的、灵活的系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Mybatis和Mybatis-Plus时间范围查询方式

    Mybatis和Mybatis-Plus时间范围查询方式

    这篇文章主要介绍了Mybatis和Mybatis-Plus时间范围查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 详解在SpringBoot中使用MongoDb做单元测试的代码

    详解在SpringBoot中使用MongoDb做单元测试的代码

    这篇文章主要介绍了详解在SpringBoot中使用MongoDb做单元测试的代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论