Подготовьте <br /> на ранних этапах <br />, прежде всего, вы должны четко иметь общую идею, какие функции достичь, чтобы понять, какие аспекты всего модуля использовать, и обнаружить ваши недостатки от процесс выполнения. Большая часть технического прогресса должна исходить из практики.
Функция : Функция регистрации пользователя+Функция входа в систему+генерация кода проверки
Знание : дизайн окна, дизайн базы данных, атрибуты упаковки Javabean, реализация JDBC подключения к базе данных, технология генерации кода проверки цвета цвета) и некоторые, такие как использование информации о регистрации пользователя регулярного выражения, случайным образом получение символов для получения строки символов, строка символов,,, строка символов. управление количеством символов в тексте и т. Д.
Предварительный просмотр модуля дизайна:
Предварительный просмотр кода проверки цвета:
Используется база данных: MySQL
Дизайн базы данных
Создайте базу данных db_database01, которая содержит таблицу TB_USER для сохранения данных регистрации пользователей.
Он содержит 4 поля
id int (11)
Имя пользователя VARCHAR (15)
пароль varchar (20)
Электронная почта Varchar (45)
Заявление MySQL может быть спроектировано таким образом:
Создать схему db_database01; 1, "lixiyu", "lixiyu", [email protected]);
Используйте Lixiyu в качестве имени пользователя.
Выберите оператор, чтобы проверить созданную форму:
Напишите атрибуты пользователя упаковки Javabean
Пакет Com.lixiyu.model; Public void setId (int id) {this.id = id;} public String getUseerName () {return username;} public void setUsername (string username) {thi s.username = username;} public String getPassword () {return пароль; } Public void setPassword (String password) {this.password = password;} public String getemail () {return email;} public void seitemail (strin g email) {this.email = email;}}
Напишите класс инструментов JDBC
Разместите код, связанный с операцией базы данных в интерфейсе DBConfig и классе DBHELPER
Интерфейс DBConfig используется для сохранения базы данных, имени пользователя и информации о информации пароля:
Пакет com.lixiyu.util;
Чтобы упростить разработку JDBC, Dbhelper использовал комбинацию Dbutil Commons.
Класс DBHELPER наследует интерфейс DBConfig.
(1) Метод GetConnection (): Получите подключение к базе данных, используйте источник данных MySQL для упрощения программирования, чтобы избежать аномалий из -за загрузки драйверов базы данных.
(2) Существует метод () Метод: определить, существует ли имя пользователя ввода.
(3) Метод проверки (): Когда пользователь входит в имя пользователя и пароль, проверьте, является ли метод проверки () правильным.
(4) Метод сохранения (): После того, как пользователь входит в правовую информацию, сохраните информацию.
Подробный код:
Пакет com.lixiyu.util; Commons.dbutils.queryrunner; ; Connection getConnection () {mysqladatasource mds = new mysqladatasorce (); пароль); * Чтобы определить, доступен ли пользователь, который указывает имя пользователя. / Определите запрос connnection (); rsh); .printstacktrace ();} Наконец. Используйте компонент Commons LANG, чтобы избежать инъекции SQL * * @return: вернуться к True, ошибка вернуться к False */ public Static Boolean проверка (String username, char [] пароль) {username = stringscapeutils.escapesql (username); Имя пользователя в QueryRunner Runner = new QueryRunner (); / / Создать строку объекта QueryRunner SQL = "Выберите пароль от TB_USER WHERENAME = '" + username + "';"; Результаты графика Ethandler <object> rsh = new Scalalandler (); result.tocharray (); // пароль Arrays.fill (QueryPassword D, '0'); ); Зарегистрированная информация, введенная пользователем * * @return: если сохранение успешно возвращается в True, отказ сохранения возвращает False * / public Static Boolean Save (пользователь пользователя) {QueryRunner Runner = new Obrowrunner (); Строка объекта SQL = "Вставьте в TB_USER (Имя пользователя, пароль, электронная почта) значения (?,?,?);"; .getPassword (), user.getemail ()}; /////////если сохранение успешно возвращается в True return True;} else {// Если сохранение не удается, верните false return false;}} catch (sqlexception e) {e.printstacktrace ();} наконец {{ Equietty (conn);
Система входа в систему
1.1 Дизайн окна
Используйте макет Boxlayout, чтобы установить метод расположения управления сверху вниз:
Копий код следующим образом: contentPane.setLayout (new Boxlayout (ContentPane, Boxlayout.page_axis));
В окне используются элементы управления, текстовые домены, домены паролей, кнопки и другие элементы управления для реализации кода:
Общественный класс расширяется ("" com.sun.java.swing.plaf.nimbus.nimbuslookandfeel ");} catch (throwable e) {eventqueue.invokeler (new r) unnable () {public void run () {try {login frame = new login (); usernamepanel = new jpanel (); ; (); jpassword (); = new jlabel ("/u9a8c/u8bc1/u7801/uff1a"); ValidateTextfield.setFont (new Font ("Microsoft yahei", font.plain, 15); validatepanel.add (valiveTeTextField); valiTeTextext.SetColumns (5); randomTttomtt ext = randomStringutils.randomalphanumeric (4); ); ; Cancelbutton = new Jbutton ("Exit"); .Add (CancelButton);
Отображение в окне:
Public Class Swingutil {** Согласно размеру контейнера, рассчитываются верхний левый угол. / 2; левый угловой координаты}}
1.2
Общественный класс Captchalabel расширяет Jlabel {private static final long serialversionuid = -963570191302793615l; Метка} @OverridePublic void Paint (Graphics G) {Super. G.drawstring (текст, 5, 25);
*Код проверки цвета:
Public Class ProlastcaptChalabel Extens Jlabel {Private Static Long Long SerialVersionuid = -963570191302793615L; .gray, color.green, color.light_gray, color.magenta, color.orange, color.pink, color.red, color.yllow}; .Text = Text; .SetFont (новый шрифт ("Microsoft Yahei", Font.Plain, 16)); [color randomutils.nextint (colors.length));
1.3 Не -Тимпатная школа
if (username.isempty ()) {// определить, является ли имя пользователя umptypanepane.showmessagealog (это, «Имя пользователя не может быть пустым!», «Предупреждающая информация», Jobpane.warning_message); (Пароль) .isempty ()) {// определить, является ли пароль пустым jobpane.showmessagedialog (это, «пароль не может быть пустым!», «Warningpane.warning_message); return;} if (ate ate.isempty ())))) {// Определите, является ли код проверки пустым panepane.showmessageedialog (это, «код проверки не может быть пустым!», «Предупреждающая информация», Jobpane.warning_message);
1.4 Проверка законности
if (! dbhelper.exists (username)) {// Если имя пользователя не существует, оно предложит jobpane.showmessageDialog (это, «Имя пользователя не существует!», «WarningPane.warning_Message); return;} if (if ( ! Чтобы вызвать JobPane.showmessageDialog (это, «ошибка кода проверки!», «Предупреждающая информация», JobParning_message);
1.5 Показать главное окно
EventQueue.invokelateer (new Runnable () {@OverridePublic void run () {ManaFframe frame = new ManainFrame (); // Создать основное окно Frame.setVisible (true); // Установите главное окно, чтобы увидеть} catch (исключение e {e.printstacktrace ();}}});
Проектируйте главное окно (относительно простое это):
Public Manicframe () {SetDefaultCloseoPeration (jframe.exit_on_close); ContentPane .SetLayout (New BorderLayout (0, 0)); El .setfont (новый шрифт ("Microsoft yahei", font.plain, 40); // set tag fonts contentpane.add (tiplabel, borderlayout.center); // метка приложения Setlocation (swingutil.centrecontainer (getsi ze ()) ); // Пусть окно стоять в середине окна}
Регистрация пользователя
1.1 Дизайн окна
Регистр открытого класса расширяет {/****/ Отображать информацию о приглашении/*** Запустите приложение.*/Public static void main (string [] art) {try {uimanager.setlookandfeel ("com.sun.java.plaf.nimbus.ni.ni mbuslookandfeel");} поймать (Throwable e) {e.printstackTrace ();} eventQueue.invokelo (new Runnable () {@OverridePublic void run () {try {register frame = newer (); f rame.setvisible (true);} catch (исключение e {e.printstacktrace ();}}});}/*** Создание кадра new jpanel (); /u540d/uff1a "); uernamelabel.setfont to. w jtextfield (); usernametextfield.settooltipex U7684 /U7B57/U7B26/U7B26/U4E32 "); AbstractDocument DOC = (AbstractDocument) userNametextfield.getDocument (); doc.SetDocumentFilter (new DocumentIzefilter (15); // Ограничение длины характера в текстовом домене 15Doc.AddDocumentLireler (Новый документ, 15); "); PasswordLabel1.SetFont toset (« Microsoft YaHei », FONT.Plain, 15)); PasswordPanel1.Add (password1 = newwordfield (phorshordfield1 = newwordfield (); AbstractDocument) password1.getDocument (); Doc.SetDocumentfilter (new Documentize) 20); .setColumns (10); 15); DocumeEntizeLisizer, 20); .Add (EmailPanel); ); .AddocumentListener (новый документ, 45); ; , font.plain, 15); = New jbutton ("/u53d6/u6d88"); Yahei ", font.plain, 15); buttonpanel.add (cancelbutton); pack (); // автоматически регулировать размер установки окна (swingutil.centrecontrecontrecontrecontrecontr Ainer (getSize ()); // Пусть у окна в середина окна}
1.2 Используйте DocumentFilter, чтобы ограничить количество символов, доступных в тексте
Общедоступный класс Documentizefilter Extends DocumentFilter {private int maxSize; , Int Office, String String, AttributeSet Attr) Throws BadlocationException {if (fb.getDocume (). GetLength () + string.length ()) <= maxSize) большая -length super.insertString (fb, смещение, строка, атрит) ; // Вызовите метод родительского класса} else {toolkit.getdefaulttoolkit (). Throws BadlocationException {if (fb.getDocument (). GetLength () + text.length () <= maxSize) {// super.replace (fb, смещение, длина, текст, атрис); Класс} else {toolkit.getDefaulttoolkit ().
1.3 Используйте интерфейс DocumentListener, чтобы реализовать управление текстом отображения.
Общедоступный класс DocumentIsizeSizeLisizeLisizelisizeLisize Elements DocumentListener {Private Jlabel Tiplabel; }@ Ouverridepublic void removenate (documentevent e) {settiptext (e);}@osuepublic voidupdate (documentevent e) {settiptext (e);} private void setteptext (documentevent e) {document doc = e.getdocument (); // Объект документа tiplabel.setforeground (color.black); %tiplabel. () + "/" + maxSize);}}
1.4 Не -Темпатная школа
if (username.isempty ()) {// определить, является ли имя пользователя umptypanepane.showmessagealog (это, «Имя пользователя не может быть пустым!», «Предупреждающая информация», Jobpane.warning_message); (Password1) .isempty ()) {// определить, является ли пароль пустым Newspane.showmessageDialog (это, «Пароль не может быть пустым!», «WarningPane.warning_message); return;} if (new S tring (пароль2). ()) {// Оценить, является ли пароль подтверждения пустым (Это «электронная почта не может быть пустой!», «Предупреждающая информация», Jobpane.warning_message);
1.5 Используйте строку проверки регулярного выражения (проверка легитимности)
// пшеница, является ли имя пользователя законным if (! Pattern.matches ("// w {5,15}", username) {jobpane.showmessagedialog (это ", пожалуйста, введите юридическое имя пользователя!", «Информация о предупреждении» , Jobpane.warning_message); Это, это, это, это, это, это, это, это, это, это, это, это, это, это, это, это, это, это, это, это, это «ввод разных паролей! "," "", "" "Информация о предупреждении", jobpane.warning_message); return;} // Проверьте, является ли адрес электронной почты законным if (! Pattern.matches ("// w+@/w+/w+", электронная почта) { JobPine.ShowMessageDialo g (это, «Пожалуйста, введите законное письмо!», «Предупреждающая информация», JobPane.warning_message); Log (это, «Имя пользователя уже существовало», «Предупреждающая информация», Jobpane.warning_message);
1.6 Сохраните информацию о регистрации
User user = user user (); If (dbhelper.save (user)) {jobpane.showmessageedialog (это «регистрация пользователя!» Ane .information_message); ;}}}
На этом этапе простые и полные модуль регистрации входа в систему завершен.
Выше всего содержимое этой статьи.