Prepare <Br /> En las primeras etapas de <r />, en primer lugar, debe tener claramente una idea general, qué funciona para lograr, para comprender qué aspectos de todo el módulo se utilizarán y para descubrir sus deficiencias de el proceso de hacer. La mayor parte del progreso técnico debe salir de la práctica.
Función : función de registro de usuario+función de inicio de sesión del sistema+Generación del código de verificación
Conocimiento : diseño de ventanas, diseño de base de datos, atributos de empaque de Javabean, implementación de JDBC de la conexión de base de datos, el código de verificación (incluido el código de verificación de color) Tecnología de generación y algunos como el uso de información de registro de usuarios de verificación de expresión regular, obtener aleatoriamente caracteres para obtener una cadena de caracteres, control del número de caracteres en el texto, etc.
Mapa de vista previa del módulo de diseño:
Vista previa del código de verificación de color:
Base de datos utilizada: mysql
Diseño de base de datos
Cree una base de datos DB_DATABASE01, que contiene una tabla TB_USER para guardar los datos de registro de los usuarios.
Contiene 4 campos
ID int (11)
Nombre de usuario Varchar (15)
contraseña Varchar (20)
Envíe un correo electrónico a Varchar (45)
La declaración MySQL se puede diseñar así:
Crear esquema db_database01; 1, "lixiyu", "lixiyu", [email protected]);
Use Lixiyu como nombre de usuario.
Seleccione la declaración para verificar el formulario creado:
Escriba atributos del usuario de Javabean Packaging
paquete com.lixiyu.model; Public void setid (int id) {this.id = id;} public String getUseRnerName () {return username;} public void setUsername (string username) {thi s.username = username;} public string getPassword () {return contraseña; } Public void setPassword (String Password) {this.password = contraseña;} public String getEmail () {return Correo electrónico;} public void seiTemail (Strin g Correo electrónico) {this.Email = Correo electrónico;}}
Escribe la clase de herramientas JDBC
Coloque el código relacionado con la operación de la base de datos en la interfaz dbconfig y la clase dbhelper
La interfaz DBConfig se utiliza para guardar el código de información de la base de datos, el nombre de usuario y la contraseña:
paquete com.lixiyu.util;
Para simplificar el desarrollo de JDBC, DBHelper utilizó la combinación de Dbutil Commons.
La clase DBHelper hereda la interfaz DBConfig.
(1) Método GetConnection (): Obtenga la conexión de la base de datos, use la fuente de datos MySQL para simplificar la programación para evitar anormalidades debido a la carga de controladores de bases de datos.
(2) Exist () Método: Determine si existe el nombre de usuario de entrada.
(3) Comprobar () Método: Cuando el usuario ingresa el nombre de usuario y la contraseña, verifique si el método check () es correcto.
(4) Método Guardar (): Después de que el usuario ingrese información de registro legal, guarde la información.
Código detallado:
paquete com.lixiyu.util; Commons.dbutils.QueryRunner; ; Conexión getConnection () {MySQLDAtAsource mds = new MySQLDAtAsorce (); contraseña); * * Para determinar si el usuario que especifica el nombre de usuario está disponible. / Defina la consulta connnnection (); rsh); .PrintStackTrace ();} Finalmente. Use el componente Commons Lang para evitar la inyección de SQL * * @return: volver a verdadero, Error Regreso a False */ Public Static Boolean Check (String UserName, Char [] Password) {UserName = StringsCapeUtils.AscapesQl (Nombre de usuario); Ingrese el nombre de usuario a QueryRunner Runner = New QueryRunner (); / / Crear la cadena de objeto Query TRACETSTHANDLER <SPET> RSH = new Scalalandler (); resultado.ToChArray (); // la contraseña matriz.fill (QueryPassw D, '0'); / The Password Arrays.fill (QueryPassword, '0'); / Si se produce una devolución anormal falsa} / * * Guardar la información registrada ingresada por el usuario * * @return: si el guardado se devuelve correctamente a verdadero, la falla de preservación devuelve el salvamento falso * / public static boolean (usuario del usuario) { QueryRunner Runner = new cuestionRunner (); ; // = {user.getUsername (), user.getPassword (), user.getEmail ()}; // Guardar el usuario if (resultado> 0) {////////si el guardado se devuelve correctamente a True return true;} else {// Si la preservación falla, return False return False;}} Catch (SQLException e) {E.PrintStackTrace ();} Finalmente {Equietly (Conn);
Iniciar sesión en el sistema
1.1 Diseño de ventanas
Use el diseño de BoxLayout para establecer el método de disposición de control de arriba a abajo:
Copiar código del código de la siguiente manera: ContentPane.SetLayout (nuevo BoxLayout (ContentPane, BoxLayout.Page_axis));
La ventana utiliza controles, dominios de texto, dominios de contraseña, botones y otros controles para implementar el código:
Public Class Tray Extiens ("" com.sun.java.swing.plaf.nimbus.nimbuslookandFeel ");} catch (showleable e) {eventQueue.invokeler (new r) unnable () {public void run () {try {login frame = new login = new Login (); UserNAMEPANEL = new JPanel (); ; () jPassWordField (); = new JLabel ("/U9A8C/U8BC1/U7801/UFF1A"); Validatetextfield.setFont (new Font ("Microsoft Yahei", font.plain, 15); validatePanel.Add (validatExtField); validatetextfield.setColumns (5); randomTtomtt ext = randomstringutils.randomalphanumeric (4); captchalabel etiquet ); / Código de verificación aleatorio. ); CancelButton = new JButton ("Salir"); .Add (CancheButton);
Pantalla en la ventana:
Public Class Swingutil {/** Según el tamaño del contenedor, se calculan las coordenadas de la esquina superior izquierda. )/ 2; Coordenadas de la esquina izquierda}}
1.2 Código de verificación de obtención y dibujo
Capitán de clase pública extiende Jlabel {privado final de serie La etiqueta} @OverridePublic Void Paint (Graphics G) {Super. G.DrawString (texto, 5, 25);
*Código de verificación de color:
Public ColorfapCaptChalabel extiende Jlabel {Private Static Final Long SerialVersionUid = -963570191302793615L .Gray, color.green, color.light_gray, color.magenta, color.orange, color.pink, color.red, color.yllow}; texto = setPreferedSize (nueva dimensión (60, 36)); SetFont (nueva fuente ("Microsoft Yahei", Font.Plain, 16)); Color RandomUtils.nextint (Colors.length));
1.3 Escuela no vacía
if (userName.isEmpty ()) {// Determine si el nombre de usuario es vacyPanepane.showMessEdialog (esto, "¡El nombre de usuario no puede estar vacío!", "Información de advertencia", JobPane.Warning_Message); (Contraseña) .IsEmpty ()) {// Determine si la contraseña es vacía de trabajo. {// Determinar si el código de verificación es vacío
1.4 Verificación de legalidad
if (! dbhelper.exists (username)) {// Si el nombre de usuario no existe, solicitará jobpane.showmessedialog (esto, "¡El nombre de usuario no existe!", "WarningPane.Warning_Message); return;} if (( ! para solicitar JobPane.ShowMessEdialog (esto, "¡Error de código de verificación!", "Información de advertencia", JobParning_Message);
1.5 Muestra la ventana principal
EventQueue.invokelateer (new runnable () {@OverridePublic Void run () {mainframe frame = new mainframe (); // Cree la ventana principal frame.setVisible (true); // Establezca la ventana principal para ver} Catch (Exception e ) {E.PrintStackTrace ();}}});
Diseñe la ventana principal (relativamente simple esto):
Public MainFrame () {setDefaultCleSeOperation (jframe.exit_on_close); ContentPane .SetLayout (nuevo BorderLayout (0, 0)); El .setFont (nuevo Font ("Microsoft Yahei", Font.Plain, 40); // Establecer fuentes de etiqueta contentPane.add (TipLabel, BorderLayout.Center); // Label de aplicación SetLocation (SwingUtil.centreContainer (Geti ZE ()) )); / Deja que la ventana se pare en el medio de la ventana}
Registro de usuarios
1.1 Diseño de ventanas
Public Class Extiens Mostrar información de solicitud/*** Inicie la aplicación.*/Public static void main (string [] art) {try {uiManager.setlookandFeel ("com.sun.java.plaf.nimbus.ni.ni mbuslookandfeel");} capt (Showable e) {E.PrintStackTrace ();} eventQueue.invokeLo (new runnable () {@OverridePublic void run () {try {registrar marco = newer (); f rame.setVisible (true);} Catch (excepción e ) {E.PrintStackTrace ();}}});}/*** Crear el marco.*/public registro () {settitle ("/u7528/u6ce8/u518c"); nuevo JPanel (); /U540D/Uff1a "); Uernamelabel.SetFont to. W JTextField (); UsernametextField.SetToLTiptext ("/U8BF7/U8F93/U51655 ~ 15/U4E2A/U7531/U5B57/U6570/U5B57/U4E0 4/U7684 /U7b57/u7b26/u7b26/u4e32 "); abstractDocument doc = (abstractDocument) usernamExtextfield.getDocument (); doc.setDocumentFilter (nuevo documentSizeFilter (15)); // Limite la longitud del carácter en el texto de texto a 15Doc.addocumentListener (NUEVO DOCUPACIÓN "); PasswordLabel1.setFont Toset (" Microsoft Yahei ", Font.Plain, 15)); PasswordPanel1.Add (PasswordField1 = NewWordfield (PasswordfordField1 = NewWordField (); AbstrCTDocument) Passwordfield1.getDocument (); Doc.SetDocumentFilter (New DocumingFilter ( 20)); .SetColumns (10); 15)); DocumeentSizeSize, 20)); .Add (Correo electrónico); ); .addocumentListener (New DocumentSiListener, 45); ; , font.plain, 15); = Nuevo JButton ("/U53D6/U6D88"); Yahei ", font.plain, 15); buttonpanel.add (cancelButton); pack (); // Ajuste automáticamente el tamaño de la ventana SetLocation (swingutil.centrecontrecontrecontrecontrecontrecontr ainer (getsize ())); // deja que la ventana se muestre en el centro de la ventana}
1.2 Use DocumentFilter para limitar el número de caracteres disponibles en el texto
Public Class DocumentSizeFilter extiende DocumentFilter {private int maxSize; , Int Office, String String, Attributeset Attr) lanza BadLocationException {if (fb.getDocume (). GetLength () + string.length ()) <= maxSize) grande -longitud super.insertString (fb, offset, string, attr) ; / Llamar al método en la clase principal} else {Toolkit.getDefaultToolkit (). BadLocationException {if (fb.getDocument (). GetLength () + text.length () <= maxsize) {// super.replace (fb, offset, longitud, text, attrs); } else {Toolkit.getDefaultToolkit ().
1.3 Use la interfaz de documentSistener para implementar el control de texto de visualización.
Public DocumentSizeSizeLisInsiSInElIsInSeLisEnsEnsEd Elements DocumentListener {private jlabel tipLabel; }@ OverridePublic void remOVOvenate (DocumentEvent e) {settipText (e);}@OsuePublic VoidUpdate (documentEvent e) {setTipText (e);} private void setTiptext (documentEvent e) {document doc = e.getDocument (); /// obtenga el Documento objeto tipLabel.setForeground (color.black); %TipLabel. () + "/" + maxSize);}}
1.4 escuela no vacía
if (userName.isEmpty ()) {// Determine si el nombre de usuario es vacyPanepane.showMessEdialog (esto, "¡El nombre de usuario no puede estar vacío!", "Información de advertencia", JobPane.Warning_Message); (Contraseña1) .IsEmpty ()) {// Determine si la contraseña es vacía de periódico.showmessedialog (esto, "¡La contraseña no puede estar vacía!", "WarningPane.Warning_Message); return;} if (New S TRING (contraseña2). Isemption; ()) {// juzgar si la contraseña de confirmación es vacitypanePane.showMessageDialog (esto, "confirmar la contraseña no puede estar vacía!", "WarningPane.Warning_Message); pty ()) {{// Determine si el correo electrónico es vaciador. (Esto, "¡El correo electrónico no puede estar vacío!", "Información de advertencia", JobPane.Warning_Message);
1.5 Use una cadena de verificación de expresión regular (verificación de legitimidad)
// Wheat si el nombre de usuario es legal si (! Pattern.matches ("// w {5,15}", nombre de usuario) {JobPane.ShowMessEdialog (esto, "¡Ingrese el nombre legal del usuario!", "Información de advertencia" , JobPane.Warning_Message); Esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esto, esta "entrada de contraseñas diferentes! "," "," "" Información de advertencia ", JobPane.Warning_Message); return;} // verifique si la dirección de correo electrónico es legítima if (! Pattern.matches (" // w+@/w+/w+", correo electrónico) { JOBPINE.SHOWMESSEGNIO G (esto, "¡Ingrese el correo electrónico legal!", "Información de advertencia", JobPane.Warning_Message); Log (esto, "Nombre de usuario ya existió", "Información de advertencia", JobPane.Warning_Message);
1.6 Guardar la información de registro
Usuario = nuevo usuario (); If (dbhelper.save (usuario)) {JobPane.ShowMessEdialog (este "registro del usuario!" Ane .Information_message); ;}}}
En este punto, se completa un módulo de registro de inicio de sesión simple y completo.
Lo anterior es todo el contenido de este artículo.