原生Java+mysql登录验证

client

login.java

功能:实现登录页面,与服务端传来的数据验证

package LoginRegister;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;

import javax.swing.*;

public class Login extends JFrame {

String user;
String pwd;
String struser[] = new String[2];
public Login() {
setBounds(200, 200, 400, 250);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(null);
setTitle("登录");
JLabel jl = new JLabel("username");
jl.setBounds(50, 50, 100, 20);
JLabel j2 = new JLabel("password");
j2.setBounds(50, 100, 100, 20);
JTextField jt = new JTextField();
jt.setBounds(150, 50, 200, 20);
JPasswordField jp = new JPasswordField();
jp.setBounds(150, 100, 200, 20);
JButton btn = new JButton("登录");
btn.setBounds(150, 150, 100, 30);
c.add(jl);
c.add(jt);
c.add(j2);
c.add(jp);
c.add(btn);
btn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
user = jt.getText();// 获取用户名;
pwd = new String(jp.getPassword());// 获取、转换密码;
if(user!=null&&pwd!=null) {//判断输入的值是否完整
String data = SendLogin.sendLoginUser(user, pwd);

Pattern p = Pattern.compile("&");//使用正则表达式,获取
String[] type = p.split(data);
String conState=type[0];
String exsitsState = type[1];

if(conState.equals("true")&&exsitsState.equals("true")) {
System.out.println("登录成功!");
}else {
if(conState.equals("false")) {
System.out.println("服务器连接失败!");
}
if(exsitsState.equals("false")) {
System.out.println("帐户不存在!");

}
}
}else {
System.out.println("请填写完整!");
}

}
});
}
public static void main(String[] args) {
Login login = new Login();
login.setVisible(true);
login.setResizable(false);// 设置窗体不可改变大小

}
}

SendLogin.java

功能:实现客户端的数据传输给服务端,与服务端交换数据。

package LoginRegister;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class SendLogin {
public static String sendLoginUser(String username, String password) {
String data=null;
try {
Socket client = new Socket("127.0.0.1", 1100);// 连接服务器;
System.out.println("连接成功!");
OutputStream out = client.getOutputStream();
// String message = "服务器你好,我是客户端";
String strUser[] = new String[2];
strUser[0] = username;
strUser[1] = password;
String user = "username=" + username + "&" + "password=" + password;
out.write(user.getBytes());

InputStream in = client.getInputStream();
byte bt[] = new byte[1024];
int len = in.read(bt);
data = new String(bt, 0, len);
System.out.println("服务器发来消息:" + data);

client.close();// 关闭连接;
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return data;
}

}

server

Server.java

功能:实现与客户端的数据交互

package com.login.server;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.regex.Pattern;

import com.login.mysql.MysqlConnect;

public class Server {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(1100);//创建服务器套接字,开启1100端口;
System.out.println("服务器启动成功,等待用户接入……");
Socket client = server.accept();//等待用户接入;

InputStream in = client.getInputStream();
byte bt[] = new byte[1024];
int len = in.read(bt);
String data = new String(bt,0,len);
//System.out.println("客户端发来消息:"+data);

Pattern a = Pattern.compile("&");//使用正则表达式,获取
String[] type = a.split(data);

Pattern b = Pattern.compile("=");//使用正则表达式,获取
String[] type2 = b.split(type[0]);

Pattern c = Pattern.compile("=");//使用正则表达式,获取
String[] type201 = c.split(type[1]);

String username = type2[1];
String password = type201[1];

//System.out.println(username);
//System.out.println(password);

OutputStream out = client.getOutputStream();
String returninfo = MysqlConnect.login(username, password);
//String message = "客户端你好,我是服务器";
out.write(returninfo.getBytes());

client.close();//关闭连接;
System.out.println("有客户端接入,客户端IP:"+client.getInetAddress());//获取客户端地址;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

MysqlConnect.java

功能:连接数据库,查询数据

package com.login.mysql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MysqlConnect {
public static String login(String user,String pwd) {
String userstate = null;
String conState="false";
String infoState="false";

String userDemo = user;
String pwdDemo = pwd;
try {
Class mysql = Class.forName("com.mysql.jdbc.Driver");
Connection con = null; // 连接数据库的接口;
PreparedStatement state = null;// 发送sql语句
ResultSet rs = null; // 结果集接口;

String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123456";
String sql = "SELECT username,password FROM user WHERE username=? and password =?";

con = DriverManager.getConnection(url, username, password);// 连接数据库;

if(con!=null) {
conState = "true";
}
state = con.prepareStatement(sql);
state.setString(1, userDemo);
state.setString(2, pwdDemo);

rs = state.executeQuery();
String exisit = null;
while(rs.next()) {
exisit =rs.getString(1);//判断是否有满足条件的一行
}

if(exisit!=null) {
infoState="true";
}
//System.out.println(exisit);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
userstate = conState+"&"+infoState;
return userstate;
}
}

JavaSwing+Mysql实现简单的登录界面+用户是否存在验证的更多相关文章

  1. ASP .NET登录界面用户验证码代码

    //ASP .NET用户登录界面经常用到验证码代码如下 private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码 ...

  2. sencha做个简单的登录界面

    很多人都在群里问要一个好看的登录界面,我表示很无奈,哪有好看的,每个人的要求不一样,要好看的只有自己做. 下面是我自己整理的一个通用版的登录界面,稍做修改,很容易能变成你想要的界面, 不说废话,直接上 ...

  3. JAVA web简单的登录界面jsp实现

    此次试验所用到的软件是myeclipse10,tomcat7,Dreamweaver,sqlserver2008数据库.可以实现用户使用用户名和密码登录.如果登录成功,页面会显示登录成功,如果密码错误 ...

  4. CSS样式案例(2)-制作一个简单的登录界面

    首先来张完工的效果图. 一.html文件如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  5. Qt实践基础-简单的登录界面的实现

    主要代码的实现: 1.为了更好的实现界面的组织,采用C++直接构建UI 2.登录多次密码错误则断开“确认”按钮的链接 3.注意理解static变量的应用 4.QString类的使用更像继承了strin ...

  6. 混合开发的大趋势之一React Native之简单的登录界面

    转载请注明出处:王亟亟的大牛之路 这些天都在学习RN这部分吧,然后写了个简单的登陆业务,从"实战"中讲解吧 还是继续安利:https://github.com/ddwhan0123 ...

  7. 第一次Java作业——简单的登录界面

    千里之行,始于足下,从小做起,一点一滴学编程. import javax.swing.*; import java.awt.*; public class Homework{ public stati ...

  8. JSP+MySQL最简单的登录和注册的实现 --Java Web温习

    一.开发环境 开发工具:eclipse 2018-09 操作系统:win10 二.实现 1.目录结构: 2.数据库(创建tmp数据库,新建user表,user表结构如下) 3.功能简介 功能比较简单, ...

  9. express+mysql实现简单的登录功能

    登录页面图: node.js文件代码: const express=require("express"); const app=express(); const path=requ ...

随机推荐

  1. REST,RPC和GraphQL应用场景,WebHooks、WebSocket、HTTP Streaming应用场景。

    一.请求--响应API. 请求--响应类的API的典型做法是,通过基于HTTP的Web服务器暴露一个/套接口.API定义一些端点,客户端发送数据的请求到这些端点,Web服务器处理这些请求,然后返回响应 ...

  2. 反射修改 static final 变量

    一.测试结论 static final 修饰的基本类型和String类型不能通过反射修改; 二.测试案例 @Test public void test01() throws Exception { s ...

  3. 数据可视化之分析篇(八)Power BI数据分析应用:结构百分比分析法

    https://zhuanlan.zhihu.com/p/113113765 PowerBI数据分析02:结构百分比分析法 作者:海艳 结构百分比分析法,又称纵向分析,是指同一期间财务报表中不同项目间 ...

  4. 数据可视化之PowerQuery篇(六)PowerQuery技巧:批量合并Excel表的指定列

    本文来源于一个星友的问题,他有上百个Excel表格,格式并不完全一样,列的位置顺序也不同,但每个表都有几个共同列,这种情况下,能不能通过Power Query把这些表格共同的列批量合并呢? 当然是可以 ...

  5. 用maven打包java项目的pom文件配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. Eclipse默认快捷键说明

    Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...

  7. JAVA面向对象:三大特征 封装讲解

    一.JAVA封装 1.封装的理解 封装是 JAVA 面向对象思想的 一 种特性,也是一种信息隐蔽的技术 2.封装的原则 将类中的某些信息隐藏起来,来防止外部程序直接访问,通过类中的方法实现对隐藏的信息 ...

  8. 利用服务器+jsDelivr+GitHub搭建咱的免费图床

    前言 有人就问了你这个标题写错了?不应该是PicGo+jsDelivr+GitHub搭建咱的免费图床吗? 2333,是一个上传程序啊,不系写错了. 程序介绍 目前程序已实现两种模式上传到GitHub或 ...

  9. Web Security Academy ___XXE injection___Lab

    实验网站:https://portswigger.net/web-security/xxe XXE学习看一参考下面这篇文章,讲得很全: https://xz.aliyun.com/t/3357#toc ...

  10. Shell基本语法---if语句

    if语句 格式 #单分支 if [ 条件判断 ]; then 执行动作 fi if [ 条件判断 ]; then 执行动作 else 执行动作 fi #多分支 if [条件判断]; then 执行动作 ...