Siapkan <br /> pada tahap awal <br />, pertama -tama, Anda harus memiliki ide umum, fungsi apa yang harus dicapai, untuk memahami aspek apa dari seluruh modul yang akan digunakan, dan untuk menemukan kekurangan Anda dari proses melakukan. Sebagian besar kemajuan teknis perlu keluar dari praktik.
Fungsi : Fungsi Pendaftaran Pengguna+Fungsi Login Sistem+Menghasilkan Kode Verifikasi
Pengetahuan : Desain Jendela, Desain Basis Data, Atribut Kemasan Javabean, Implementasi JDBC dari Koneksi Basis Data, Kode Verifikasi (termasuk Kode Verifikasi Warna) Teknologi pembuatan, dan beberapa seperti menggunakan informasi pendaftaran pengguna verifikasi ekspresi reguler, secara acak mendapatkan karakter untuk mendapatkan string karakter, Kontrol jumlah karakter dalam teks, dll.
Peta Pratinjau Modul Desain:
Pratinjau kode verifikasi warna:
Database yang Digunakan: MySQL
Desain Basis Data
Buat database db_database01, yang berisi tabel tb_user untuk menyimpan data pendaftaran pengguna.
Itu berisi 4 bidang
ID int (11)
Nama pengguna Varchar (15)
kata sandi varchar (20)
Email Varchar (45)
Pernyataan MySQL dapat dirancang seperti ini:
Buat skema db_database01; 1, "lixiyu", "lixiyu", [email protected]);
Gunakan lixiyu sebagai nama pengguna.
Pilih pernyataan untuk memeriksa formulir yang dibuat:
Tulis atribut pengguna kemasan javabean
paket com.lixiyu.model; Public void setId (int id) {this.id = id;} public string getUseerNeName () {return username;} public void setusername (string username) {thi s.username = username;} public string getPassword () {return kata sandi; } Public void setPassWord (kata sandi string) {this.password = kata sandi;} public string geteMail () {return email;} public void seitemail (strin g email) {this.email = email;}}
Tulis kelas alat JDBC
Tempatkan kode yang terkait dengan operasi database di antarmuka dbconfig dan kelas dbhelper
Antarmuka DBConfig digunakan untuk menyimpan database, nama pengguna, dan kode informasi kata sandi:
Paket com.lixiyu.util;
Untuk menyederhanakan pengembangan JDBC, DBHelper menggunakan kombinasi dbutil commons.
Kelas DBHelper mewarisi antarmuka DBConfig.
(1) Metode GetConnection (): Dapatkan koneksi basis data, gunakan sumber data MySQL untuk menyederhanakan pemrograman untuk menghindari kelainan karena memuat driver basis data.
(2) Metode eksist (): Tentukan apakah ada nama pengguna input.
(3) Metode Periksa (): Ketika pengguna memasukkan nama pengguna dan kata sandi, periksa apakah metode check () sudah benar.
(4) Simpan () Metode: Setelah pengguna memasukkan informasi pendaftaran hukum, simpan informasi.
Kode terperinci:
Paket Com.lixiyu.util; commons.dbutils.queryrunner; ; koneksi getConnection () {mysqldataSource mds = mysqldatasorce baru (); kata sandi); // atur kata sandi basis data {return mds.getConnection (); * untuk menentukan apakah pengguna yang menentukan nama pengguna tersedia. / Tentukan Koneksi Kueri (); // Dapatkan Hasil Hasil. RSH);) {// Jika ada data yang dikembalikan dalam daftar; .PrintStackTrace ();} Akhirnya. Gunakan komponen Commons Lang untuk menghindari injeksi SQL * * @Return: kembali ke true, kesalahan kembali ke false */ public static boolean check (string nama pengguna, char [] kata sandi) {username = stringscapeutils.escapesql (username); Input Nama Pengguna ke QueryRunner Runner = New QueryRunner (); / / Buat String Objek QueryRunner SQL = "Pilih Kata Sandi dari TB_USER WHONNAME = '" + Username + ";"; Plot HasilSethandler <Papen> rsh = new Scalalandler (); result.tocharray (); // arrays.fill kata sandi (querypasswork d, '0'); ); / Bersihkan Kata Sandi Kueri False;}} Catch (SQLException E) {E.PrintStackTrace ();} Jika pengembalian {dbutils.closequietly (Conn); Informasi terdaftar yang dimasukkan oleh Pengguna * * @Return: Jika Save berhasil dikembalikan ke True, kegagalan pelestarian mengembalikan false * / public static boolean simpan (pengguna pengguna) {queryrunner runner = new QuestionRunner (); Object String SQL = Insert Into TB_USER (Nama Pengguna, Kata Sandi, Email) (?, ?,?); "; .getPassword (), user.getemail ()}; ///////Jika save berhasil dikembalikan ke true return true;} else {// jika pelestarian gagal, return false return false;}} catch (sqlexception e) {e.printstacktrace ();} akhirnya { Equietly (Conn); // Tutup Koneksi} False;
Login Sistem
1.1 Desain Jendela
Gunakan tata letak BoxLayout untuk mengatur metode pengaturan kontrol dari atas ke bawah:
Salin kode kode sebagai berikut: contentpane.setLayout (boxlayout baru (contentpane, boxlayout.page_axis));
Jendela menggunakan kontrol, domain teks, domain kata sandi, tombol, dan kontrol lainnya untuk mengimplementasikan kode:
Login Public Extends JFRAME {private static long serialversionuid = -465235896173916415L Private JPanel ContentPane; ("" com.sun.java.swing.plaf.nimbus.nimbuslookandfeel ");} catch (throwable e) {eventqueue.invokeler (baru r) tidak tahu () {public void run () {coba {login frame = Login baru) baru (); Usernamepanel = new jpanel (); ; (); jpasswordfield (); = JLabel baru ("/U9A8C/U8BC1/U7801/UFF1A"); ValidateTextField.setFont (font baru ("Microsoft Yahei", Font.Plain, 15); ValidatePanel.Add (ValidateTextField); ValidateTextField.SetColumns (5); Randomttomtt ext = randomstringutils.randomalfanumer (4); CAPTCHALABEL = CAPTCHALABEL. ); ); BatalButton = JBUTTON baru ("EXIT"); .add (cancelButton);
Tampilan di jendela:
Swingutil kelas publik {/** Menurut ukuran wadah, koordinat sudut kiri atas dihitung. ) 2; koordinat sudut kiri}}
1.2 Memperoleh dan menggambar kode verifikasi
Kelas Publik CaptChalabel memperluas Jlabel {private static long serialversionuid = -963570191302793615L Private String Text; label} @Overridepublic void cat (grafik g) {super. G.DrawString (Teks, 5, 25);
*Kode verifikasi warna:
Public Class ColorfulCaptChalabel memperluas Jlabel {private static final long serialversionuid = -963570191302793615l; .gray, color.green, color.light_gray, color.magenta, color.orange, color.pink, color.red, color.yllow}; .text = Teks; .SetFont (font baru ("Microsoft Yahei", Font.Plain, 16)); [Color Randomutils.NextInt (Colors.Length));
1.3 sekolah yang tidak sulit
if (username.isempty ()) {// Tentukan apakah nama penggunanya empung. (Kata sandi) .isempty ()) {// Tentukan apakah kata sandi itu kosong jobpane.showmessagealog (ini, "kata sandi tidak dapat kosong!", "Warningpane.warning_message); return;} if (valid ate.isempty ())) {// Tentukan apakah kode verifikasi adalah emptypanepane.showmessagedialog (ini, "kode verifikasi tidak dapat kosong!", "Informasi peringatan", jobpane.warning_message);
1.4 Verifikasi Legalitas
if (! dbhelper.exists (username)) {// Jika nama pengguna tidak ada, itu akan meminta jobpane.showmessageDialog (ini, "nama pengguna tidak ada!", "Warningpane.warning_message); return;} jika ( ! untuk meminta JobPane.ShowMessageDialog (ini, "Kesalahan Kode Verifikasi!", "Informasi Peringatan", JobParning_Message);
1.5 Tampilkan jendela utama
Eventqueue.invokelateer (runnable baru () {@Overridepublic void run () {mainframe frame = baru mainframe (); // Buat frame window utama.setVisible (true); // Atur jendela utama untuk melihat} catch (pengecualian e ) {E.PrintStackTrace ();}}});
Desain jendela utama (relatif sederhana ini):
Mainframe publik () {setDefaultCloseOperation (jFrame.exit_on_close); ContentPane .setLayout (BorderLayout baru (0, 0)); El .setfont (font baru ("microsoft yahei", font.plain, 40); // atur tag font contentpane.add (Tiplabel, borderlayout.center); // label aplikasi setlocation (swingutil.centrecontainer (getSI ze ()) )); // Biarkan jendela berdiri di tengah jendela}
Pendaftaran Pengguna
1.1 Desain Jendela
Register Public Extends JFrame {/****/Private Final Long Seralization = 2491294229716316338L Private JPanel; Tampilkan informasi prompt/*** Luncurkan aplikasi.*/Public static void main (string [] art) {coba {uimanager.setLookandFeel ("com.sun.java.plaf.nimbus.ni.ni mbuslookandfeel");} Catch (Throwable e) {e.printstacktrace ();} eventqueue.invokelo (runnable baru () {@Overridepublic void run () {try {register frame = newer (); f rame.setVisible (true);} catch (Exception e ) {E.PrintStackTrace ();}}});}/*** Buat bingkai.*/Register publik () {settitle ("/u7528/u6ce8/u518c"); jpanel (); /u540d/uff1a "); uernamelabel.setfont ke /U7684 /U7b57/u7b26/u7b26/u4e32 "); abstrakdocument doc = (abstractdocument) usernetextfield.getDocument (); doc.setDocumentFilter (dokumen baru (15)); // batasi panjang karakter dalam domain teks. (Dokumen baru, 15); "); PasswordLabel1.SetFont toSet (" Microsoft Yahei ", Font.Plain, 15)); PasswordPanel1.Add (Passwordfield1 = Newwordfield (Passwordfordfield1 = newwordfield (); abstrctDocument) kata sandi1.getDocument (); doc.setDocumentsfilter (documentsument) (getDocument (); doc. 20)); .setColumns (10); 15); DocumeentSizelisizer, 20)); .add (emailPanel); ); .adddocumentListener (Dokumen baru, 45); ; , Font.Plain, 15); = Jbutton baru ("/u53d6/u6d88"); Yahei ", font.plain, 15); Buttonpanel.add (cancelButton); pack (); // Secara otomatis menyesuaikan ukuran jendela setlocation (swingutil.centRecontrecontrecontrecontrecontrontrytre (getSize ())); bagian tengah jendela}
1.2 Gunakan DocumentFilter untuk membatasi jumlah karakter yang tersedia dalam teks
Dokumen Public. , Int Office, String String, Attributeset Attr) melempar BadLocationException {if (fb.getDocume (). GetLength () + string.length ()) <= MaxSize) Large -Length super.insertString (fb, offset, string, attr) ; Melempar BadLocationException {if (fb.getDocument (). GetLength () + text.length () <= maxSize) {// super.replace (fb, offset, length, text, attrs); class} else {toolkit.getDefaultToolKit ().
1.3 Gunakan antarmuka DocumentListener untuk mengimplementasikan kontrol teks tampilan.
Dokumen Kelas Publikzelisizelisizelisizelisizeize DocumentListener {private Jlabel Tiplabel Private Int MaxSize; OuVerridepublic void removenate (DocumentEvent e) {SetTipText (e);}@osuepublic voidUpdate (DocumentEvent e) {setTtipsext (e);} private void setTtiptext (DocumentEvent e) {Document doc = e.getDocument ();// dapatkan Objek Dokumen TipLabel.SetForeground (Color.Black); %Tiplabel. () + "/" + maxSize);}}
1.4 sekolah yang tidak sulit
if (username.isempty ()) {// Tentukan apakah nama penggunanya empung. (Password1) .isempty ()) {// Tentukan apakah kata sandi itu kosong koran. ()) {// Menilai apakah kata sandi konfirmasi adalah emptypanepane.showmessageDialog (ini, "mengonfirmasi kata sandi tidak dapat kosong!", "WarningPane.warning_message); pty ()) {{// apakah email tersebut emptypanepane.showmessagealog (Ini, "Email tidak bisa kosong!", "Informasi peringatan", Jobpane.warning_message);
1.5 Gunakan string verifikasi ekspresi reguler (verifikasi legitimasi)
// Gandum apakah nama pengguna legal jika (! Pattern.matches ("// w {5,15}", nama pengguna) {jobpane.showmessageDialog (ini, "Harap masukkan nama pengguna yang sah!", "Informasi peringatan" , Jobpane.warning_message); Ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, ini, input kata sandi yang berbeda ini! "," "," "" Informasi peringatan ", jobpane.warning_message); return;} // periksa apakah alamat emailnya sah jika (! Pattern.matches (" // w+@/w+/w+", email) { jobpine.showmessagedial g (ini, "Harap masukkan email hukum!", "Informasi peringatan", jobpane.warning_message); Log (ini, "nama pengguna sudah ada", "informasi peringatan", jobpane.warning_message);
1.6 Simpan informasi pendaftaran
Pengguna = pengguna baru (); If (dbhelper.save (user)) {jobpane.showmessagealog (ini "pendaftaran pengguna!" Ane. Information_message); ;}}}
Pada titik ini, modul pendaftaran login yang sederhana dan lengkap selesai.
Di atas adalah semua isi artikel ini.