apache-commons 工具包学习
Commons是apache下属的开源子项目,专门提供一些通用的工具类。这些方法用起来后,程序看起来更加简单,专业。
Commons的主要类结构:
Attributes
Runtime API to metadata attributes such as doclet tags.
BeanUtils
Easy-to-use wrappers around the Java reflection and introspection APIs.
Betwixt
Services for mapping JavaBeans to XML documents, and vice versa.
Chain
Chain of Responsibility pattern implemention.
CLI
Command Line arguments parser.
Codec
General encoding/decoding algorithms (for example phonetic, base64, URL).
Collections
Extends or augments the Java Collections Framework.
Compress
Defines an API for working with tar, zip and bzip2 files.
Configuration
Reading of configuration/preferences files in various formats.
Daemon
Alternative invocation mechanism for unix-daemon-like java code.
DBCP
Database connection pooling services.
DbUtils
JDBC helper library.
Digester
XML-to-Java-object mapping utility.
Discovery
Tools for locating resources by mapping service/reference names to resource names.
EL
Interpreter for the Expression Language defined by the JSP 2.0 specification.
Library for sending e-mail from Java.
Exec
API for dealing with external process execution and environment management in Java.
FileUpload
File upload capability for your servlets and web applications.
IO
Collection of I/O utilities.
JCI
Java Compiler Interface
Jelly
XML based scripting and processing engine.
Jexl
Expression language which extends the Expression Language of the JSTL.
JXPath
Utilities for manipulating Java Beans using the XPath syntax.
Lang
Provides extra functionality for classes in java.lang.
Launcher
Cross platform Java application launcher.
Logging
Wrapper around a variety of logging API implementations.
Math
Lightweight, self-contained mathematics and statistics components.
Modeler
Mechanisms to create Model MBeans compatible with JMX specification.
Net
Collection of network utilities and protocol implementations.
Pool
Generic object pooling component.
Primitives
Smaller, faster and easier to work with types supporting Java primitive types.
Proxy
Library for creating dynamic proxies.
Sanselan
A pure-Java image library.
SCXML
An implementation of the State Chart XML specification aimed at creating and maintaining a Java SCXML engine. It is capable of executing a state machine defined using a SCXML document, and abstracts out the environment interfaces.
Transaction
Implementations for multi level locks, transactional collections and transactional file access.
Validator
Framework to define validators and validation rules in an xml file.
VFS
Virtual File System component for treating files, FTP, SMB, ZIP and such like as a single logical file system.
Lang
Lang
Provides extra functionality for classes in java.lang.
org.apache.commons.lang.builder.
ToStringBuilder:
提供object重写toString()的工具类.
ApplicationToStringStyle.APP_TO_STRING_STYLE提供toString的style。
Fruit中重写了toString方法。
public abstract class ApplicationToStringStyle extends ToStringStyle {
private static final long serialVersionUID = 1L;
public static final ApplicationToStringStyle APP_TO_STRING_STYLE = new CustomToStringStyle();
/**
* Constructor
*
* Use the static constant rather than instantiating
*/
private static final class CustomToStringStyle extends ApplicationToStringStyle {
private static final long serialVersionUID = -4289672936337739486L;
public CustomToStringStyle() {
super();
this.setUseClassName(true);
this.setUseIdentityHashCode(false);
this.setContentStart(SystemUtils.LINE_SEPARATOR + "[");
this.setFieldSeparator(SystemUtils.LINE_SEPARATOR + "");
this.setFieldSeparatorAtStart(true);
this.setContentEnd(SystemUtils.LINE_SEPARATOR + "]");
this.setUseShortClassName(true);
}
/**
* Override the append() method to skip fields that start with "_".In this
* application, Axis generates some fields using this prefix that we don't want to include
* in the log files.
*/
@Override
public void append(StringBuffer buffer, String fieldName, Object value, Boolean fullDetail) {
if (fieldName != null && !fieldName.startsWith("_")) {
super.append(buffer, fieldName, value, fullDetail);
}
}
/**
* Ensure Singleton after serialization
*
* @return the singleton
*/
private Object readResolve() {
return ApplicationToStringStyle.APP_TO_STRING_STYLE;
}
}
}
public class Fruit {
private String name = "apple";
private String size = "3";
private String price = "$40";
public String toString() {
return ReflectionToStringBuilder.toString(this, ApplicationToStringStyle.APP_TO_STRING_STYLE);
}
}
HttpClient
The Commons HttpClient project used to be a part of Commons, but is now part of
Apache HttpComponents
-
see Jakarta Commons
HttpClient
用于http有关的连接,包括ssl等。
Notice that we go
through the entire process regardless of whether the server returned an error or
not. This is important because HTTP 1.1 allows multiple requests
to use the same
connection by simply sending the requests one after the other.
Obviously, if we
don't read the entire response to the first request, the left over data will get
in the way of the second response. HttpClient
tries to handle this but
to avoid problems it is important to always release the connection.
基本http get访问
:
package commons.httpclient;
import java.io.IOException;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class Test {
public static void main(String[] args) throws HttpException, IOException {
//1. Create an instance of HttpClient.
HttpClient client = new HttpClient();
//2.
//Create an instance of one of the methods (GetMethod in this case).
//The URL to connect to is passed in to the the method constructor.
GetMethod method = new GetMethod("http://www.baidu.com/");
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
//3.Tell HttpClient to execute the method.
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
//4.Read the response.
String reponse = method.getResponseBodyAsString();
//5.Release the connection.
method.releaseConnection();
//6.Deal with the response.
System.out.println(reponse);
}
}
页:
[1]