依赖注入之登录验证(Java EE 学习笔记08)

下面以属性setter方法注入为例,实现一个简单的登录验证。具体实现步骤如下所示。

(1)编写DAO层:在项目的com.lq包下新建dao包,在dao包下创建接口UserDao.java,在UserDao.java接口中添加方法login(),用于实现登录功能。

java 复制代码
package com.lq.dao;

/**
 * @Author: Luqing Teacher
 * @CreateTime: 2024-11-29
 * @Description: 接口类UserDao实现
 * @Version: 1.0
 */


public interface UserDao {

    public boolean login(String name, String pwd);
}

(2)编写DAO层的实现类:在com.lq.dao包下创建impl包,在impl包下创建UserDao接口的实现类UserDaoImpl,在UserDaoImpl类中实现login()方法。

java 复制代码
package com.lq.dao.impl;

import com.lq.dao.UserDao;

/**
 * @Author: Luqing Teacher
 * @CreateTime: 2024-11-29
 * @Description: UserDaoImpl 接口实现类
 * @Version: 1.0
 */


public class UserDaoImpl implements UserDao {
    @Override
    public boolean login(String name, String pwd) {
        if (name.equals("张三") && pwd.equals("123")){
            return true;
        }
        return false;
    }
}

(3)编写Service层:在项目的com.lq包下新建service包,在service包下创建接口UserService.java,在接口中添加方法login()。

java 复制代码
package com.lq.service;

/**
 * @Author: lzq
 * @CreateTime: 2024-11-29
 * @Description: UserService服务接口类
 * @Version: 1.0
 */

public interface UserService {
    public boolean login(String name, String pwd);
}

(4)编写Service层实现类:在com.lq.service包下创建impl包,在impl包下创建UserService接口的实现类UserServiceImpl,在UserServiceImpl类中实现login()方法。

java 复制代码
package com.lq.service.impl;

import com.lq.dao.UserDao;
import com.lq.service.UserService;

/**
 * @Author: Luqing Teacher
 * @CreateTime: 2024-11-29
 * @Description: UserServiceImpl实现类
 * @Version: 1.0
 */


public class UserServiceImpl implements UserService {

    UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public boolean login(String name, String pwd) {
        return userDao.login(name, pwd);
    }
}

(5)编写applicationContext-login.xml配置文件:使用<bean>元素添加创建的UserDaoImpl类和UserServiceImpl类的实例,并配置其相关属性。

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="userDao" class="com.lq.dao.impl.UserDaoImpl"/>
    <bean id="userService" class="com.lq.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"/>
    </bean>

</beans>

(6) 编写测试类:在com.lq的测试包中新建测试类TestLogin。

java 复制代码
package com.lq.test;

import com.lq.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @Author: Luqing Teacher
 * @CreateTime: 2024-11-29
 * @Description: TestLogin测试登陆验证
 * @Version: 1.0
 */


public class TestLogin{
    public static void main(String[] args) {

        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-login.xml");
        UserService userService = (UserService) applicationContext.getBean("userService");
        boolean flag = userService.login("admin", "123");
        if (flag){
            System.out.println("登陆成功");
        }else {
            System.out.println("登陆失败");
        }
        }
}

运行结果如下:

相关推荐
平头哥技术团队13 分钟前
Day 16 | 用 ul、ol、li 一个标签,把散资料收成有序的技能清单页
开发语言·前端·html·html5
统计学小王子23 分钟前
数学建模国赛倒计时 2 天 ——《统计模型精讲(广义线性模型 R 语言实例 + 分析)》
开发语言·数学建模·r语言
用户31268748772024 分钟前
线程池到底怎么管理线程的?从 ThreadPoolExecutor 到拒绝策略全链路拆解
java
此冬歌咏30 分钟前
自动化服务器运维监控系统(python+shell)
linux·运维·服务器·开发语言·python·自动化
cpolar技术支持39 分钟前
Kafka Streams 窗口统计怎么验收:本地跑订单流聚合,用 cpolar 给同事看只读结果页
java·docker·kafka·cpolar·kafka streams
爱读源码的大都督1 小时前
DeepSeek面试官问:生产RAG系统回答不准确,该如何定位和优化?这样回答,能让面试官当场给你Offer!
java·后端·python
Cx330❀1 小时前
【Linux网络】深入TCP协议:从滑动窗口到拥塞控制与性能优化全景解析
linux·开发语言·网络·tcp/ip·ai·性能优化·ai编程
爱敲代码的小杨.1 小时前
【Spring】Spring Web MVC
前端·spring·mvc
“AI国潮设计-小江”1 小时前
【Python实战】SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
k4m7v2pz1 小时前
从 Python 搬到 Rust:pyglet MIDI DAW 变成 egui 鬼畜采样器的迁移复盘
开发语言·python·rust