JavaEE——声明式事务管理案例:实现用户登录

2024-06-10 11:36

本文主要是介绍JavaEE——声明式事务管理案例:实现用户登录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、案例要求

        本案例要求在控制台输入用户名密码,如果用户账号密码正确则显示用户所属班级,如果登录失败则显示登录失败。实现用户登录项目运行成功后控制台效果如下所示。

欢迎来到学生管理系统
请输入用户名:
zhangsan
请输入zhangsan的密码:
123456
用户登录成功!
zhangsan是Java班的

二、思路分析

        根据学生管理系统及其登录要求,可以分析案例的实现步骤如下。

(1)为了存储学生信息,需要创建一个数据库。

(2)为了程序连接数据库并完成对数据的增删改查操作,需要在XML配置文件中配置数据库连接和事务等信息。

(3)在Dao层实现查询用户信息的方法。

(4)在Controller层处理业务逻辑,如判断用户输入的用户名与密码是否正确 。

1、创建数据库

        在MySQL中的spring数据库中创建一个名为student的表。

字段名类型长度是否主键说明
idint11学生编号
usernamevarchar255学生姓名
passwordvarchar255学生密码
coursevarchar255学生班级

2、编写实体类

        创建Student类,在该类中定义id、username、password和course属性,以及属性对应的getter/setter方法。

public class Student {//学生IDprivate Integer id;//学生姓名private String username;//学生密码private String password;//学生班级private String course;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}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;}public String getCourse() {return course;}public void setCourse(String course) {this.course = course;}
}

3、编写配置文件

        创建配置文件applicationContext-student.xml,在该文件中配置id为dataSource的数据源Bean和id为jdbcTemplate的JDBC模板Bean,并将数据源注入到JDBC模板中。

<?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:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.3.xsd"><!-- 1.配置数据源 --><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!--数据库驱动 --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!--连接数据库的url --><property name="url"value="jdbc:mysql://localhost/spring?useSSL=false"/><!--连接数据库的用户名 --><property name="username" value="root"/><!--连接数据库的密码 --><property name="password" value="root"/></bean><!-- 2.配置JDBC模板 --><bean id="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><!-- 默认必须使用数据源 --><property name="dataSource" ref="dataSource"/></bean><!-- 3.定义id为accountDao的Bean --><bean id="studentDao" class="com.itheima.dao.impl.StudentDaoImpl"><!-- 将jdbcTemplate注入到AccountDao实例中 --><property name="jdbcTemplate" ref="jdbcTemplate"/></bean><!-- 4.事务管理器,依赖于数据源 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!-- 5.注册事务管理器驱动 --><tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

4、编写Dao层方法

        创建StudentDao接口,在StudentDao接口中声明查询所有用户信息的方法。

public interface StudentDao {//查询所有账户public List<Student> findAllStudent();

5、实现Dao层方法

        创建StudentDaoImpl实现类,在StudentDaoImpl类中实现StudentDao接口中的findAllStudent()方法。

public class StudentDaoImpl implements StudentDao {// 声明JdbcTemplate属性,省略了setter方法private JdbcTemplate jdbcTemplate;public List<Student> findAllStudent() {String sql = "select * from student";RowMapper<Student> rowMapper =new BeanPropertyRowMapper<Student>(Student.class);// 执行静态的SQL查询,并通过RowMapper返回结果return this.jdbcTemplate.query(sql, rowMapper);}}

6、编写Controller层

        创建StudentController类,用于实现用户登录操作。

public class StudentController {public static void main(String[] args) {System.out.println("欢迎来到学生管理系统");System.out.println("请输入用户名:");Scanner sca = new Scanner(System.in);String name = sca.nextLine();// 加载配置文件ApplicationContext applicationContext = newClassPathXmlApplicationContext("applicationContext-student.xml");// 获取AccountDao实例StudentDao studentDao =(StudentDao) applicationContext.getBean("studentDao");// 执行findAllAccount()方法,获取Account对象的集合List<Student> student = studentDao.findAllStudent();// 循环输出集合中的对象for (Student stu : student) {if (name.equals(stu.getUsername())) {System.out.println("请输入" + stu.getUsername() + "的密码:");String mima = sca.nextLine();if (mima.equals(stu.getPassword())) {System.out.println("用户登录成功!");System.out.println(stu.getUsername() + "是" + stu.getCourse() + "班的");return;}} else {System.out.println("账号密码错误!");return;}}}
}

7、 查看运行结果

        在IDEA中启动StudentController类,在控制台按照提示输入账号密码进行登录。

欢迎来到学生管理系统
请输入用户名:
zhangsan
请输入zhangsan的密码:
123456
用户登录成功!
zhangsan是Java班的

这篇关于JavaEE——声明式事务管理案例:实现用户登录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048055

相关文章

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文