当前位置: 首页 > 后端技术 > Java

JAVA实现JWT注册窗口,手动操作mysql数据库

时间:2023-04-01 22:23:15 Java

1.JWT注册窗口包bysj_wzc.cilent;importjava.awt.*;importjavax.swing.*;importbysj_wzc.cilent.ClientReadAndPrint.OpenRegisterListen;//注册类publicclassRegister{JTextFieldtextField=null;JPasswordFieldpwdField=null;ClientReadAndPrint.RegisterListenlistener=null;ClientReadAndPrint.OpenLoginListenopenLgLt=null;//构造函数publicRegister(){init();}voidinit(){JFramejf=newJFrame("register");jf.setBounds(500,250,310,210);jf.setResizable(false);//设置是否缩放JPaneljp1=newJPanel();JLabelheadJLabel=newJLabel("注册界面");headJLabel.setFont(新字体(null,0,35));//设置文本的字体类型、样式和大小jp1.add(headJLabel);JPaneljp2=newJPanel();JLabelnameJLabel=newJLabel("用户名:");textField=newJTextField(20);JLabelpwdJLabel=newJLabel("密码:");pwdField=新J密码字段(20);JButtonregisterBtn=newJButton("注册");JButtonloginBtn=newJButton("有账号?登录");jp2.add(nameJLabel);jp2.add(文本字段);jp2.add(pwdJLabel);jp2.add(pwdField);jp2.add(registerBtn);jp2.add(loginBtn);JPaneljp=newJPanel(newBorderLayout());//BorderLayout布局jp.add(jp1,BorderLayout.NORTH);jp.add(jp2,BorderLayout.CENTER);//设置监听监听器=newClientReadAndPrint().newRegisterListen();//创建一个新的监听类listener.setJTextField(textField);//调用PoliceListen类的方法listener.setJPasswordField(pwdField);listener.setJFrame(jf);pwdField.addActionListener(侦听器);//为密码框添加监听器registerBtn.addActionListener(listener);//为按钮添加监听//设置开启登录监听openLgLt=newClientReadAndPrint().newOpenLoginListen();//创建一个新的监听类openLgLt.setJFrame(jf);逻辑nBtn.addActionListener(openLgLt);//按钮添加监听器jf.add(jp);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭图标函数jf.setVisible(true);//设置可见}}2、监听Class/************************注册Listener(内部类)************************/类RegisterListen实现ActionListener{JTextFieldtextField;J密码字段pwdField;JFrame注册JFrame;//注册窗口登录login=null;publicvoidsetJTextField(JTextFieldtextField){this.textField=textField;.pwdField=pwdField;}publicvoidsetJFrame(JFramejFrame){this.registerJFrame=jFrame;}publicvoidactionPerformed(ActionEventevent){userName=textField.getText();StringuserPwd=String.valueOf(pwdField.getPassword();//getPassword方法获取char数组//传账号号码密码注册inti=DBUtils.addData(userName,userPwd);if(i==-1){JOptionPane.showMessageDialog(registerJFrame,"该帐号已存在,请勿再次注册!","提示",JOptionPane.WARNING_MESSAGE);返回;}elseif(i==0){JOptionPane.showMessageDialog(registerJFrame,"注册失败,请检查参数是否超过大小","Prompt",JOptionPane.WARNING_MESSAGE);返回;}else{JOptionPane.showMessageDialog(registerJFrame,"添加成功!","提示",JOptionPane.WARNING_MESSAGE);}尝试{Thread.sleep(1500);}catch(Exceptione){e.printStackTrace();}登录=新登录();//创建一个新的登录窗口registerJFrame.setVisible(false);//隐藏注册窗口}}/**********************切换注册页面监听(内部类)***********************/类OpenRegisterListen实现ActionListener{JTextField文本字段;J密码字段pwdField;JFrame登录JFrame;//登录窗口注册register=null;publicvoidsetJTextField(JTextFieldtextField){this.textField=textField;publicvoidsetJFrame(JFramejFrame){this.loginJFrame=jFrame;}publicvoidactionPerformed(ActionEventevent){register=newRegister();//创建一个新的注册窗口loginJFrame.setVisible(false);//隐藏登录窗口}}3、数据库操作包bysj_wzc.util;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql。结果集元数据;导入java.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importjava.util.UUID;publicclassDBUtils{//加载数据库驱动com.mysql.jdbc.DriverprivatestaticStringdbdriver="com.mysql.cj.jdbc.Driver";//因为MySQL是8.0版本,所以需要加上cj,如果是5.0版本就不需要//获取mysql连接地址privatestaticStringdburl="jdbc:mysql://127.0.0.1:3306/数据库?&useSSL=false&serverTimezone=UTC";//这里的&serverTimezone=UTC很重要,因为之前有这个错误//DatanameprivatestaticStringusername="root";//数据库密码privatestaticStringuserpassword="admin";//获取数据连接publicstaticConnectionconn=null;//获取连接状态//下面是一个例子,其中database1是数据库名,下面是一条查询语句publicstaticvoidmain(String[]args)throwsSQLException{System.out.println("Enter");//列表<对象>x=getDataByNameAndPsd("1","1");intx=addData("44","44");System.out.println(x);}/***通过account获取用户数据*@paramuserNameaccount*@return*/publicstaticListgetDataByName(StringuserName){Listdata=getData("bysj","select*fromuserwhereuser_name=?",userName);返回数据;}/***通过账号和密码获取用户数据*@paramuserName账号*@parampassword密码*@return*/publicstaticListgetDataByNameAndPsd(StringuserName,Stringpassword){Listdata=getData("bysj","select*fromuserwhereuser_name=?andpassword=?",userName,password);返回数据;}/***通过账号和密码获取用户数据*@paramuserName账号*@parampasswordpassword*@return*/publicstaticintaddData(StringuserName,Stringpassword){//首先检查账号是否已经存在在数据库中Listdata=getDataByName(userName);if(data!=null&&data.size()>0){return-1;//-1表示数据库已有子账号,不能添加}/*执行insert*///获取用户的主键Stringid=UUID.randomUUID().toString().replaceAll("-","");//执行加法intcount=operateData("bysj","insertintouser(id,user_name,password)values(?,?,?)",id,userName,password);返回计数;}/***获取数据库连接**@parammydbName*@return*/privatestaticConnectiongetConn(StringmydbName){Connectionconn=null;尝试{Class.forName(dbdriver);StringmyjdbcUrl=dburl.replace("数据库",mydbName);conn=DriverManager.getConnection(myjdbcUrl,用户名,用户密码);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}返回康恩;}/***关闭数据库连接**@paramrs*@paramps*@paramconn*/privatestaticvoidcloseAll(ResultSetrs,PreparedStatementps,Connectionconn){if(rs!=null){try{rs.关闭();}赶上(SQLExceptione){e。打印堆栈跟踪();}}if(ps!=null){try{ps.close();}catch(SQLExceptione){e.printStackTrace();}}如果(conn==null)返回;尝试{conn.close();}catch(SQLExceptione){e.printStackTrace();}}/***查找表格,返回一个行列表,每个列表包含一个列列表。**@paramdbName*@paramsql*@return*/publicstaticListgetData(StringdbName,Stringsql,String...param){Connectionconn=getConn(dbName);PreparedStatementps=null;Listlist=newArrayList();结果集rs=null;尝试{ps=conn.prepareStatement(sql);//如果有传参if(param!=null){for(inti=0;i