该小项目可在界面输入用户名和密码,对数据库内信息进行比对,点击注册可向数据库写入信息,密码由MD5加密

效果如下:



数据库中用户表如下:

使用的数据库管理工具为 Navicat

1:连接MySQL数据库代码

(不知道Java怎么连接数据库的可看我的其他文章)
话不多说,直接上代码: 详细代码如下

import java.math.BigInteger;
import java.security.MessageDigest;
import java.sql.*;public class Mysqlcode{static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";  static final String DB_URL = "jdbc:mysql://localhost:3306/lbbrary?useSSL=false&serverTimezone=UTC";private String name="root";private String pwd="520000";//函数进行MD5加密public static String getMD5String(String str) {try {// 生成一个MD5加密计算摘要MessageDigest md = MessageDigest.getInstance("MD5");// 计算md5函数md.update(str.getBytes());// digest()最后确定返回md5 hash值,返回值为8位字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符// BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值//一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方)return new BigInteger(1, md.digest()).toString(16);} catch (Exception e) {e.printStackTrace();return null;}}//链接数据库验证密码public void gotomysql( String uname,String upwd) {Connection coon =null;Statement stmt =null;try {Class.forName(JDBC_DRIVER);System.out.println("链接数据库");coon = DriverManager.getConnection(DB_URL,name,pwd);System.out.println(" 实例化Statement对象...");stmt = coon.createStatement();String sql;//根据用户名查找是否有符号的密码sql = "SELECT UNAME,PASSWORD FROM users where UNAME='x'";sql=sql.replaceFirst("x", uname);System.out.println(sql);ResultSet rs = stmt.executeQuery(sql);while(rs.next()) {String username =rs.getNString("UNAME");String PASSWD =rs.getNString("PASSWORD");LoginStatue lo=new LoginStatue();upwd=getMD5String(upwd);System.out.println(upwd);if(uname.equals(username)&&upwd.equals(PASSWD)) {lo.loginsuccess();lo.listerner();//点击退出结束程序System.out.println(username);System.out.println(PASSWD);}else{lo.loginbreakdown();lo.listerner();//点击退出结束程序System.out.print("密码错误");}}rs.close();stmt.close();coon.close();}catch(SQLException se){// 处理 JDBC 错误se.printStackTrace();}catch(Exception e){// 处理 Class.forName 错误e.printStackTrace();}finally{// 关闭资源try{if(stmt!=null) stmt.close();}catch(SQLException se2){}// 什么都不做try{if(coon!=null) coon.close();}catch(SQLException se){se.printStackTrace();}}System.out.println("Goodbye!");}public void addinfo(String newname,String newpsw) {Connection coon =null;Statement stmt =null;try {Class.forName(JDBC_DRIVER);System.out.println("链接数据库");coon = DriverManager.getConnection(DB_URL,name,pwd);System.out.println(" 实例化Statement对象...");stmt = coon.createStatement();String sql;//md5加密String password=getMD5String(newpsw);//插入数据库sql = "insert into users (UNAME,PASSWORD)"+"VALUES (?,?)";try (PreparedStatement pStatement = coon.prepareStatement(sql)) {pStatement.setString(1, newname);pStatement.setString(2, password);pStatement.execute();//执行}System.out.println("注册成功");stmt.close();coon.close();}catch(SQLException se){// 处理 JDBC 错误se.printStackTrace();}catch(Exception e){// 处理 Class.forName 错误e.printStackTrace();}finally{// 关闭资源try{if(stmt!=null) stmt.close();}catch(SQLException se2){}// 什么都不做try{if(coon!=null) coon.close();}catch(SQLException se){se.printStackTrace();}}System.out.println("Goodbye!");}
}

登陆界面
代码如下

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class homepage {private JFrame jFrame = new JFrame("登录");private Container c = jFrame.getContentPane();private JLabel a1 = new JLabel("用户名");private JTextField username = new JTextField();private JLabel a2 = new JLabel("密   码");private JPasswordField password = new JPasswordField();private JButton okbtn = new JButton("确定");private JButton enrolled = new JButton("注册");public void dome() {//设置窗体的位置及大小jFrame.setBounds(600, 200, 300, 220);//设置一层相当于桌布的东西c.setLayout(new BorderLayout());//布局管理器//设置按下右上角X号后关闭jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//初始化--往窗体里放其他控件init();//设置窗体可见jFrame.setVisible(true);}public void init() {/*标题部分--North*/JPanel titlePanel = new JPanel();titlePanel.setLayout(new FlowLayout());titlePanel.add(new JLabel("mysql登录系统"));c.add(titlePanel, "North");/*输入部分--Center*/JPanel fieldPanel = new JPanel();fieldPanel.setLayout(null);a1.setBounds(50, 20, 50, 20);a2.setBounds(50, 60, 50, 20);fieldPanel.add(a1);fieldPanel.add(a2);username.setBounds(110, 20, 120, 20);password.setBounds(110, 60, 120, 20);fieldPanel.add(username);fieldPanel.add(password);c.add(fieldPanel, "Center");/*按钮部分--South*/JPanel buttonPanel = new JPanel();buttonPanel.setLayout(new FlowLayout());buttonPanel.add(okbtn);buttonPanel.add(enrolled);c.add(buttonPanel, "South");}public  void listerner() {//确认按下去获取okbtn.addActionListener(new ActionListener() {//@OverrideMysqlcode t1=new Mysqlcode();public void actionPerformed(ActionEvent e) {String uname = username.getText();String upwd = String.valueOf(password.getPassword());t1.gotomysql(uname,upwd);}});//点击注册进行操作enrolled.addActionListener(new ActionListener() {//@OverrideEnrolled enrolled=new Enrolled();public void actionPerformed(ActionEvent e) {enrolled.dome();enrolled.listerner();}});
}
public static void main(String[] args) {homepage mysql=new homepage();mysql.dome();mysql.listerner();
}
}

注册界面:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Enrolled {//标题private JFrame jFrame = new JFrame("注册");private Container c = jFrame.getContentPane();private JLabel a1 = new JLabel("用户名");private JTextField username = new JTextField();private JLabel a2 = new JLabel("密   码");private JPasswordField password = new JPasswordField();private JButton okbtn = new JButton("提交");private JButton cancel = new JButton("取消");public void dome() {//设置窗体的位置及大小jFrame.setBounds(600, 200, 300, 220);//设置一层相当于桌布的东西c.setLayout(new BorderLayout());//布局管理器//设置按下右上角X号后关闭jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//初始化--往窗体里放其他控件init();//设置窗体可见jFrame.setVisible(true);}public void init() {/*标题部分--North*/JPanel titlePanel = new JPanel();titlePanel.setLayout(new FlowLayout());titlePanel.add(new JLabel("mysql用户注册"));c.add(titlePanel, "North");/*输入部分--Center*/JPanel fieldPanel = new JPanel();fieldPanel.setLayout(null);a1.setBounds(50, 20, 50, 20);a2.setBounds(50, 60, 50, 20);fieldPanel.add(a1);fieldPanel.add(a2);username.setBounds(110, 20, 120, 20);password.setBounds(110, 60, 120, 20);fieldPanel.add(username);fieldPanel.add(password);c.add(fieldPanel, "Center");/*按钮部分--South*/JPanel buttonPanel = new JPanel();buttonPanel.setLayout(new FlowLayout());buttonPanel.add(okbtn);buttonPanel.add(cancel);c.add(buttonPanel, "South");}//点击反应public  void listerner() {//确认按下去获取并发送数据到数据库okbtn.addActionListener(new ActionListener() {//@OverrideMysqlcode t1=new Mysqlcode();public void actionPerformed(ActionEvent e) {//打开一个登陆新页面String newname = username.getText();String newpwd = String.valueOf(password.getPassword());t1.addinfo(newname, newpwd);homepage home=new homepage();home.dome();home.listerner();}});//点击取消进行操作cancel.addActionListener(new ActionListener() {//@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});}}

最后的登陆提示框:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class LoginStatue {private JFrame jFrame = new JFrame("Error");private Container c = jFrame.getContentPane();private JButton out = new JButton("退出");public void loginsuccess() {jFrame.setBounds(300, 200, 300, 120);//设置一层相当于桌布的东西c.setLayout(new BorderLayout());//布局管理器//设置按下右上角X号后关闭jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//初始化--往窗体里放其他控件init(2);//设置窗体可见jFrame.setVisible(true);}public void loginbreakdown() {//设置窗体的位置及大小jFrame.setBounds(300, 200, 300, 120);//设置一层相当于桌布的东西c.setLayout(new BorderLayout());//布局管理器//设置按下右上角X号后关闭jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//初始化--往窗体里放其他控件init(1);//设置窗体可见jFrame.setVisible(true);}public void init( int x) {/*标题部分--North*/JPanel titlePanel = new JPanel();titlePanel.setLayout(new FlowLayout());if(x==1) {titlePanel.add(new JLabel("用户名或密码错误!"));}if(x==2) {titlePanel.add(new JLabel("登陆成功,欢迎你的到来!"));}c.add(titlePanel, "Center");//按钮JPanel buttonPanel = new JPanel();buttonPanel.setLayout(new FlowLayout());buttonPanel.add(out);c.add(buttonPanel, "South");}public  void listerner() {//确认按下去获取out.addActionListener(new ActionListener() {//@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});}
}

java中使用swing和mysql完成最简单登陆注册验证相关推荐

  1. 在java中使用JDBC连接mysql数据库时的服务器时区值无法识别或表示多个时区的问题解决方案

    项目场景: 在java中使用JDBC连接mysql数据库时,报以下的错:Exception in thread "main" java.sql.SQLException: The ...

  2. Java 中的 Swing 框架现在是不是被淘汰了?

    关于java中的Swing框架,我先说下如下的观点. 1 只要是用java开发的商业项目,就指着来挣钱的项目,都不会用Swing框架. 2 所以对java初学者来说,根本没必要学swing,甚至连类似 ...

  3. PHP+Mysql 实现最简单的注册登录

    PHP+Mysql 实现最简单的注册登录 一.先将两个服务打开 二.创建数据库 create database test; // 创建一个叫test的数据库 use test; // 进入这个数据库 ...

  4. java中class.forname连接mysql数据库_数据库链接与 Class.forName()用法详解

    主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 ...

  5. java中class.forname连接mysql数据库_Java加载数据库连接驱动,为什么要用Class.forName()方法?...

    展开全部 目的是为了实例化对象. Class.forName("")返回的是类e68a84323131333532363134313032313635333133336564363 ...

  6. Java中的XSL转换:一种简单的方法

    XSL转换 (XSLT)是将一个XML文档转换为另一个XML文档的强大机制. 但是,在Java中,XML操作相当冗长和复杂. 即使是简单的XSL转换,也必须编写几十行代码-如果需要适当的异常处理和日志 ...

  7. CentOS 7中源码安装MySQL 5.7.16 ----已测试验证

    最近在CentOS 7中源码安装MySQL 5.7.6+,发现MySQL5.7.6+以后的安装方式真的与以前版本的MySQL安装方式大大的不同呀.不自己安装一把,你都不知道不同之处在哪,下面这篇文章是 ...

  8. Java中final、finally、finalize的简单区别,中等区别,详细区别(Lawliet 修改+注释版)

    简单区别:      中等区别:    虽然这三个单词在Java中都存在,但是并没有太多关联:  final:java中的关键字,修饰符. 1.如果一个类被声明为final,就意味着它不能再派生出新的 ...

  9. Java 中的 断言 (assert)—— 初识 简单的使用和理解~只要这一篇就够了

    首先老样子,三个方面来理解 断言是个啥(尝试初步<理解>) 如何使用(到底咋子个用,啥时候用) 个人的思考理解和总结(说话不负责时间) 断言与if的区别 断言和异常的区别 总结 新年快乐! ...

最新文章

  1. kindeditor-网页文字编辑
  2. 解决ubuntu修改密码 Module is unknow报错
  3. 【LeetCode从零单排】No67.AddBinary
  4. 蚁剑特征性信息修改简单过WAF
  5. Unity SRP自定义渲染管线 -- 1.Custom Pipeline
  6. iOS自定义SearchBar样式
  7. 【机器人学】机器人运动学基础
  8. win10edge启用html5,win10系统下edge浏览器怎么启用和禁用flash
  9. 那些年啊,那些事——一个程序员的奋斗史 ——18
  10. 区块链对人类产生的变革
  11. 银联支付(网银h5)
  12. C语言常见问题(3):Although the value stored to ‘ret‘ is used in the enclosing expression
  13. 【Codeforces613D】Kingdom and its Cities【虚树】【Tree DP】
  14. STL学习——RB-tree篇
  15. 如何写专业的数据分析报告
  16. UG NX 10.0 GRIP 二次开发
  17. 赛普拉斯CYpress,初接触之一电磁感应触摸按键demo
  18. 网络连接成功,但浏览器显示网络未连接
  19. 《成为学习高手》小记
  20. vue使用“.ttf“字体包

热门文章

  1. WordPress一点优化企业主题模板制作教程
  2. 《if you refuse directly》——如果你直接拒绝【英文美文短篇】
  3. 8.1分享zwh分享图
  4. 2013年全国计算机等级考试考务工作的通知,关于做好2013年下半年全国计算机等级考试考务工作的通知...
  5. 四种方法解决01背包问题
  6. 运西瓜货车轮胎过热自燃 众人砸瓜救火(图)
  7. (SWAT-5)气象数据的准备(中国区域高精度同化气象站CMADS)
  8. Java获取首字母拼音码和五笔码
  9. 首款MeeGo系统上网本 华硕Eee PC X101H独家首测(1)
  10. Bootstrap之移动设备优先、栅格系统、媒体查询,响应式式布局