-
2021-04-27 13:53:08
Java实现简单的登录功能,代码如下:
import java.util.Scanner; public class 登录界面 { public static void main(String[] args) { int[] passwordBox=new int[] {123,124,125}; String[] userBox= {"xxx","许xx","迪迦"}; Scanner input=new Scanner(System.in); System.out.println("请输入账号"); String user=input.nextLine(); System.out.println("请输入密码"); int password=input.nextInt(); boolean b=false; for(int i=0;i<userBox.length;i++) { if(userBox[i].equals(user)) { if(passwordBox[i]==password) { System.out.println("登录成功"); b=true; } break; } } if(!b) { System.out.println("账号或密码错误"); } input.close(); } }
更多相关内容 -
Java实现登录功能(一)
2022-04-07 10:42:45Java实现登录功能(一) 文章目录Java实现登录功能(一)前言一、Token的认证流程及优点二、JWT1.MySQL2.Tomcat3.Redis4.Mongo5.Nacos6.RabbitMQ7.ElasticSearch8.Kibana总结 前言 刚开始学习Java的时候,你是否有...Java实现登录功能(一)
文章目录
前言
刚开始学习Java的时候,你是否有过疑问,登录功能就是简单地查询数据库对比一下账号密码就行了吗?在进行权限认证的时候,又该怎么办呢?每次都在提交的表单上加上账号密码吗?在这种情况下又该怎么防止CSRF(跨站请求伪造)呢?
以下介绍一种现在流行的基于JWT的Token认证实现的登录功能。
一、Token的认证流程及优点
认证流程:
1.客户端发送带有用户名和密码参数的登录请求
2.服务端收到请求,验证用户名和密码
3.验证通过后,服务端签发Token并返回token给客户端
4.客户端收到Token后存储到Cookie或者Storage等中
5.客户端每次向服务端请求资源时需要在cookie或者header请求头中携带服务端签发的token
6.服务端收到请求后验证客户端请求携带的token,如果验证通过就向客户端返回请求数据
一般情况下,Token是被Header请求头所携带的。
有着以下优点:1.支持跨域:Cookie是无法跨域的,而Token可以放在header请求头发送,所以支持跨域。
2.无状态:Token认证方式在服务端不需要像传统的Session认证方式那样去记录SessionId,因为Token本身包含了登录用户的信息,可以减轻服务端的压力。
3.支持移动端、小程序:当客户端是非浏览器平台时,Cookie是不被支持的,此时采用在Header请求头携带Token的认证方式会显得简单
4.能避免CSRF失效:由于CSRF依赖于Cookie,所以由Header请求头携带Token的认证方式不会发生CSRF,所以能避免CSRF说明
CSRF——跨站请求伪造。其原理是通过伪造成其它内容的请求地址,诱导用户触发请求。如果用户在登录状态下触发请求,将会自动携带Cookie访问服务端,服务端接收请求后检查到Cookie内部的用户信息会认为是登录用户本人的操作。
二、JWT
JWT(JSON Web Token)是一种比较主流的使用规范。其结构分别由Header标头、Payload有效负载、Signature签名算法三部分组成。
1.Header负责记录令牌类型、签名算法等。 such as: {"alg":"HS256","type","JWT"} 2.Payload负责声明一些标准以及携带一些用户信息 {"userId":"1","username":"mayikt"} 标准声明: iss:JWT签发者 sub:JWT所面向的用户 aud:JWT的接收者 exp:JWT的过期时间,过期时间必须大于签发时间 nbf:JWT的生效时间 iat:JWT的签发时间 jti:JWT的唯一身份标识,避免重复 自定义的声明: 一些不敏感的用户信息。 such as: {"iss":"CJJ","sub":"custom","exp":"1640000000","iat":"1632000000","jti":"156sad54a615a4d56ad15a6sd15s8924","userId":"1"} 3.Signature防止Token被篡改,加盐,确保安全性
三、Java基于JWT实现登录功能
1.引入pom依赖
<dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.18.3</version> </dependency>
2.编写JWT工具类
import com.auth0.jwt.JWT; import com.auth0.jwt.JWTVerifier; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.exceptions.JWTDecodeException; import com.auth0.jwt.interfaces.DecodedJWT; import com.example.demo.domain.User; import java.io.UnsupportedEncodingException; import java.util.Date; import java.util.HashMap; import java.util.Map; public class JWTUtil { //token有效时长 private static final long EXPIRE=30*60*1000L; //token的密钥 可自行定义 private static final String SECRET="jwt"; public static String createToken(User user) throws UnsupportedEncodingException { //token过期时间 Date date=new Date(System.currentTimeMillis()+EXPIRE); //jwt的header部分 Map<String ,Object>map=new HashMap<>(); map.put("alg","HS256"); map.put("typ","JWT"); //使用jwt的api生成token String token= JWT.create() .withHeader(map) .withClaim("username", user.getUsername())//私有声明 .withExpiresAt(date)//过期时间 .withIssuedAt(new Date())//签发时间 .sign(Algorithm.HMAC256(SECRET));//签名 return token; } /** * 校验token的有效性 * 1 token的header和payload是否没改过 * 2 没有过期 */ public static boolean verify(String token){ try { //解密 JWTVerifier verifier=JWT.require(Algorithm.HMAC256(SECRET)).build(); verifier.verify(token); return true; }catch (Exception e){ return false; } } //无需解密也可以获取token的信息 public static String getUsername(String token){ try { DecodedJWT jwt = JWT.decode(token); return jwt.getClaim("username").asString(); } catch (JWTDecodeException e) { return null; } } }
3.编写登录接口
domain、mapper、service层请自行编写,其中Result类是统一返回结果集类
import com.example.demo.domain.User; import com.example.demo.service.UserService; import com.example.demo.utils.JWTUtil; import com.example.demo.utils.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.UnsupportedEncodingException; @RestController public class LoginController { @Autowired private UserService userService; @PostMapping("/login") public Result login(@RequestParam String username, @RequestParam String password) throws UnsupportedEncodingException { User user=userService.getUserByPass(username, password); if(user == null){ return Result.fail("用户名或密码错误"); } //登录成功则调用JWTUtil类的创建Token方法返回客户端 String token= JWTUtil.createToken(user); return Result.succ(200,"登陆成功",token); } }
4.Java后端校验Token测试
import com.example.demo.utils.Result; import com.example.demo.utils.JWTUtil; import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/user") public class UserController { @GetMapping("/test") public Result test(HttpServletRequest request){ String token=req.getHeader("Authorization"); if(token == null){ return Result.fail("尚未登录"); } //获取到token中的用户信息 System.out.println(JWTUtil.getUsername(token)); //可自行编写获取用户信息后的操作 //...... return Result.succ("test"); } }
此处仅进行测试,后续博客将介绍安全框架搭配使用。
5.Vue登录页面中的存储Token方法
methods: { submitLogin() { this.$refs.loginForm.validate((valid) => { if (valid) { this.loading = true this.postRequest('/login', this.loginForm, 'form').then((resp) => { if (resp) { // 存储用户token const tokenStr = resp.obj.tokenHead + resp.obj.token window.sessionStorage.setItem('tokenStr', tokenStr) let path = this.$route.query.redirect this.$router.replace( path == '/' || path == undefined ? '/home' : path ) } }) } else { this.$message.error('你还有未填写的信息') return false } }) }, },
6.Vue前端每次请求资源携带Token方法
import axios from 'axios' // 请求拦截器 axios.interceptors.request.use(config => { if (window.sessionStorage.getItem('tokenStr')) { //请求携带自定义token config.headers['Authorization'] = window.sessionStorage.getItem('tokenStr'); } return config }, error => { console.log(error); })
温馨提示:
遇到报错跨域问题可参考 解决跨域问题
总结
本文简单地介绍了基于JWT的Token认证方式实现的登录功能。
-
使用Java代码实现登录注册功能
2021-03-09 18:32:52实现思路:分别创建5个包和5个类{cn.f.pojo(User.java);cn.f.Dao(UserDao.java);cn.f.Dao.impl(UserDaoImpl.java); cn.f.game(GuessNumber.java); cn.f.test(UserTest.java)}第一步:封装cn.f.pojo(User.java)类...实现思路:分别创建5个包和5个类{cn.f.pojo(User.java);cn.f.Dao(UserDao.java);cn.f.Dao.impl(UserDaoImpl.java); cn.f.game(GuessNumber.java); cn.f.test(UserTest.java)}
第一步:
封装cn.f.pojo(User.java)类
代码:
package cn.f.pojo;
public class User {
private String name;
private String mima;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMima() {
return mima;
}
public void setMima(String mima) {
this.mima = mima;
}
public User(String name, String mima) {
super();
this.name = name;
this.mima = mima;
}
public User() {
super();
}
@Override
public String toString() {
return "User [name=" + name + ", mima=" + mima + "]";
}
}
第二步:
创建一个用户登录注册接口cn.f.Dao(UserDao.java)
代码:
package cn.f.Dao;
import cn.f.pojo.User;
public interface UserDao {
// 这是登陆功能
public abstract boolean isLogin(String name,String mima);
//这是注册功能
public abstract void regist(User user);
}
第三步:
创建一个实现用户登录注册功能实现类cn.f.Dao.impl(UserDaoImpl.java)
代码:
package cn.f.Dao.impl;
import java.util.ArrayList;
import cn.f.Dao.UserDao;
import cn.f.pojo.User;
//这是用户操作具体实现类
public class UserDaoImpl implements UserDao {
// 为了让多个方法能够使用一个集合,就把集合定义为成员变量
// 为了不让外人看到,就用private
// 为了让多个对象共享同一个成员变量用static
private static ArrayList u = new ArrayList();
@Override
public boolean isLogin(String name, String mima) {
// 遍历集合,获取每一个用户,并判断该用户名和密码是否和传递过来的匹配
boolean flag = false;
for (User s : u) {
if (s.getName().equals(name) && s.getMima().equals(mima)) {
flag = true;
break;
}
}
return flag;
}
@Override
public void regist(User user) {
// 把用户信息存储集合
u.add(user);
}
}
第四步:
增加用户体验用户注册登录成功后给用户玩个小游戏cn.f.game(GuessNumber.java)
代码:
package cn.f.game;
import java.util.Scanner;
public class GuessNumber {
private GuessNumber() {
}
public static void strat() {
// 产生一个随机数
int number = (int) (Math.random() * 100) + 1;
// 定义一个统计变量
int count = 0;
while (true) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数据(1-100):");
int guessNumber = sc.nextInt();
count++;
// 判断
if (guessNumber > number) {
System.out.println("你猜的数据" + guessNumber + "大了");
} else if (guessNumber < number) {
System.out.println("你猜的数据" + guessNumber + "小了");
} else {
System.out.println("恭喜你,"+count+"次猜中了!");
break;
}
}
}
}
第五步:
实现用户登录注册功能测试cn.f.test(UserTest.java)
代码:
package cn.f.test;
import java.util.Scanner;
import cn.f.Dao.UserDao;
import cn.f.Dao.impl.UserDaoImpl;
import cn.f.game.GuessNumber;
import cn.f.pojo.User;
public class UserTest {
static Scanner sc = new Scanner(System.in);
// 多态
static UserDao ud = new UserDaoImpl();
public static void main(String[] args) {
while (true) {
// 欢迎界面,给出选项
System.out.println("-------------欢迎光临--------------");
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("3.退出");
System.out.println("请输入你的选择:");
// 键盘录入选择,根据选择做出不同的操作
// 为了后面录入信息的方便,我所有的数据录入全部用字符接受
String m = sc.nextLine();
switch (m) {
case "1":
denglu();
break;
case "2":
zhuce();
break;
case "3":
default:
System.out.println("谢谢使用,欢迎下次再来!");
System.exit(0);
}
}
}
public static void denglu() {
System.out.println("-------------登录界面(请先注册后再登录!)--------------");
System.out.println("请输入用户名:");
String n = sc.nextLine();
System.out.println("请输入密码:");
String p = sc.nextLine();
// 调用登录功能
boolean flag = ud.isLogin(n, p);
if (flag) {
System.out.println("登录成功!奖励你玩游戏。");
System.out.println("你要玩吗?y/n");
while (true) {
String r = sc.nextLine();
if (r.equalsIgnoreCase("y")) {
// 玩游戏
GuessNumber.strat();
System.out.println("是否继续游戏?y/n");
}else{
break;
}
}
System.out.println("谢谢使用,欢迎下次再来!");
System.exit(0);
} else {
System.out.println("用户名或者密码有误,登录失败!");
}
}
public static void zhuce() {
// 注册界面,请输入用户名和密码
System.out.println("-------------注册界面--------------");
System.out.println("请输入用户名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String mima = sc.nextLine();
// 把用户名和密码封装到一个对象中
User user = new User();
user.setName(name);
user.setMima(mima);
// 调用注册功能
ud.regist(user);
System.out.println("注册成功!");
}
}
代码运行结果:
-------------欢迎光临--------------
1.登录
2.注册
3.退出
请输入你的选择:
1
-------------登录界面(请先注册后再登录!)--------------
请输入用户名:
232
请输入密码:
232
用户名或者密码有误,登录失败!
-------------欢迎光临--------------
1.登录
2.注册
3.退出
请输入你的选择:
2
-------------注册界面--------------
请输入用户名:
1234
请输入密码:
1234
注册成功!
-------------欢迎光临--------------
1.登录
2.注册
3.退出
请输入你的选择:
1
-------------登录界面(请先注册后再登录!)--------------
请输入用户名:
1234
请输入密码:
1234
登录成功!奖励你玩游戏。
你要玩吗?y/n
y
请输入数据(1-100):
67
你猜的数据67小了
请输入数据(1-100):
87
你猜的数据87大了
请输入数据(1-100):
80
你猜的数据80大了
请输入数据(1-100):
78
你猜的数据78大了
请输入数据(1-100):
76
你猜的数据76大了
请输入数据(1-100):
74
你猜的数据74小了
请输入数据(1-100):
75
恭喜你,7次猜中了!
是否继续游戏?y/n
n
谢谢使用,欢迎下次再来!
-
JAVA实现QQ登录、注册等功能
2022-05-09 19:54:29实现的功能具体如下: 1、登录功能 2、注册功能 3、是否隐藏密码的选择以及实现功能 4、选择性别功能 5、密码与确认密码功能 6、登录页面实时展示当前的时间 7、当登录时用户名与密码在数据库中没有相匹配的...本文主要应用的技术有:GUI、JDBC、多线程
实现的功能具体如下:
1、登录功能
2、注册功能
3、是否隐藏密码的选择以及实现功能
4、选择性别功能
5、密码与确认密码功能
6、登录页面实时展示当前的时间
7、当登录时用户名与密码在数据库中没有相匹配的数据,则会跳转到注册页面上去。
8、同样,注册完毕后,数据会运用JDBC将数据写入数据库中,然后跳转回登录页面。
登录页面:
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.time.LocalTime; public class JDBC_登录功能 { public static void main(String[] args) { guitext3 gt=new guitext3(); new Thread(new time1(gt.time)).start();//启动线程 } } class guitext3 { JFrame jf; JLabel l1,l2,time; JTextField f1; JPasswordField f2; JButton jb1,jb2; JCheckBox jc; public guitext3() { jf = new JFrame("QQ登录窗口"); jf.setSize(320,250); jf.setLocation(700,300);//设置窗口每次启动都显示在屏幕正中央 jf.setLayout(null); Font font = new Font("仿宋", Font.BOLD, 20);//设置统一的字体,让代码更加整洁美观 l1 = new JLabel("用户名:"); l1.setBounds(10,10,100,40); l1.setFont(font); f1 = new JTextField(null,20); f1.setBounds(90,15,180,30); f1.setFont(font); l2 = new JLabel("密 码:"); l2.setBounds(8,50,100,40); l2.setFont(font); f2=new JPasswordField(null,20); f2.setBounds(90,55,180,30); f2.setEchoChar('*');//设置密码的外显为* f2.setFont(font); jc=new JCheckBox("显示密码"); jc.setBounds(230,130,80,40); jc.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) {//被选中 f2.setEchoChar((char) 0); } else { f2.setEchoChar('*'); } } }); ActionListener listener=new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { } }; jc.addActionListener(listener); jb1 = new JButton("登录"); jb1.setBounds(30,100,80,40); time=new JLabel(); time.setBounds(30,150,140,40); time.setFont(font); //匿名内部类 jb1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { Statement st=null; Connection con=null; ResultSet rs=null; try { //注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //这里的3306/后跟的是数据库名 //获取数据库连接 String url="jdbc:mysql://localhost:3306/students?serverTimezone=GMT%2B8"; //通过DriverManager完成注册 con= DriverManager.getConnection(url,"root","123");//你自己的数据库用户名和密码 //执行SQL语句 String sql="select * from student";//from 后跟表名 st=con.createStatement(); rs=st.executeQuery(sql); boolean flag=false; while(rs.next()){ //如果输入的用户名和密码与数据库中的用户和对应的密码相同,则弹出“登录成功!”的窗口 if(f1.getText().equals(rs.getString(1))&&f2.getText().equals(rs.getString(2))){ JOptionPane.showMessageDialog(null, "登录成功!"); flag=true;//登陆成功后将标记改为true方便确认 break; } } if(flag==false){//如果标记为false,则表示用户名和密码在数据库中未找到,弹出“登录失败!请注册账户!”的窗口 JOptionPane.showMessageDialog(null, "登录失败!请注册账户!"); f1.setText(null);//清空用户栏 f2.setText(null);//清空密码栏 //这个账号不存在,需要注册,跳转到注册窗口 guitext4 gt=new guitext4(); jf.dispose();//关闭窗体,释放所有资源 } } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } } }); jb1.setFont(font); jb2 = new JButton("退出"); jb2.setBounds(150,100,80,40); //匿名内部类 jb2.addMouseListener(new MouseAdapter() { //重写鼠标点击事件 public void mouseClicked(MouseEvent e) {//如果点击了退出窗口,则弹出“退出成功!”的窗口 JOptionPane.showMessageDialog(null, "退出成功!"); //系统退出 System.exit(0); } }); jb2.setFont(font); //将这些按钮和文本等加入到窗体中 jf.add(l1); jf.add(f1); jf.add(l2); jf.add(f2); jf.add(jb1); jf.add(jb2); jf.add(time); jf.add(jc); jf.setVisible(true);//让组件显示 } } //写一个时间线程类 class time1 implements Runnable{ JLabel time;//方便传参 public time1(JLabel time) { this.time = time; } public void run(){ while (true) { try { Thread.sleep(1000);//休眠1秒 LocalTime time=LocalTime.now();//获取当前时间 this.time.setText(time.toString());//设置JLabel文本 //SimpleDateFormat t = new SimpleDateFormat ("HH:mm:ss");//格式化时间,把时间格式化为时:分:秒 // this.time.setText(t.format(time));//给标签添加内容,即时间 } catch (InterruptedException e) { e.printStackTrace(); } } } }
注册页面:
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; public class JDBC_注册功能 { public static void main(String[] args) { guitext4 gt=new guitext4(); } } class guitext4{ JFrame jf; // JPanel jp; JLabel l1,l2,l3; JTextField f1; JPasswordField f2,f3; JButton jb1,jb2; JRadioButton jr1,jr2; JCheckBox jc; public guitext4() { jf = new JFrame("QQ注册窗口"); jf.setSize(320,280);//设置窗体大小 jf.setLocation(700,300);//设置窗口每次启动都显示在屏幕正中央 jf.setLayout(null); // jp = new JPanel(); Font font = new Font("仿宋", Font.BOLD, 20);//设置统一的字体,让代码更加整洁美观 l1 = new JLabel("用户名:"); l1.setBounds(10,10,100,40); l1.setFont(font); f1 = new JTextField(null,20); f1.setBounds(90,15,180,30); f1.setFont(font); l2 = new JLabel("密 码:"); l2.setBounds(8, 50, 100, 40); l2.setFont(font); f2 = new JPasswordField(null, 20); f2.setBounds(90, 55, 180, 30); f2.setEchoChar('*');//设置密码的外显为* f2.setFont(font); l3 = new JLabel("确认密码:"); l3.setBounds(8, 88, 130, 40); l3.setFont(font); f3 = new JPasswordField(null, 20); f3.setBounds(120, 95, 160, 30); f3.setEchoChar('*');//设置密码的外显为* jc=new JCheckBox("显示密码");//创建一个复选按钮 jc.setBounds(230,130,80,40); jc.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) {//被选中 f2.setEchoChar((char) 0);//显示原本的数据 f3.setEchoChar((char)0);//显示原本的数据 } else { f2.setEchoChar('*');//设置密码的外显为* f3.setEchoChar('*');//设置密码的外显为* } } }); f3.setFont(font); ButtonGroup group = new ButtonGroup(); //创建两个单选按钮 jr1 = new JRadioButton("男"); jr1.setBounds(70, 130, 80, 40); jr1.setFont(font); jr2 = new JRadioButton("女"); jr2.setBounds(150, 130, 80, 40); jr2.setFont(font); //将两个单选按钮加入到同一个ButtonGroup组中 group.add(jr1); group.add(jr2); //实现监听接口 ActionListener listener = new AbstractAction() { @Override //actionPerformed==>发生动作时调用 public void actionPerformed(ActionEvent e) { } }; jr1.addActionListener(listener); jr2.addActionListener(listener); jc.addActionListener(listener); jb1 = new JButton("注册"); jb1.setBounds(50, 170, 80, 40); //匿名内部类 jb1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { PreparedStatement ps = null;//PreparedStatement==>表示预编译的SQL语句的对象。 // SQL语句已预编译并存储在PreparedStatement对象中。 Connection con = null;//Connection==>与特定数据库的连接 try { //注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //这里的3306/后跟的是数据库名 //获取数据库连接 String url = "jdbc:mysql://localhost:3306/students?serverTimezone=GMT%2B8"; //通过DriverManager完成注册 con = DriverManager.getConnection(url, "root", "123");//你自己数据库的用户名和密码 //执行SQL语句 String sql = "insert into student(username,password,sex) values(?,?,?)"; ps = con.prepareStatement(sql); if(f1.getText().length()!=0){ //注:这里的所有getText()都不能写成!=null ps.setString(1, f1.getText()); }else{ JOptionPane.showMessageDialog(null, "姓名不能为空!");//弹出窗口 } if(f2.getText().length()!=0) { ps.setString(2, f2.getText()); }else{ JOptionPane.showMessageDialog(null, "密码不能为空!"); } if(jr1.isSelected()||jr2.isSelected()) {//如果选择男或者女,就存入数据库。 if (jr1.isSelected()) {//isSelected()==>判断按钮有没有被选中 ps.setString(3, jr1.getText());//选中男,则将sex=男添加到数据 } if (jr2.isSelected()) { ps.setString(3, jr2.getText());//选中女,则将sex=女添加到数据 } }else{//否则弹出窗口提醒“请选择性别!” JOptionPane.showMessageDialog(null, "请选择性别!"); } } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } if (new String(f2.getPassword()).equals(new String(f3.getPassword()))) {//如果密码与确认密码一致 if (new String(f2.getPassword()).equals(new String(f3.getPassword()))&&f1.getText().length()!=0&&f2.getText().length()!=0 &&(jr1.isSelected()||jr2.isSelected())) {//如果密码与确认密码一致,用户名和密码不为空并且选择了性别,则注册成功 JOptionPane.showMessageDialog(null, "注册成功!"); //注册成功后跳转到登录窗口 guitext3 gt = new guitext3(); jf.dispose();//关闭窗体,释放所有资源 try { int i = ps.executeUpdate();//将注册的账户存储到数据库中 } catch (SQLException ex) { ex.printStackTrace(); } } } else { JOptionPane.showMessageDialog(null, "注册失败!密码与确认密码不一致!"); f2.setText(null);//清空密码 f3.setText(null);//清空确认密码 } } }); jb1.setFont(font); jb2 = new JButton("退出"); jb2.setBounds(170, 170, 80, 40); //匿名内部类 jb2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { JOptionPane.showMessageDialog(null, "退出成功!"); //系统退出 System.exit(0); } }); jb2.setFont(font); jf.add(l1); jf.add(f1); jf.add(l2); jf.add(f2); jf.add(l3); jf.add(f3); jf.add(jr1); jf.add(jr2); jf.add(jc); jf.add(jb1); jf.add(jb2); // jf.add(jp); jf.setVisible(true); } }
登录页面运行结果:
注册页面运行结果:
是否隐藏密码效果图:
-
java实现登录功能
2020-11-21 17:49:58import java.util.Scanner; public class LoginTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int i=3;i>0;i--){ System.out.println("请输入您的用户名和... -
Java实现登录和注册功能
2022-05-12 16:36:57我们要利用Java的图形化界面编程实现一个拥有注册和登录简单功能的案例 设计思路:首先我们要实现注册功能,就要有一个用来储存用户名和密码的对象,这里所采用的对象就是文件,通过IO流操作,将用户名和密码以字符... -
java 连接数据库实现用户登录功能
2012-12-08 19:24:27java 连接数据库实现用户登录功能 能运行成功,适合初学者借鉴学习。 -
Java实现登录功能(含修改密码 退出登录等)
2021-07-07 14:15:581.登录页面如图 2.业务准备 2.1.用户实体类 public class User { /** * 用户ID */ private Integer id; /** * 用户账号 */ private String userCode; /** * 用户名 */ private String userName; /** ... -
Java Web实现简单的登录功能
2021-12-20 22:28:25用Java+jsp实现简单的用户登录功能,适合新手写登录功能。 -
java短信验证码登录功能设计与实现
2021-11-20 11:09:14前言 现在不管是各类的网站,还是大小社交app,登录方式是越来越多了,其中基于短信验证码的登录可以说是各类app必不可少的方式,短信验证码登录以其高效,安全,便捷等特性受到许多用户...倒计时功能,前后端如何配合 -
java实现模拟用户登录功能
2021-11-24 22:29:13java实现模拟用户登录 功能描述 运用String类与Scanner类实现模拟用户登录基础功能,简单的登录验证模拟程序。 本案例要求编写一个程序,模拟用户登录,程序要求如下。 (1)用户名和密码正确,提示登录成功。 (2)用户名... -
Java实现人脸登录、注册等功能【完整版】
2022-05-11 21:54:06不再输入账号密码进行手动登录与注册,而是使用JQuery调用本机的摄像头进行拍摄照片,然后调用人脸识别接口将人脸信息自动注册进所使用的平台(百度云/Face++)后,用户即可进行人脸扫描实现登录操作。 项目搭建 1. ... -
java订单功能实现
2020-05-21 14:34:17java订单功能实现逻辑 在商城项目中,之前我们介绍了购物车功能模块的实现,商品加入到购物车之后,就是到购物车结算,然后显示购物车的商品列表,点击去结算,然后到了未提交前的订单列表,点击提交订单后,生成此... -
java实现收藏功能
2020-08-18 16:17:00java实现收藏功能 需求分析 分析: 1.要求用户必须登录,否则提示 2.第一次点击,表示收藏成功,收藏数+1,显示蓝色星星 3.第二次点击,表示取消收藏操作,收藏数-1,显示白色星星 ------------------------------------... -
java实现发送短信验证码功能
2015-04-17 19:44:36使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口(遵循短信平台的接口规范即可)发送短信验证码 -
java实现置顶功能
2020-08-18 12:31:561.为表添加排序字段,默认值0 2.语句 UPDATE t_ued_icon_package SET sequence = (SELECT se+ 1 FROM (SELECT MAX(sequence) ASse FROM t_ued_icon_package) IP) ...再使用orderb... -
java连接MySql数据库 实现用户登录功能
2018-02-13 14:03:19一: 准备工作 1.首先将MySql的jar包导入项目文件中,在进行连接。(Build path--> Add) 2.写好配置文件(dbinfo.properties) 3...二:具体实现 1:登录界面 public class DengLu { public static v... -
Java实现验证码验证功能
2017-02-22 21:42:03Java如何实现验证码验证功能呢?日常生活中,验证码随处可见,他可以在一定程度上保护账号安全,那么他是怎么实现的呢? Java实现验证码验证功能其实非常简单:用到了一个Graphics类在画板上绘制字母,随机选取一定... -
java实现简单的注册登录
2022-03-14 17:57:21定义一个Login类实现注册登录,(控制台版,无界面) import javax.swing.*; import java.util.Scanner; public class Login extends JFrame { //声明用户名和密码 private String username; private String pwd... -
java+mysql实现最基本的用户登录注册功能
2018-08-02 18:29:34mysql驱动包:... java代码如下 import java.sql.*; import java.util.*; ...public class Login { ... * 用以实现用户的注册和登录 */ private static String... -
【java实现简单的登录界面】
2022-01-26 14:27:24我们可以用java实现简单的登录界面。 -
java 查询功能实现的八种方式
2019-05-09 14:37:266. Java Persistence API = JPA 、JPQL 相关文章:JPA criteria 查询:类型安全与面向对象 @PersistenceContext private EntityManager em; ... String querySql = "SELECT xxx_id FROM xxxsibility WHERE dxxpxxxnt... -
使用JAVA实现邮件发送功能
2022-04-07 17:01:23使用Java实现邮件发送(文本邮件,单个附件邮件,多个附件邮件)。 -
Java实现在线聊天功能
2020-07-09 10:14:03创建Client.java import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; /** * @author Lete * @乐特的程序永无BUG * @createDate 2020- 07-04 22:13 * * 1. ... -
Java Swing实现登陆功能
2019-09-10 13:55:56Java Swing实现登陆功能使用swing实现用户登录功能构建用户登录界面程序入口 使用swing实现用户登录功能 构建用户登录界面 /** * @author FeianLing * @date 2019/9/9 */ @Data @Slf4j public class LoginV ... -
java web实现简单留言板功能
2021-02-12 16:31:18本文实例为大家分享了java web实现简单留言板的具体代码,供大家参考,具体内容如下一、目标用户可以登录并记住密码进入留言板,添加留言,点击留言列表中的标题可显示该条留言全部内容。二、相关知识1、使用Cookie... -
Java实现排行榜功能
2021-06-05 12:06:42最近项目需要开发一个排行榜功能,根据订单金额进行排名,同金额排名相同,不同则跳过,序列递增。 技术实现 MySQL 通过SQL语句也能实现,不过SQL过于复杂,也不好维护。 SELECT CASE WHEN @pre = final_score... -
Java实现银行管理系统注册,登录,查询,存款,取款,退出功能
2022-04-02 12:30:38【开发该软件的操作系统】:windows10 【软件开发环境/开发工具】:PyCharm 【编程语言】:Python 【开发目的】:这是老师布置的作业啦~...import java.util.Scanner; import com.cx.bank.manager.Managerlmpl; pu