Apache Commons contiene muchas herramientas de código abierto para resolver problemas que a menudo se encuentran en la programación y reducir la mano de obra repetitiva. A continuación se muestra una breve introducción a las herramientas que he usado durante el proceso de desarrollo en los últimos años.
| Componentes | Introducción funcional |
| Frijoles | Proporciona varias operaciones, objetos de clonación, propiedades, etc. para Javabeans. |
| Entre | Convierta los objetos XML y Java entre sí. |
| Codec | Herramientas que tratan los métodos de codificación comúnmente utilizados como DES, SHA1, MD5, Base64, etc. |
| Colecciones | Operación del marco de colección Java. |
| Comprimir | Java proporciona la biblioteca de clases de compresión de envasado de archivos. |
| Configuración | Una biblioteca de clase de gestión de configuración para aplicaciones Java. |
| DBCP | Proporcionar servicios de agrupación de conexión de base de datos. |
| Dbutils | Proporciona encapsulación de operación de JDBC para simplificar la consulta de datos y registrar las operaciones de lectura. |
| Correo electrónico | Java envía correo a la encapsulación de Javamail. |
| FileUpload | Proporciona función de carga de archivos. |
| Httpclient | Proporciona varias operaciones de comunicación entre clientes HTTP y servidores. Ahora se ha cambiado a httpcomponents |
| IO | Encapsulación de herramientas IO. |
| Lang | Paquetes de clase de herramientas para métodos de objetos básicos Java como: StringUtils, ArrayUtils, etc. |
| Explotación florestal | Proporciona una interfaz de registro de Java. |
| Validador | Proporciona un marco de verificación de datos para el lado del cliente y el servidor. |
1. Beanutils proporciona varias operaciones para Javabeans, como objeto, copia de atributos, etc.
// 1. Objeto de clonación // Cree un nuevo Java Bean normal que se use como el objeto clonado de la clase de clase pública {private String name = ""; private String Correo electrónico = ""; private int Age; // omit set, obtiene método} // crea una clase de prueba, donde el código en el método principal es el siguiente: importar java.lang.reflect.invocationTargetException; import java.utilio.hhashmap ;hhhashmap ;hhhashmap; java.util.map; import org.apache.commons.beanutils.beanutils; import org.apache.commons.beanutils.convertutils; public class test {/** * @param */public static void main (string [] args) {persona persona = nueva persona (); persona.setName ("Tom"); PUBLICATIVE (21); {// clone persona persona2 = (persona) beanutils.clonebean (persona); system.out.println (persona2.getName ()+">>"+persona2.getage ());} catch (ilegalAccessException e) {e.PrinttackTrace ();} (InstanciationException e) {E.PrintStackTrace ();} Catch (NosuchMethodException e) {E.PrintStackTrace ();}}} // El principio también se realiza a través del mecanismo de reflexión de Java. // 2. Convierta un objeto de mapa en un frijol // La clave de este objeto de mapa debe corresponder a las propiedades del bean. Map map = new Hashmap (); map.put ("name", "tom"); map.put ("correo electrónico", "tom@"); map.put ("edad", "21"); // Convertir mapa en una persona objeto persona persona = nueva persona (); beanUtils.populate (persona, map); // a través de la línea de código anterior, la persona que la persona atribuye el valor asignado anteriormente. // Convertir un bean en un objeto de mapa, como sigue: map map = beanutils.describe (persona)2. Los objetos Betwixt XML y Java se convierten.
// 1. Convertir javabean a xml contenido // Cree una nueva persona de clase de persona Persona de clase pública {private String Name; private int Age;/** Necesito permitir que Bean se cree a través de la reflexión*/public Personbean () {} public Personbean (String Name, int Age) {this.name = name; this.age = Age;} // omit Set, obtener el método de Cadena pública () "', edad ='" + edad + "']";}} // Cree una clase WriteApp: import java.io.stringwriter; importar org.apache.commons.betwixt.io.beanwriter; public class writePp {/*** Crea un ejemplo de frijol y conviértelo en XML. */public static final void main (string [] args) lanza la excepción {// crea un stringwriter primero, lo escribiremos como una cadena stringwriter outportwriter = new StringWriter (); // betwixt aquí solo escribe el bean como un fragmento //, así que si queremos completar el contenido XML, debemos escribir en el formato de encabezado. ?>/n "); // Crea un beanwriter, que se escribirá en la transmisión que preparamos. BeanWriter BeanWriter = new BeanWriter (OutputWriter); // Configurar Betwixt // Para obtener más detalles, consulte Java Docs o el último documento BeanWriter.getXMlinTrospector (). Si este lugar no pasa en el nombre del nodo raíz del XML, Betwixt adivinará qué es //, pero usemos el nombre del nombre de bean de ejemplo como el nodo raíz beanwriter.write ("persona", nuevo personbean ("John Smith", 21)); // Salida de resultados System.out.out.Println (OutputWriter.ToString (); // betwixt Fragments en lugar de un documento, no es un documento, no se acerque a un documento, no sean un documento, no sean. // Pero aquí hay solo un ejemplo y no hará más, por lo que puede desactivar OutputWriter.Close ();}} // 2. Convertir XML a Javabean import java.io.stringreader; import org.apache.commons.betwixt.io.beanreader; public class Readapp {public static final void main (string args []) lanza excepción {// crea un XML primero. Dado que este es solo un ejemplo, codificamos una pieza de contenido XML StringReader xmlreader = new StringReader ("<? Xml versión = '1.0' coding = 'utf-8'?> <Oll> <ge Age> 25 </Age> <name> James Smith </name> </persona>"); // Create Beanreader Beanread = New Beanreader (); beanReader.getXMlinTrospector (). Person = (Personbean) BeanReader.Parse (xmlreader); // resultado de resultados System.out.println (persona);}}3. El códec proporciona algunas implementaciones públicas del códec, como Base64, Hex, MD5, Fonética y URL, etc.
// Base64 Codec Private static String codeTest (String Str) {Base64 base64 = new Base64 (); try {str = base64.EncodeToString (str.getBytes ("utf-8"));} capt (unsupportedEncodingException e) {E.PrintStackTrace ();} System.Println ("CODODINGE:") "+str); return str;} private static void decodetest (string str) {base64 base64 = new Base64 (); // str = arrays.ToString (base64.DecodeBase64 (str)); str = new String (base64.DecodeBase64 (str)); System.out.println ("Base64 Decoded:"+Str);}4. Las colecciones se extienden java.util y procesa datos bastante flexibles.
org.apache.commons.Collections Commons Collections Conjunto personalizado de interfaces y clases de herramientas comunes
org.apache.commons.collections.bag Un conjunto de clases que implementan la interfaz de la bolsa
org.apache.commons.collections.bidimap Un conjunto de clases que implementan interfaces de la serie Bidimap
org.apache.commons.collections.buffer Un conjunto de clases que implementan la interfaz de búfer
org.apache.commons.collections.collection Un conjunto de clases que implementan la interfaz java.util.collection
org.apache.commons.collections.comparators Un conjunto de clases que implementan la interfaz java.util.comparator
org.apache.commons.collections.portors Commons Collections Conjunto personalizado de clases funcionales
org.apache.commons.collections.iterators Un conjunto de clases que implementan la interfaz java.util.iterator
org.apache.commons.collections.KeyValue implementa un conjunto de clases relacionadas con la colección y la asignación de clave/valor
org.apache.commons.collections.Ist Un conjunto de clases que implementan la interfaz java.util.list
org.apache.commons.collections.map un conjunto de clases que implementan interfaces de series de mapas
org.apache.commons.collections.et un conjunto de clases que implementan interfaces de serie establecidas
/** * Obtenga una determinada clave después de la clave almacenada en el set */ordenedmap map = new LinkedMap (); map.put ("cinco", "5"); map.put ("Six", "6"); map.put ("siete", "7"); map.firstkey (); // devuelve "cinco" map.nextkey ("cinco"); // regreso "seis" "map" map.exkey ("" ") "Seven"/** * Obtener valor a través de la clave * Get Key a través del valor * Clave y valor de conmutación en MAP */bidimap bidi = new treeBidimap (); bidi.put ("Six", "6"); bidi.get ("Six"); // devuelve "6" bidi.getkey ("6"); // devuelve "Six" // bidi.removevalue ("6");;;; // Elimina el mapeo bidimap inverse = bidi.inverseBidimap (); // Devuelve un mapa con claves y valores intercambiados System.out.println (inverse);/*** Obtenga el mismo elemento en los dos conjuntos*/list <String> list1 = new = new ArrayList <String> (); list1.add ("1"); list1.add ("2"); list1.add ("3"); list <string> list2 = new ArrayList <String> (); list2.add ("2"); list2.add ("3"); list2.add ("5"); colección c = collectionS.setainAll (list1,, list1, list2); system.out.println (c);5. Comprima las bibliotecas de clases empaquetadas y comprimidas.
// crear un objeto comprimido ZiparchiveEntry Entry = new ZiparchiveEntry ("compressTest"); // el archivo se comprimirá f = nuevo archivo ("e: //test.pdf"); fileInputStream Fis = new FileInputStream (f); // El archivo Compresado por el objeto de salida de salida el objeto Outputputputputput = new Ziparchive (f); // El archivo comprimido por el objeto de salida de salida el objeto de salida de la salida ZIPOUTPUT = new Ziparchive (f); // El archivo comprimido por el objeto de salida de salida el objeción de salida de la salida. Archivo ("e: //test.zip")); zipoutput.putArchiveEntry (entrada); int i = 0, j; while ((j = fis.read ())! = -1) {ZipOutput.Write (j); i ++; system.out.wrintln (i);} zipOutput.cloarchiveEntry (); zipoutput.cleo () () () () () ();6. La configuración se utiliza para ayudar a procesar archivos de configuración y admite muchos métodos de almacenamiento.
1. Archivos de propiedades
2. Documentos XML
3. Archivos de lista de propiedades (.plist)
4. Jndi
5. JDBC DataSource
6. Propiedades del sistema
7. Parámetros del applet
8. Parámetros de servlet
// Dé un ejemplo simple de propiedades #usergui.properties colores.background = #fffff colores config.save ("usergui.backup.properties); // guardar un integer integer = config.getInteger (" window.width ");7. DBCP (grupo de conexión de base de datos) es un grupo de conexión de base de datos que se basa en el mecanismo de grupo de objetos de la piscina de Yakarta Commons. La fuente de datos de Tomcat usa DBCP.
import javax.sql.dataSource; import java.sql.connection; import java.sql.statement; import java.sql.resultset; import java.sql.sqlexception; import org.apache.commons.pool.Objectpool; org.apache.commons.dbcp.connectionFactory; import org.apache.commons.dbcp.poolingdataSource; importar org.apache.commons.dbcp.poolableConnectionFactory; importar org.apache.commons.dbpp.dbcoManArmanagerconnectionyFactory; //crase oficial de la clase pública; void main (string [] args) {system.out.println ("cargar jdbc controlador"); try {class.forname ("oracle.jdbc.driver.oracledriver");} catch (classNotFoundException e) {e.pintStackTraCe fuente "); DataSource dataSource = setupDataSource (" jdbc: oracle: delgada: @LocalHost: 1521: test "); system.out.println (" ded "); // Connection conn = null; stemt = null; resultset rset = null; intit {system.out.println (" creación de conexión ");"); ");"); dataSource.getConnection (); System.out.println ("Creación de la declaración."); stmt = conn.createStatement (); System.out.println ("Ejecutando la declaración."); rset = stmt.ExeCuteQuery ("Seleccionar * de la persona"); System.out.println ("Resultados:"); int numCols = rset.getMetadata (). getColumnCount (); while (rset.next ()) {for (int i = 0; i <= numCols; i ++) {system.out.print ("/t"+rset.getString (i));} System.out.println ("");} Catch (sqxexception e) {E.) {try {if (rset! = null) rset.close ();} catch (excepción e) {} try {if (stmt! = null) stmt.close ();} catch (excepción e) {} try {if (conn! = null) conn.close ();} capt (excepción) {}}} público static dataSource conecturi) {// Establezca la dirección de conexión ConnectionFactory ConnectionFactory = new DrivermanagerConnectionFactory (ConnectUri, null); // Cree la fábrica de conexión de la conexión PoolableConnectionFactory PoolableConnectionFactory = new PoolableConnectionFactory (ConnectionFactory); // La instancia de GenericObjectpool ConnectionPoolPoolPoolPoolPoolPnectPoolPnectEntection) Crear PoolingDriver PoolingDataSource DataSource = new PoolingDataSource (ConnectionPool); return dataSource;}}8. Una biblioteca de clases de herramientas JDBC de recurso proporcionada por la organización dButilsapache. Es una encapsulación simple de JDBC, encapsulación secundaria de las clases de bases de datos operativas tradicionales, y puede convertir el resultado establecido en una lista. , y no afecta el rendimiento del programa.
Clase dbutils: clase de inicio
Interfaz de resultados de resultados: interfaz de tipo de conversión
Clase Maplisthandler: clase de implementación, convertir registros en la lista
Clase de beanlisthandler: implementa la clase, convierte los registros en la lista y convierte registros en objeto de tipo javabean
Clase Qreryrunner: clase que ejecuta declaraciones SQL
importar org.apache.commons.dbutils.dbutils; import org.apache.commons.dbutils.queryrunner; importar org.apache.commons.dbutils.handlers.beanlisthandler; import java.sql.connection; import java.sql.drivermanager; import java.sqlex.connection; java.util.list; // Convertir para enumerar la clase pública BeanLists {public static void main (string [] args) {Connection conn = null; string url = "jdbc: mysql: // localhost: 3306/ptest"; string jdbcdriver = "com.mysql.jdbc.driver"; string usser = "root"; string contraseña "; "ptest"; dButils.loaddriver (jdbcdriver); try {conn = drivermanager.getConnection (url, user, contraseña); Qrunner qr = new QueryRunner (); List Results = (List) Qr.Query (Conn, "Seleccione ID, nombre de Persona", New BeanLishandler (Person.Class)); For (INT (INT I = 0; i ++) {persona p = (persona) results.get (i); system.out.println ("id:" + p.getid () + ", nombre:" + p.getName ());}} catch (sqlexception e) {E.PrintStackTrace ();} finalmente {dbutils.closequietly (conn);}}}}} de la clase privada {private string {private string {private string {private string Id; nombre; // omitir establecer, obtener método} importar org.apache.commons.dbutils.dbutils; import org.apache.commons.dbutils.queryrunner; importar org.apache.commons.dbutils.handlers.maplistler; import java.sql.connection; import java.sql. java.sql.sqlexception; import java.util.list; import java.util.map; // Convertir para asignar listas de mapas de clase pública {public static void main (string [] args) {Connection conn = null; string url = "jdbc: mysql: // localhost: 3306/ptest"; string jdbcdriver = "com.mysql.jdbc.driver"; string user = "root"; string contraseña = "ptest"; dButils.loadDriver (jdbcdriver); try {conn = drivermanager.getConnection (url, user, contraseña); queryrunner qr = newrunner (); List RESULTAD Maplisthandler ()); for (int i = 0; i <results.size (); i ++) {map map = (map) results.get (i); system.out.println ("id:" + map.get ("id") + ", name:" + map.get ("name"));}} catch (sqlexception e) {E.Printstacktrace ();} finalmente {Dbutils.closequietty (conn);}}}9. Una API de código abierto proporcionada por correo electrónico es una encapsulación de Javamail.
// Enviar correos electrónicos usando Commons Correo electrónico public static void main (string args []) {correo electrónico correo electrónico = new SimpleMail (); correo electrónico. "Password")); Correo electrónico.setsslonconnect (true); correo electrónico.setFrom ("[email protected]"); correo electrónico.setsubject ("testmail"); correo electrónico.setmsg ("Este es un correo de prueba ... :-)"); correo electrónico ("[email protected]"); correo electrónico.send ();}10. Función de carga de archivo web FileUpload Java.
// Ejemplo oficial: //* Verifique que tengamos una solicitud de carga de archivos boolean ismultipart = servletFileUpload.IsmultipartContent (solicitud); // Ahora tenemos una lista de elementos // Si su aplicación está cerca del caso más simple, el procesamiento anterior es suficiente. Pero a veces todavía necesitamos más control. // Las siguientes son varias opciones de control: // Cree una fábrica para elementos de archivo basados en disco DiskFileItemFactory factory = new DiskFileItemFactory (); // Establezca restricciones de fábrica factory.setsizethReshold (suMaxMeMemorySize); factory.setRepository (YourTempDirectory); // Crear un nuevo archivo Upload ServletFilePletFilePletFilePletFilePLePLePLEPLEL ServletFileUpload (fábrica); // Establezca el tamaño máximo de carga upload.setSizEmax (YourMaxRequestSize); // Lista de todas las solicitudes Lista/ * fileitem */elementos = upload.parserequest (request); // Cree una fábrica para el archivo de fábrica para el archivo de fábrica diskFileitemFactory factory = newfileItMinTorTory (YourMaxMexMemySize, archivos basados en discos, YourTempDirectory); // Una vez que se complete el análisis, debe procesar más la lista de elementos. // procesa los elementos cargados iterator iterator = items.iterator (); while (iter.hasnext ()) {fileItem item = (fileItem) iter.next (); if (item.isformfield ()) {ProcessFormfield (item);} else {ProcessUploadedFile (item);}} // Distinguch si los datos son datos de formulario simples, si es simple data: // processFieldfield if (item.isformfield ()) {string name = item.getFieldName (); string value./itemgetRing (); // ... pases omit} ///////tent es un archivo subtIntEnted es un archivo SubtIntIdt It a SubtInts. // ProcessUploadedFile if (! item.isformfield ()) {string fieldame = item.getFieldName (); string filename = item.getName (); string contentType = item.getCententType (); boolean isInMemory = item.isInMemory (); larga tamañoinbybyTes = item.getSize (); // ... omits, por lo general, los there thereStems, por lo general, los pasos omits, por lo general, los omites ometos, omites} escríbalos en un archivo, o conviértalos en una transmisión // procesar una carga de archivo if (writetOfile) {archivo uploadedFile = new File (...); item.write (uploadedFile);} else {inputStream uploadedStream = item.getInputStstream (); // ... pasos omitidos omitido uploadedSeam.cLose ();} // o convertir en un acuático:/axt en un proceso de memation: una carga de archivo en la memoria byte [] data = item.get (); // ... pasos omitidos // Si este archivo es realmente grande, es posible que desee informar al usuario cuánto se ha transmitido al servidor, para que el usuario pueda comprender el proceso de carga // crear una escucha de progreso de progreso listener de progreso = new ProgressListener () {public void update (long pbytesread, long pcontentl longitud, longitud de progreso, longitud de progreso, nuevo progresoListener () {public void update (long pbytesread, long pcontentl longitud, longitud longitud, longitud de progreso, longitud de progreso) {System.out.println ("Actualmente estamos leyendo el elemento" + pitems); if (pcontentLength == -1) {System.out.println ("Hasta lejos", + pbytesread + "se han leído.");} Else {system.out.println ("Hasta", + pbytesread + " + pcontentl longitud +" tiene la longitud + "bytess" Leer. ");}}}; upload.setProgressListener (progressListener);11. HttpClien es un cliente HTTP compatible con HTTP/1.1 implementado basado en httpcore. Proporciona una serie de autenticación de clientes reutilizables, mantenimiento de estado HTTP y módulos de administración de conexión HTTP.
// get Method Import java.io.ioException; import org.apache.commons.httpclient.*; Import org.apache.commons.httpclient.methods.getmethod; import org.apache.commons.httpclient.params.httpmethodparams; public class getAspe {public static void main (string) Construir una instancia de httpClient httpClient httpClient = new httpClient (); // Cree una instancia del método get getMethod getMethod = new getMethod ("http://www.ibm.com"); // Use la política de recuperación predeterminada proporcionada por el sistema al sistema al sistema al sistema al sistema al sistema al sistema a getMethod.getParams (). SetParameter (httpmethodparams.retry_handler, new DeFaUfaUnttpMethodcryRhandler ()); intente {// ejecute getMethod int statusCode = httpclient.Executemethod (getMethod); if (statuscode! = httpstatus.sc_ok) {system.err.println ("método fallido:" + getMethod.getStatUsline ());} // Read Content Byte [] ResponseBody = getMethod.getResponseBody (); // Manejo de contenido.out.Println (new String (new String); ocurrió, que puede ser que el protocolo es incorrecto o el contenido devuelto es problemático System.out.Println ("¡Verifique su dirección HTTP proporcionada!"); E.PrintStackTrace ();} Catch (IOException e) {// Se produjo una excepción de red E.PrintStacktRace ();} Finalmente {// liberar la conexión la conexión getMethod.RelEASEConNection ();}}}} // Post Método Importar java.io.ioException; import org.apache.commons.httpclient.*; importar org.apache.commons.httpclient.methods.postmethod; import; import org.apache.commons.httpclient.params.httpmethodparams; public class PostSample {public static void main (string [] args) {// construye una instancia de httpclient httpclient httpclient = new httpclient (); // Cree una instancia de la cadena de método publicado = "http://www.oracle.com/";postmethod postmethod = new Postmethod (url); // Complete los valores de cada formulario Campo NameValuePair [] data = {new NameValuePair (" id "," YouUserName "), nuevo NameValuePair (" "" Supwd ")}; // postmethod.setRequestBody (data); // ejecutar postmethod int statuscode = httpclient.executemethod (postmethod); // httpclient no puede manejar automáticamente reenviar las solicitudes que requieren servicios posteriores como post y put // 301 o 302 si (statuscode == httpstatus.sc_moved_permanenty statusenty Httpstatus.sc_moved_temporery) {// Elimina la dirección de la dirección desde el encabezado inicial UbicationHeader = postmethod.getResponseHeader ("ubicación"); string ubicación = null; if (ubicación! = Null) {ubicación = ubicación. {System.err.println ("El valor del campo de ubicación es nulo.");} Return;}}}12. IO es muy conveniente para Java.io para extender el archivo de operación.
// 1. Leer fluye // código estándar: inputStream in = new URL ("http://jakarta.apache.org") .openStream (); try {inputStreamReader inr = new InputStreamreader (in); BufferedReader BUF = New BuffEdreader (inr); string line; while ((line = bUf.Readline ()) );}} finalmente {in.close ();} // use iOutils inputStream in = new url ("http://jakarta.apache.org") .openStream (); try {system.out.println (iOutils.ToString (in));} finalmente {iOutils.closquly (in);};} Lea el archivo Archivo de archivo = nuevo archivo ("/commons/io/proyect.properties"); list line = fileUtils.readlines (archivo, "UTF-8"); // 3. Ver el espacio restante Long Freespace = FilesystemUtilss.freespace ("c:/");13. Lang es principalmente una colección de herramientas públicas, como operaciones en personajes, matrices, etc.
// 1 fusionar dos matrices: org.apache.commons.lang. Arrayutils // A veces necesitamos combinar dos matrices en una matriz, y es muy conveniente usar ArrayUtils. El ejemplo es el siguiente: private static void tiendoR () {string [] s1 = new String [] {"1", "2", "3"}; string [] s2 = new String [] {"A", "B", "C"}; String [] s = (String []) Arrayutils.addall (S1, S2); para (int i = 0; i <s.m; i <s.llerte) {System.out.println (s [i]);} string str = arrayUtils.ToString (s); str = str.substring (1, str.length () - 1); system.out.println (str + ">>" + str.length ());} // 2 interceptación de la cadena comenzando desde stringutils.substringafter (select * de la persona ",", ",", ",", ",", "," de la persona ","; si la cadena está compuesta de números (0 ~ 9). Si es así, regrese verdadero, pero este método no reconoce los puntos decimales y tenga en cuenta que StringUtils.ISNUMERIC ("454534"); // return true // 4. Obtenga el nombre de clase System.out.println (classUtils.getShortClassName (test.class)); // Obtenga su nombre de paquete System.out.println (classUtils.getPackageName (test.class)); //5.numberutils system.out.println (numinUtils.stringToint ("6")); // 6. Letras y números aleatorios de cinco dígitos. //7.StringeScapeUtils System.out.println (stringScapeUtils.escapehtml ("<html>"))); // El resultado de salida es <html> System.out.println (StringScapeUtilssCapeJava ("String"); // 8.Stringutils, determine si es un espacio de caracteres. "))); // separar el contenido en la matriz de System.out.println (StringUtils.Join (Test,", "))); // Agregue los caracteres al derecho a hacer la longitud total de 6 System.out.println (StringUtils.rightPad (" ABC ", 6, 'T')); // La primera letra está capitalizada System.out.println (stringUtils.capitalize ("ABC")); // elimina todos los espacios en blanco de una cadena eliminar todos los espacios System.out.println (StringUtils.deletewhiteSpace ("ABC")); // Elimina todos los blancos de una cadena de cadena de todos los espacios. "BA")); // denota los dos caracteres en el sistema izquierdo.out.println (StringUtils.left ("ABC", 2)); System.out.println (numberUtils.stringToint ("33"));14. El registro proporciona una interfaz de registro de Java, que tiene en cuenta tanto livianas como no se basa en herramientas de implementación de registro específicas.
importar org.apache.commons.logging.log; import org.apache.commons.logging.logfactory; public class CommonLogTest {private static log log = logFactory.getLog (comúnlogTest.class); // log imprime public static void main (cadena [] args) {log.error ("error"); log.debug ("debug"); log.warn ("warn"); log.info ("info"); log.trace ("traza"); system.println (log.getclass ();}}} 15. Validador es un sistema de verificación general, que proporciona un marco de verificación de datos para el lado del cliente y el servidor.
Fecha de verificación
// Obtener verificación de la fecha Validator de Fecha Validador = DateValidator.getInstance (); // Verify/Convert Fecha FoodateDate = Validator.Validate (Foostring, "DD/MM/YYYY"); if (Foodate == Null) {// El error no es una fecha de regreso;}Verificación de expresión
// Establezca el parámetro boolean cassensitive = false; string regex1 = "^([AZ]*) (?: //-) ([AZ]*)*$" String REGEX2 = "^([AZ]*) $"; String [] REGEXS = New String [] {REGEX1, REGEX1}; // Crear un Validador REGALIDATOR VALIDATOR = NEWNATOR REGEXVALIDATOR (REGEXS, CasesSensitive); // Verify Devuelve boolean boolean válido = validator.isValid ("ABC-Def"); // Verify Devuelve las cadenas de cadena d.Utilice la verificación en los archivos de configuración
<Form-Validation> <Global> <Validator Name = "requerido" classname = "org.apache.commons.validator.testValidator" método = "validateRequired" MethodParams = "java.lang.object, org.apache.commons.validator.field"/> </global> <formset> </formeSet> </form-validation. <Form-Validation> <NOBLOBLE> <Validator name = "requerido" classname = "org.apache.commons.validator.testValidator" método = "validateRequired" métodarams = "java.lang.object, org.apache.commons.validator.field"/> </blobal> <formset> <form name = "nameform"> "Field"> "Field"> "FIELD" depende = "requerido"> <arg0 key = "nameForm.firstname.displayname"/> </field> <field propiedad = "lastName" depends = "requerido"> <arg0 key = "nameForm.lastName.displayName"/> </ormset> </form-Validation>
Clase de verificación
Excelpts de org.apache.commons.validator.RequiredNametest // Cargue el archivo de configuración de verificación InputStream in = this.getClass (). GetResourceasstream ("Validator-Name-Required.xml"); ValidATorSources recursos = Nuevo ValidAtorSources (IN); // I omitted Name name = new Name();Validator validator = new Validator(resources, "nameForm");//Set the parameter validator.setParameter(Validator.BEAN_PARAM, name);Map results = null;//Verify results = validator.validate();if (results.get("firstName") == null) {//Verify successfully} else {//There is an error int errors = ((Integer) results.get ("FirstName")). IntValue ();}Resumir
Lo anterior es toda la explicación detallada del código de conjunto de herramientas Apache Commons en este artículo, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!