Apache Commons มีเครื่องมือโอเพ่นซอร์สจำนวนมากเพื่อแก้ปัญหาที่มักพบในการเขียนโปรแกรมและลดแรงงานซ้ำ ๆ ด้านล่างเป็นการแนะนำสั้น ๆ เกี่ยวกับเครื่องมือที่ฉันใช้ในระหว่างกระบวนการพัฒนาในช่วงไม่กี่ปีที่ผ่านมา
| ส่วนประกอบ | การแนะนำการทำงาน |
| ถั่วลันเตา | ให้การดำเนินการต่าง ๆ การโคลนนิ่งวัตถุคุณสมบัติ ฯลฯ สำหรับ Javabeans |
| ระหว่าง | แปลงวัตถุ XML และ Java ให้กันและกัน |
| ตัวแปลงสัญญาณ | เครื่องมือที่เกี่ยวข้องกับวิธีการเข้ารหัสที่ใช้กันทั่วไปเช่น DES, SHA1, MD5, Base64 ฯลฯ |
| ของสะสม | การดำเนินงานกรอบคอลเลกชัน Java |
| บีบอัด | Java จัดเตรียมไลบรารีคลาสการบีบอัดบรรจุภัณฑ์ไฟล์ |
| การกำหนดค่า | ไลบรารีคลาสการจัดการการกำหนดค่าสำหรับแอปพลิเคชัน Java |
| DBCP | ให้บริการการเชื่อมต่อการเชื่อมต่อฐานข้อมูล |
| dbutils | ให้การห่อหุ้มการดำเนินการของ JDBC เพื่อลดความซับซ้อนของการสืบค้นข้อมูลและบันทึกการดำเนินการอ่าน |
| อีเมล | Java ส่งจดหมายไปยัง encapsulation ของ Javamail |
| fileupload | จัดเตรียมฟังก์ชั่นการอัปโหลดไฟล์ |
| httpClient | จัดเตรียมการสื่อสารที่หลากหลายระหว่างไคลเอนต์ HTTP และเซิร์ฟเวอร์ ตอนนี้ได้เปลี่ยนเป็น httpComponents |
| io | การห่อหุ้มเครื่องมือ IO |
| หรั่ง | แพ็คเกจคลาสเครื่องมือสำหรับวิธีการวัตถุพื้นฐาน Java เช่น: StringUtils, arrayutils ฯลฯ |
| การตัดไม้ | มันมีอินเทอร์เฟซการบันทึก Java |
| ผู้ตรวจสอบความถูกต้อง | จัดเตรียมกรอบการตรวจสอบข้อมูลสำหรับฝั่งไคลเอ็นต์และเซิร์ฟเวอร์ |
1. Beanutils ให้การดำเนินการต่าง ๆ สำหรับ Javabeans เช่นวัตถุการคัดลอกแอตทริบิวต์ ฯลฯ
// 1. การโคลนนิ่งวัตถุ // สร้างถั่วชวาปกติใหม่ที่จะใช้เป็นบุคคลที่โคลนวัตถุระดับบุคคลระดับบุคคล {ชื่อสตริงส่วนตัว = "" สตริงส่วนตัวอีเมล = ""; อายุ int ส่วนตัว; // omit set, รับเมธอด} // สร้างคลาสทดสอบที่รหัสในวิธีการหลัก java.lang.lang.lang. java.util.map; นำเข้า org.apache.commons.beanutils.beanutils; นำเข้า org.apache.commons.beanutils.convertutils; {// clone person2 = (บุคคล) beanutils.cloneBean (บุคคล); system.out.println (person2.getName ()+">>"+person2.getage ());} catch (unlendalaccessexception e) {e.printstacktrace () {E.PrintStackTrace ();} catch (nosuchmethodexception e) {e.printstacktrace ();}}}} // หลักการยังทำผ่านกลไกการสะท้อน Java // 2. แปลงวัตถุแผนที่เป็นถั่ว // คีย์ของวัตถุแผนที่นี้จะต้องสอดคล้องกับคุณสมบัติของถั่ว แผนที่แผนที่ = ใหม่ hashmap (); map.put ("ชื่อ", "tom"); map.put ("อีเมล", "tom@"); map.put ("อายุ", "21"); // แปลงแผนที่เป็นบุคคลวัตถุบุคคล = บุคคลใหม่ (); beanutils.populate (บุคคล, แผนที่); // แปลงถั่วเป็นวัตถุแผนที่ดังต่อไปนี้: แผนที่แผนที่ = beanutils.describe (บุคคล)2. วัตถุระหว่าง Betwixt XML และ Java จะถูกแปลง
// 1. แปลงเนื้อหา Javabean เป็น XML // สร้างบุคคลระดับบุคคลระดับบุคคลใหม่ {ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว;/** จำเป็นต้องอนุญาตให้ถั่วถูกสร้างขึ้นผ่านการสะท้อน*/บุคคลสาธารณะ () {} บุคคลสาธารณะ (ชื่อสตริง, อายุ int) {this.name = name; "', อายุ ='" + อายุ + "']";}} // สร้างคลาส writeapp: นำเข้า java.io.stringwriter; นำเข้า org.apache.commons.betwixt.io.beanwriter; คลาสสาธารณะ writeapp {/*** สร้างตัวอย่างถั่วและแปลงเป็น xml */public Static Final Void Main (String [] args) พ่นข้อยกเว้น {// สร้าง StringWriter ก่อนเราจะเขียนมันเป็นสตริงสตริง outputWriter = new StringWriter (); // betwixt ที่นี่เพียงแค่เขียนถั่วเป็นชิ้นส่วน // การเข้ารหัส = 'utf-8'?>/n "); // สร้าง beanwriter ซึ่งจะเขียนไปยังสตรีมที่เราเตรียมไว้ beanwriter beanwriter = new beanwriter (outputWriter); // กำหนดค่า betwixt // สำหรับรายละเอียดเพิ่มเติมโปรดดูเอกสาร Java หรือเอกสารล่าสุด beanwriter.getxmlintrospector (). getConfiguration (). setattributesforprimitives (เท็จ); beanwriter.getBindingConfiguration (). setmapids (เท็จ); beanwriter.enableprettyprint () รูทโหนด beanwriter.write ("บุคคล", personbean ใหม่ ("John Smith", 21)); // ผลการส่งออก system.out.println (outputWriter.toString ()); // betwixt เขียนชิ้นส่วนมากกว่าเอกสารดังนั้นอย่าปิดนักเขียนหรือสตรีมโดยอัตโนมัติ outputWriter.close ();}} // 2 แปลง XML เป็น javabean นำเข้า java.io.stringReader; นำเข้า org.apache.commons.betwixt.io.beanreader; คลาสสาธารณะ readapp {โมฆะสุดท้ายคงที่สาธารณะ (สตริง args []) โยนข้อยกเว้น {// สร้าง XML ก่อน เนื่องจากนี่เป็นเพียงตัวอย่างเท่านั้นเราจึงเข้ารหัสชิ้นส่วนของเนื้อหา XML StringReader XMLREADER = ใหม่ stringReader ("<? xml เวอร์ชัน = '1.0' encoding = 'utf-8'?> <person> <อายุ> 25 </ge> <name> James Smith </name> beanreader.getxmlintrospector (). getConfiguration (). setattributesforprimitives (เท็จ); beanreader.getBindingConfiguration (). setmapids (เท็จ); // ลงทะเบียนถั่ว xml personbean person = (personbean) beanreader.parse (xmlreader); // ผลลัพธ์ผลลัพธ์ System.out.println (บุคคล);}}3. Codec ให้การใช้งาน Codec สาธารณะเช่น Base64, hex, MD5, การออกเสียงและ URL ฯลฯ
// base64 codec encodetest สตริงส่วนตัว (สตริง str) {base64 base64 = ใหม่ base64 (); ลอง {str = base64.encodetoString (str.getBytes ("UTF-8")); "+str); return str;} decodetest โมฆะส่วนตัว (สตริง str) {base64 base64 = ใหม่ base64 (); // str = array.toString (base64.decodeBase64 (str)); str = สตริงใหม่ (base64.decodeBase64 (str)); System.out.println ("Base64 Decoded:"+Str);}4. คอลเลกชันขยาย Java.util และประมวลผลข้อมูลค่อนข้างยืดหยุ่น
org.apache.commons.collections collections collections ชุดของอินเตอร์เฟสทั่วไปและคลาสเครื่องมือที่กำหนดเอง
org.apache.commons.collections.bag ชุดของคลาสที่ใช้อินเทอร์เฟซกระเป๋า
org.apache.commons.collections.bidimap ชุดของคลาสที่ใช้อินเตอร์เฟส bidimap series
org.apache.commons.collections.buffer ชุดของคลาสที่ใช้งานอินเตอร์เฟสบัฟเฟอร์
org.apache.commons.collections.collection ชุดของคลาสที่ใช้อินเตอร์เฟส java.util.collection
org.apache.commons.collections.comparators ชุดของคลาสที่ใช้อินเตอร์เฟส java.util.comparator
org.apache.commons.collections.funtors collections collections ชุดการทำงานที่กำหนดเอง
org.apache.commons.collections.iterators ชุดของคลาสที่ใช้อินเตอร์เฟส java.util.iterator
org.apache.commons.collections.keyvalue ใช้ชุดของคลาสที่เกี่ยวข้องกับการรวบรวมและการแมปคีย์/ค่า
org.apache.commons.collections.list ชุดของคลาสที่ใช้อินเตอร์เฟส java.util.list
org.apache.commons.collections.map ชุดของคลาสที่ใช้อินเตอร์เฟส MAP Series
org.apache.commons.collections.set ชุดของคลาสที่ใช้งานชุดอินเตอร์เฟสชุด
/** * รับคีย์บางอย่างหลังจากคีย์ที่เก็บไว้ในชุด */orderedMap แผนที่ = ใหม่ linkedMap (); map.put ("ห้า", "5"); map.put ("หก", "6"); map.put ("เจ็ด", "7"); map.firstkey () ส่งคืน "เจ็ด"/** * รับค่าผ่านคีย์ * รับคีย์ผ่านคีย์ค่า * สวิตช์คีย์และค่าในแผนที่ */bidimap bidi = treebidimap ใหม่ (); bidi.put ("หก", "6"); bidi.get ("หก"); // return "6" bidi.getkey ("6"); // ลบการแมป bidimap inverse = bidi.inverseBidimap (); // ส่งคืนแผนที่ด้วยปุ่มและค่าที่สลับไปยัง System.out.println (Inverse);/*** รับองค์ประกอบเดียวกันในสองชุด*/list <String> list1 = ใหม่ ArrayList <String> (); list1.add ("1"); list1.add ("2"); list1.add ("3"); รายการ <String> list2 = arrayList ใหม่ <String> (); list2.add ("2"); list2.add ("3"); list2.add ("5"); list2); system.out.println (c);5. บีบอัดคอมมอนส์แพ็คและไลบรารีคลาสที่บีบอัด
// สร้าง enterting ziparchiveentry วัตถุที่บีบอัด = new ZipArchiveEntry ("compressTest"); // ไฟล์ที่จะบีบอัด f = ไฟล์ใหม่ ("e: //test.pdf"); fileInputStream fis = new fileInputStream (f); // ไฟล์บีบอัด ไฟล์ ("e: //test.zip")); zipoutput.putarchiveentry (รายการ); int i = 0, j; ในขณะที่ ((j = fis.read ())! = -1) {zipOutput.write (j); i ++; system.out.println (i);6. การกำหนดค่าใช้เพื่อช่วยประมวลผลไฟล์การกำหนดค่าและรองรับวิธีการจัดเก็บข้อมูลมากมาย
1. ไฟล์คุณสมบัติ
2. เอกสาร XML
3. ไฟล์รายการคุณสมบัติ (.plist)
4. Jndi
5. DataSource JDBC
6. คุณสมบัติของระบบ
7. พารามิเตอร์ Applet
8. พารามิเตอร์ servlet
// ให้ตัวอย่างง่ายๆของคุณสมบัติ #usergui.properties colours.background = #fffff colours.foreground = #000080 window.width = 500 window.height = 300 คุณสมบัติการกำหนดค่า = propertiesconfiguration ("usergui.properties" config.save ("usergui.backup.properties); // บันทึกสำเนาจำนวนเต็มจำนวนเต็ม = config.getInteger (" window.width ");7. DBCP (พูลการเชื่อมต่อฐานข้อมูล) เป็นกลุ่มการเชื่อมต่อฐานข้อมูลที่อาศัยกลไกพูลวัตถุจากจาการ์ต้าพูล แหล่งข้อมูลของ Tomcat ใช้ DBCP
นำเข้า javax.sql.datasource; นำเข้า java.sql.connection; นำเข้า java.sql.statement; นำเข้า java.sql.resultset; นำเข้า Java.sql.sqlexception; นำเข้า org.apache.Commons.pool.ObjectPool; org.apache.commons.dbcp.connectionfactory; นำเข้า org.apache.commons.dbcp.poolingDatasource; นำเข้า org.apache.commons.dbcp.poolableConnectionFactory; เป็นโมฆะหลัก (สตริง [] args) {system.out.println ("โหลดไดรเวอร์ jdbc"); ลอง {class.forname ("oracle.jdbc.driver.oracledriver");} catch (classnotfoundexception e) {e.printstacktrace (); แหล่งที่มา "); dataSource dataSource = setUpDataSource (" JDBC: Oracle: Thin: @localhost: 1521: ทดสอบ "); system.out.println (" เสร็จสิ้น "); // การเชื่อมต่อ conn = null; คำสั่ง stmt = null; dataSource.getConnection (); system.out.println ("การสร้างคำสั่ง"); stmt = conn.createstatement (); system.out.println ("การดำเนินการคำสั่ง"); rset = stmt.executeQuery ("เลือก * จากบุคคล"); ระบบ. rset.getMetadata (). getColumnCount (); ในขณะที่ (rset.next ()) {สำหรับ (int i = 0; i <= numcols; i ++) {system.out.print ("/t"+rset.getString (i)); {e.printstacktrace ();} ในที่สุด {ลอง {ถ้า (rset! = null) rset.close ();} catch (ข้อยกเว้น e) {} ลอง {ถ้า (stmt! = null) stmt.close ()} catch DataSource setupDataSource (String Connecturi) {// ตั้งค่าที่อยู่การเชื่อมต่อการเชื่อมต่อ Factory ConnectionFactory = ใหม่ DriverManagerConnectionFactory (Connecturi, null); // สร้างการเชื่อมต่อโรงงาน Poolableconnectoryfactory plarableConnectionFactory = new PoolableconnectoryFactory (การเชื่อมต่อ plarableConnectionFactory); // สร้าง poolingDriver plooingDataSource dataSource = new PoolingDataSource (ConnectionPool); Return DataSource;}}8. ห้องสมุดคลาสเครื่องมือ JDBC ทรัพยากรจัดทำโดยองค์กร DButilsapache มันเป็น encapsulation อย่างง่ายของ JDBC, การห่อหุ้มทุติยภูมิของคลาสฐานข้อมูลการทำงานแบบดั้งเดิมและสามารถแปลงผลลัพธ์ที่ตั้งไว้เป็นรายการ และมันไม่ส่งผลกระทบต่อประสิทธิภาพของโปรแกรม
คลาส Dbutils: คลาสเริ่มต้น
อินเทอร์เฟซ ResultsEthandler: อินเทอร์เฟซประเภทการแปลง
คลาส Maplisthandler: คลาสการใช้งานแปลงบันทึกเป็นรายการ
คลาส Beanlisthandler: ใช้คลาสแปลงบันทึกเป็นรายการและสร้างบันทึกเป็นวัตถุประเภท javabean
คลาส QReryRunner: คลาสที่เรียกใช้คำสั่ง SQL
นำเข้า org.apache.commons.dbutils.dbutils; นำเข้า org.apache.commons.dbutils.queryrunner; นำเข้า org.apache.commons.dbutils.handlers.beanlisthandler; นำเข้า Java.sql.connection; java.util.list; // แปลงเป็นรายการคลาสสาธารณะ beanlists {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {การเชื่อมต่อ conn = null; string url = "jdbc: mysql: // localhost: 3306/ptest" "ptest"; dbutils.loaddriver (jdbcdriver); ลอง {conn = drivermanager.getConnection (url, ผู้ใช้, รหัสผ่าน); queryrunner qr = ใหม่ queryrunner (); รายการผลลัพธ์ = (รายการ) qr.query i ++) {person p = (person) results.get (i); system.out.println ("id:" + p.getid () + ", ชื่อ:" + p.getName ());}} catch (sqlexception e) {e.printstacktrace () ชื่อ; // omit set, รับเมธอด} นำเข้า org.apache.commons.dbutils.dbutils; นำเข้า org.apache.commons.dbutils.queryrunner; นำเข้า org.apache.commons.dbutils.handlers.maplisthandler; java.sql.sqlexception; นำเข้า java.util.list; นำเข้า java.util.map; // แปลงเป็นแผนที่คลาสสาธารณะ maplists {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {การเชื่อมต่อ conn = null; string url = "jdbc: mysql: // "com.mysql.jdbc.driver"; string user = "root"; รหัสผ่านสตริง = "ptest"; dbutils.loaddriver (jdbcdriver); ลอง {conn = drivermanager.getConnection (url, ผู้ใช้, รหัสผ่าน); Maplisthandler ()); สำหรับ (int i = 0; i <results.size (); i ++) {map map = (map) results.get (i); system.out.println ("id:" + map.get ("id") + ", ชื่อ:" map.get ("ชื่อ"); {dbutils.closequietly (conn);}}}9. API โอเพ่นซอร์สที่ให้บริการทางอีเมลคือการห่อหุ้มของ Javamail
// ส่งอีเมลโดยใช้อีเมลสาธารณะโมฆะสาธารณะคงที่หลัก (String args []) {อีเมลอีเมล = ใหม่ simpleemail (); email.sethostname ("smtp.googlemail.com"); email.setsmtpport (465); email.setauthenticator "รหัสผ่าน")); email.setsslonconnect (จริง); email.setFrom ("[email protected]"); email.setsubject ("testmail"); email.setmsg ("นี่คือจดหมายทดสอบ ... :-)"); email.addto ("[email protected]");10. FilePload Java Web File Upload ฟังก์ชั่น
// ตัวอย่างอย่างเป็นทางการ: //* ตรวจสอบว่าเรามีไฟล์อัพโหลดคำขอบูลีน isMultipart = servletFileUpload.ismultipartContent (คำขอ); // ตอนนี้เรามีรายการของรายการ // หากแอปพลิเคชันของคุณใกล้เคียงกับกรณีที่ง่ายที่สุดการประมวลผลข้างต้นก็เพียงพอแล้ว แต่บางครั้งเราก็ยังต้องการการควบคุมมากขึ้น // ต่อไปนี้เป็นตัวเลือกการควบคุมหลายอย่าง: // สร้างโรงงานสำหรับรายการไฟล์ที่ใช้ดิสก์ DiskFileItemFactory โรงงาน = ใหม่ diskFileItemFactory (); // ตั้งค่าข้อ จำกัด จากโรงงานโรงงาน Setsizethreshold (YourMaxMemorySize); ServletFileUpload (โรงงาน); // ตั้งค่าการอัปโหลดขนาดสูงสุด upload.setSizemax (YourMaxRequestSize); // แยกวิเคราะห์รายการคำขอทั้งหมด/ * fileItem */items = upload.parserequest (คำขอ); YourTempDirectory); // เมื่อการแยกวิเคราะห์เสร็จสมบูรณ์คุณต้องประมวลผลรายการรายการเพิ่มเติม // ประมวลผลรายการที่อัปโหลด iterator iter = items.iterator (); ในขณะที่ (iter.hasnext ()) {fileItem item = (fileItem) iter.next (); if (item.isformfield ()) {processFormfield (รายการ);} else {processuploadedFile (รายการ);}} // แยกแยะว่าข้อมูลเป็นข้อมูลแบบง่าย ๆ หรือไม่ถ้าเป็นข้อมูลง่าย ๆ : // processFormfield ถ้า (item.isformfield ()) ProcessUploadedFile ถ้า (! item.isformfield ()) {String fieldName = item.getFieldName (); String filename = item.getName (); String ContentType = item.getContentType (); ไฟล์หรือแปลงเป็นสตรีม // กระบวนการอัพโหลดไฟล์ถ้า (writeTofile) {ไฟล์ uploadedFile = ไฟล์ใหม่ (... ); item.write (uploadedFile);} else {inputstream uploadedstream = item.getInputStream () // ... อัปโหลดในหน่วยความจำไบต์ [] data = item.get (); // ... ขั้นตอนที่ละเว้น // ถ้าไฟล์นี้มีขนาดใหญ่มากคุณอาจต้องการรายงานต่อผู้ใช้ว่ามันถูกส่งไปยังเซิร์ฟเวอร์มากน้อยเพียงใดเพื่อให้ผู้ใช้สามารถเข้าใจกระบวนการอัปโหลด // {system.out.println ("เรากำลังอ่านรายการ" + pitems); ถ้า (pcontentLength == -1) {system.out.println ("จนถึงตอนนี้" + pbytesread + "ไบต์ได้รับการอ่าน") อ่าน ");}}}; upload.setProgressListener (ProgressListener);11. HttpClien เป็นไคลเอนต์ HTTP ที่เข้ากันได้ HTTP/1.1 ที่ใช้งานตาม HTTPCORE มันมีชุดของการรับรองความถูกต้องของไคลเอนต์ที่นำกลับมาใช้ใหม่การบำรุงรักษาสถานะ HTTP และโมดูลการจัดการการเชื่อมต่อ HTTP
// รับเมธอดนำเข้า java.io.ioException; นำเข้า org.apache.Commons.httpClient.*; นำเข้า org.apache.Commons.httpClient.methods.getMethod; นำเข้า org.apache.Commons.httpClient.params.httpmethodparams สร้างอินสแตนซ์ของ httpClient httpClient httpClient = new httpClient (); // สร้างอินสแตนซ์ของวิธี get getMethod getMethod = new getMethod ("http://www.ibm.com"); // ใช้นโยบายการกู้คืนเริ่มต้นโดยระบบ getMethod.getParams (). setParameter (httpmethodparams.retry_handler, defaulthttpmethodretryHandler () ใหม่ (// ดำเนินการ getMethod int สถานะ = httpClient.executeMethod (getMethod); if (statusCode! = httpStatus.sc_ok) {system.err.println ("วิธีการล้มเหลว:" + getMethod.getStatusline ());} // อ่านเนื้อหา [] responsebody = getMethod.getResponseBody (); เกิดขึ้นซึ่งอาจเป็นไปได้ว่าโปรโตคอลไม่ถูกต้องหรือเนื้อหาที่ส่งคืนเป็นระบบที่มีปัญหา. getMethod.ReleAsecOnnection ();}}}} // วิธีการโพสต์นำเข้า java.io.ioException; นำเข้า org.apache.Commons.httpClient.*; นำเข้า org.apache.Commons.httpClient.methods.postmethod; org.apache.commons.httpclient.params.httpmethodparams; Public Class Postample {โมฆะสาธารณะคงที่หลัก (String [] args) {// สร้างอินสแตนซ์ของ httpClient httpClient httpClient = new httpClient "http://www.oracle.com/"phostmethod postmethod = postmethod ใหม่ (url); // กรอกค่าของค่าฟอร์มแต่ละฟอร์ม namevaluepair [] data = {namevaluepair ใหม่ (" id "," youusername ") postmethod postmethod.setRequestbody (data); // ดำเนินการ postmethod int statusCode = httpClient.executemethod (postmethod); // httpClient ไม่สามารถจัดการการส่งต่อสำหรับคำขอที่ต้องการบริการที่ตามมาเช่นโพสต์ httpstatus.sc_moved_temporary) {// นำที่อยู่ของพวงมาลัยมาจากส่วนหัวส่วนหัวจุดเริ่มต้น = postmethod.getResponseHeader ("ตำแหน่ง"); สตริงตำแหน่ง = null; if (locationheader! = null) {ตำแหน่ง = สถานที่ตั้ง {system.err.println ("ค่าฟิลด์ตำแหน่งเป็นโมฆะ");} return;}}}12. IO สะดวกมากสำหรับ java.io เพื่อขยายไฟล์การดำเนินการ
// 1. อ่านสตรีม // รหัสมาตรฐาน: inputStream ใน = url ใหม่ ("http://jakarta.apache.org") .OpenStream (); ลอง {inputStreamReader inr = new InputStreamReader (in); bufferedreader buf = new bufferedreader (inr); );}} ในที่สุด {in.close ();} // ใช้ ioutils inputstream ใน = url ใหม่ ("http://jakarta.apache.org"). openstream (); ลอง {system.out.println (ioutils.tostring (in); อ่านไฟล์ไฟล์ = ไฟล์ใหม่ ("/commons/io/project.properties"); list lines = fileutils.readlines (ไฟล์, "UTF-8"); // 3 ดูพื้นที่ที่เหลือยาว freespace = filesystemutils.freespace ("c:/");13. หรั่งส่วนใหญ่เป็นชุดของเครื่องมือสาธารณะเช่นการดำเนินการกับตัวละครอาร์เรย์ ฯลฯ
// 1 ผสานสองอาร์เรย์: org.apache.commons.lang Arrayutils // บางครั้งเราจำเป็นต้องรวมสองอาร์เรย์เข้ากับอาร์เรย์และสะดวกมากในการใช้ arrayutils ตัวอย่างมีดังนี้: Void Private Static Void Testarr () {String [] S1 = สตริงใหม่ [] {"1", "2", "3"}; String [] S2 = สตริงใหม่ [] {"A", "B", "C"}; String [] S = (String []) {system.out.println (s [i]);} string str = arrayutils.toString (s); str = str.substring (1, str.length () - 1); system.out.println (str + ">>" + str.length (); ไม่ว่าจะเป็นสตริง (0 ~ 9) ถ้าเป็นเช่นนั้นกลับมาจริง แต่วิธีนี้ไม่รู้จักจุดทศนิยมและโปรดทราบว่า stringutils.isnumeric ("454534"); // ส่งคืนจริง // 4 รับชื่อคลาส System.out.println (classutils.getShortClassName (test.class)); // รับชื่อแพ็คเกจ System.out.println (classutils.getpackagename (test.class)); //5.numberutils System.out.println (numberutils.stringtoint ("6")); // 6. ตัวอักษรและตัวเลขแบบสุ่มห้าหลัก System.out.println (Randomstringutils.randomalphanumeric (5)); //7.Stringescapeutils System.out.println (Stringescapeutils.escapehtml ("<html>")); // ผลลัพธ์ผลลัพธ์คือ <html> system.out.println (stringescapeutils.escapejava ("string"); ")); // แยกเนื้อหาในอาร์เรย์โดย system.out.println (stringutils.join (ทดสอบ,", ")); // เพิ่มอักขระทางด้านขวาเพื่อให้ความยาวรวม 6 system.out.println (stringutils. rightpad (" abc " System.out.println (stringutils.capitalize ("abc")); // ลบช่องว่างทั้งหมดจากสตริงลบพื้นที่ทั้งหมด system.out.println (stringutils.deletewhitespace ("abc"); "ba")); // หมายถึงอักขระสองตัวในระบบซ้าย system.out.println (stringutils.left ("abc", 2)); system.out.println (numberutils.stringToint ("33"));14. การบันทึกให้อินเทอร์เฟซการบันทึก Java ซึ่งคำนึงถึงทั้งน้ำหนักเบาและไม่พึ่งพาเครื่องมือการใช้งานบันทึกเฉพาะ
นำเข้า org.apache.commons.logging.log; นำเข้า org.apache.commons.logging.logfactory; คลาสสาธารณะ CommonLogtest {บันทึกการบันทึกแบบคงที่ส่วนตัว = logfactory.getLog (CommonLogtest.class); {log.error ("ข้อผิดพลาด"); log.debug ("debug"); log.warn ("warn"); log.info ("info"); log.trace ("trace"); system.out.println (log.getClass ()); 15. Validator เป็นระบบตรวจสอบทั่วไปซึ่งให้กรอบการตรวจสอบข้อมูลสำหรับไคลเอนต์และฝั่งเซิร์ฟเวอร์
วันที่ตรวจสอบ
// รับการตรวจสอบวันที่ dateValidator dalidator = dateValidator.getInstance (); // ตรวจสอบ/แปลงวันที่วันที่อาหาร = validator.validate (foostring, "dd/mm/yyyy"); ถ้า (อาหาร == null) {// ข้อผิดพลาดการตรวจสอบการแสดงออก
// ตั้งค่าพารามิเตอร์บูลีน casesensitive = false; string regex1 = "^([az]*) (?: //-) ([az]*)*$" สตริง regex2 = "^([az]*) $"; สตริง [] regexs = สตริงใหม่ [] {regex1, regex1}; regexvalidator (regexs, caseensitive); // ตรวจสอบส่งคืนบูลีนบูลีน Valid = validator.isvalid ("abc-def"); // ตรวจสอบว่าส่งคืนสตริงผลลัพธ์ = validator.validate ("abc-def");ใช้การยืนยันในไฟล์กำหนดค่า
<form-validation> <loblal> <jalidator name = "จำเป็น" className = "org.apache.commons.validator.testValidator" method = "validaterequired" methodParams = "java.lang.Object <form-validation> <lobal> <jalidator name = "จำเป็น" className = "org.apache.commons.validator.testValidator" method = "validaterequired" methodParams = "Java.lang.Object, org.apache.Commons.validator.field ขึ้นอยู่กับ = "จำเป็น"> <arg0 key = "nameform.firstname.displayName"/> </field> <field property = "LastName" ขึ้นอยู่
ชั้นการตรวจสอบ
Excelpts จาก org.apache.commons.validator.requirednametest // โหลดไฟล์การกำหนดค่าการตรวจสอบอินพุตสตรีมใน = this.getClass (). getResourceasstream ("validator-name-required.xml"); ฉันละเว้นชื่อชื่อ = ชื่อใหม่ (); ตัวตรวจสอบตัวตรวจสอบตัวตรวจสอบตัวตรวจสอบตัวตรวจสอบใหม่ (ทรัพยากร, "nameform"); // ตั้งค่าพารามิเตอร์ validator.setParameter (validator.bean_param, ชื่อ); แผนที่ผลลัพธ์ = null; // verify ผลลัพธ์ = validator.validate () errors = ((จำนวนเต็ม) ผลลัพธ์ get ("firstName")). intvalue ();}สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดทั้งหมดของรหัสชุดเครื่องมือ Apache Commons ในบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!