﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava--随笔分类-commons</title><link>http://www.blogjava.net/leekiang/category/27953.html</link><description>MDA/MDD/TDD/DDD/DDDDDDD</description><language>zh-cn</language><lastBuildDate>Fri, 16 Apr 2010 18:12:41 GMT</lastBuildDate><pubDate>Fri, 16 Apr 2010 18:12:41 GMT</pubDate><ttl>60</ttl><item><title>操作数组</title><link>http://www.blogjava.net/leekiang/archive/2010/01/14/309489.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Thu, 14 Jan 2010 10:43:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/01/14/309489.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/309489.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/01/14/309489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/309489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/309489.html</trackback:ping><description><![CDATA[1，List转数组<br />    List list = new ArrayList();<br />        list.add("1");<br />        list.add("2");<br />        int size = list.size();<br />        String[] arr = (String[]) list.toArray(new String[size]);<br />     必须带参数new String[size]，否则会报造型异常<br /><br />2, 数组转List<br />    String[] arr = new String[] {"1", "2"};<br />    List list = Arrays.asList(arr);<br /><br />3,  Arrays.binarySearch(Object[] arr,Object key)<br />    public static int <b>binarySearch</b>(int[] a,int key)使用二进制搜索算法来搜索指定的 int 型数组，以获得指定的值。<strong>必须</strong>在进行此调用之前对数组进行排序（通过上面的 <tt>sort</tt> 方法）。如果没有对数组进行排序，则结果是不明确的。如果数组包含多个带有指定值的元素，则无法保证找到的是哪一个。<br />    也就是说必须先执行Arrays.sort，再执行Arrays.binarySearch<br /><br />4, commons-lang的ArrayUtils<br />   1)ArrayUtils.contains()方法可以判定数组是否存在指完元素.比Arrays.binarySearch好用(见上文)<br />     当然有两个比较实用的方法ArrayUtils.lastIndexOf()和ArrayUtils.indexOf()<br />   3)使用ArrayUtils.reverse(arr)方法可以反转一个数组<br />   4)使用ArrayUtils.toObject(arr)和ArrayUtils.toPrimitive(arr)两个方法，<br />     即可互相转换基本类型数组和对象数组<br />   5)ArrayUtils.toString()方法可以输入数组内容，此方法接受任意一个数组<br />     作为参数并输出其内容，输出时所有元素位于大括号，中间逗号隔开。<br />     如new String[] { "1","2","3","fd","3g"}会输出为字符串"{1,2,3,fd,3g}"<br />   6)<span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 判断数组是否为空(null和length=0的时候都为空)</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        ArrayUtils.isEmpty(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">]);</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> true</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        ArrayUtils.isEmpty(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Object[] { </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"> });</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> false<br />   7)</span><span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 合并两个数组</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        ArrayUtils.addAll(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">[] { </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);"> }, </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">[] { </span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);"> });</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> {1,3,5,2,4}</span><br />   8)<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 删除数组中某个对象(从正序开始搜索,删除第一个)</span><span style="color: rgb(0, 128, 0);"> 注意只删除一个<br /></span><span style="color: rgb(0, 0, 0);">        ArrayUtils.removeElement(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">[] { </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);"> }, </span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">);</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> {1,5}</span><br /><span style="color: rgb(0, 128, 0);"><br /></span><br /><br /><br /><img src ="http://www.blogjava.net/leekiang/aggbug/309489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-01-14 18:43 <a href="http://www.blogjava.net/leekiang/archive/2010/01/14/309489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HttpURLConnection 的使用</title><link>http://www.blogjava.net/leekiang/archive/2009/10/21/299193.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Wed, 21 Oct 2009 06:12:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2009/10/21/299193.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/299193.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2009/10/21/299193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/299193.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/299193.html</trackback:ping><description><![CDATA[System.setProperty("sun.net.client.defaultConnectTimeout", "3000");<br />        System.setProperty("sun.net.client.defaultReadTime ", "3000"); <br />        <br />        URL url1=null;<br />        try {<br />            url1 = new URL(url);<br />            HttpURLConnection urlCon = (HttpURLConnection)url1.openConnection();<br />            System.out.println(urlCon);<br />             BufferedReader in = null;<br />                try {<br />                  in = new BufferedReader(<br />                    new InputStreamReader(<br />                            urlCon.getInputStream()));<br />                  String inputLine;<br />                  while (<br />                    (inputLine = in.readLine()) != null) {<br />                    System.out.println(inputLine);<br />                  }<br />                } catch (IOException e) {<br />                  e.printStackTrace();<br />                }<br />                in.close();<br />                urlCon.disconnect();<br />        } catch (Exception e1) {<br />            e1.printStackTrace();<br />        } <br /><br />http://tech.techweb.com.cn/archiver/tid-225522.html<br />http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/net/HttpURLConnection.html<br />http://zhuixue.javaeye.com/blog/385793<br /><img src ="http://www.blogjava.net/leekiang/aggbug/299193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2009-10-21 14:12 <a href="http://www.blogjava.net/leekiang/archive/2009/10/21/299193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BeanUtils</title><link>http://www.blogjava.net/leekiang/archive/2008/10/31/237904.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Fri, 31 Oct 2008 13:55:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/10/31/237904.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/237904.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/10/31/237904.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/237904.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/237904.html</trackback:ping><description><![CDATA[1, BeanUtils.copyProperties(dest, orig);
         这种copy是浅拷贝，复制后的2个Bean的同一个属性可能拥有同一个对象的ref，这个在使用时要小心，特别是对于属性为自定义类的情况.还要属性为集合类的情况。小心hibernate的Set<br />2,BeanUtils.copyProperties与PropertyUtils.copyProperties的区别<br />  这两个类几乎有一摸一样的功能，唯一的区别是：BeanUtils在对Bean赋值是会进行类型转化。举例来说也就是在copyProperty时只要属性名相同，就算类型不同，BeanUtils也可以进行copy；而PropertyBean则可能会报错。当然2个Bean之间的同名属性的类型必须是可以转化的，否则用BeanUtils一样会报错。
         若实现了org.apache.commons.beanutils.Converter接口则可以自定义类型之间的转化。<br /><br />除<span class="hilite1">BeanUtils</span>外还有一个名为<span class="hilite4">PropertyUtils</span>的工具类，它也提供<span class="hilite2">copyProperties</span>()方法，作用与<span class="hilite1">BeanUtils</span>的同名方法十分相似，主要的区别在于后者提供类型转换功能，即发现两个JavaBean的同名属性为不同类型时，在支持的数据类型范围内进行转换，而前者不支持这个功能，但是速度会更快一些<br />http://xiaozhao-521.javaeye.com/blog/244254<br />注意:有人说BeanUtils支持的转换类型不包括<font size="3">java.util.Date?</font><br />     我用1.6.1版本试了BeanUtils.copyProperties,<font size="3">肯定是支持java.util.Date</font>的。<br />3,<span style="font-family: 宋体;"></span><span lang="EN-US">LazyDynaBean</span><span style="font-family: 宋体;">可以实现动态的vo。<br />  这样，有时候程序给view层的东西就可以用它来封装而不用专门建一个多余的vo类了。</span><br /><br />参考:<br />http://jone0321.blogdriver.com/jone0321/615543.html<br />http://www.blogjava.net/kenzhh/archive/2008/09/03/226592.html<br /><img src ="http://www.blogjava.net/leekiang/aggbug/237904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-10-31 21:55 <a href="http://www.blogjava.net/leekiang/archive/2008/10/31/237904.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>commons logging笔记(转)</title><link>http://www.blogjava.net/leekiang/archive/2008/04/05/190986.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sat, 05 Apr 2008 15:04:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/04/05/190986.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/190986.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/04/05/190986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/190986.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/190986.html</trackback:ping><description><![CDATA[
		<p>Apache组织开发了一套用于支持Logging的Log4J，Java?1.4版本也引入了一套内置的 Logging框架，如果开发者想在这两套Logging系统之间自由的切换，该怎么办呢？答案就是，使用Commons?Logging。 Commons?Logging定义了一套抽象的Logging接口，用户可以通过配置，使这些接口指向任何一个已存在的Logging系统。</p>
		<p>⑴ 首先在classpath下寻找自己的配置文件commons-logging.properties，如果找到，则使用其中定义的Log实现类；这个属性文件至少必须定义org.apache.commons.logging.Log属性，它的值应该是上述任意Log接口实现的完整限定名称。<br />⑵ 如果上面的步骤失败，Commons的Logging接着检查系统属性org.apache.commons.logging.Log。<br />   System.setProperty("org.apache.commons.logging.Log","org.apache.commons.logging.impl.Log4JLogger");<br />⑶ 如果找不到org.apache.commons.logging.Log系统属性，Logging接着在CLASSPATH中寻找log4j的类。如果找到了，Logging就假定应用要使用的是log4j。不过这时log4j本身的属性仍要通过log4j.properties文件正确配置。<br />通过jar的Service Provider Discovery机制查找 "META-INF/services/org.apache.commons.logging.Log"对应的资源，Service Provider Discovery是JDK1.3之后出现的，我们熟知的XML解析器的查找过程就是利用这个机制.<br />⑷ 如果上述查找均不能找到适当的Logging API，但应用程序正运行在JRE 1.4或更高版本上，则默认使用JRE 1.4的日志记录功能。<br />⑸ 最后，如果上述操作都失败，则应用将使用内建的SimpleLog。SimpleLog把所有日志信息直接输出到System.err。 </p>
		<p>可见，commons-logging总是能找到一个日志实现类，并且尽可能找到一个“最合适”的日志实现类。我说它“很贴心”实际上是因为：1、可以不需要配置文件；2、自动判断有没有Log4j包，有则自动使用之；3、最悲观的情况下也总能保证提供一个日志实现（SimpleLog）。<br />可以看到，commons-logging对编程者和Log4j都非常友好。<br />为了简化配置commons-logging，一般不使用commons-logging的配置文件，也不设置与commons-logging相关的系统环境变量，而只需将Log4j的Jar包放置到classpash中就可以了。这样就很简单地完成了commons-logging与Log4j的融合。如果不想用Log4j了怎么办？只需将classpath中的Log4j的Jar包删除即可。<br />就这么简单！</p>
		<p>Commons logging的关键点：</p>
		<p>    * 提供一个日志记录功能的抽象<br />    * 提供一种从该抽象到具体日志记录实现的映射<br />    * 提供默认的映射和发现机制，提高自身的易用性<br />看花的人多，懂花的少哦。------俺们力争去做懂花人。等老了，一边夕阳西下，一边品茶赏花，岂不乐哉。</p>
		<p>日志的级别从高到低依次为:fatal,error,warn,info,debug,trace.<br />自己只适用三种就够了,调试用debug,运行时有意义的信息用info,错误用error</p>
		<p>log4j.rootLogger是最最重要的一个属性了，它定义日志信息的“输出级别”和“输出目的地”。<br />设置分两部分,第一个逗号之前的是第一部分，指定“输出级别”；后面的是第二部分，指定“输出目的地”。可以同时指定多个“输出目的地”，以逗号隔开。</p>
		<p>不同的appender,打印的基本可以单独设置,例如log4j.appender.logfile.Threshold =debug</p>
		<p>输出格式里%t指线程 </p>
		<p>“同时使用commons-logging和Log4j”的原因是，简化使用和配置。<br />强调一点，“同时使用commons-logging和Log4j”，与“单独使用Log4j”相比，并不会带来更大的学习、配置和维护成本，反而更加简化了我们的工作。我想这也是为什么“所有用到Log4j的项目一般也同时会用到commons-loggin”的原因之一吧。<br />Commons-logging能帮我们做什么？<br />提供一个统一的日志接口，简单了操作，同时避免项目与某个日志实现系统紧密a耦合<br />很贴心的帮我们自动选择适当的日志实现系统（这一点非常好！）它甚至不需要配置</p>
		<p>private static Log log = LogFactory.getLog(YouClassName.class);<br />注意这里定义的是static成员，以避免产生多个实例。<br />LogFactory.getLog()方法的参数使用的是当前类的class，这是目前被普通认为的最好的方式。为什么不写作LogFactory.getLog(this.getClass())？因为static类成员访问不到this指针！<br />将commons-logging和Log4j的jar包都放置到classpath下，同时也将Log4j的配置文件放到classpath中，两者就可以很好的合作。</p>
		<p>采用Log4j配合commons-logging作为日志系统，是目前Java领域非常非常流行的模式，使用非常非常的普遍。两者的结合带来的结果就是：简单 + 强大。<br />commons-logging提供了简捷、统一的接口，不需要额外配置，简单；<br />Log4j功能非常全面、强大；<br />commons-logging仅仅对Log4j(当然还包括其它LOG实现)作了一层包装，具体的日志输出还是在内部转交给身后的Log4j来处理；而Log4j虽然做了所有的事情，却甘作绿叶，从不以真身示人。<br />两者堪称绝配。</p>
		<p># 用于数据库<br />log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender<br />log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test<br />log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver<br />log4j.appender.DATABASE.user=root<br />log4j.appender.DATABASE.password=123<br />log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')<br />log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout<br />log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n</p>
		<p># 发送日志给邮件log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender<br />log4j.appender.MAIL.Threshold=FATAL<br />log4j.appender.MAIL.BufferSize=10<br /><a href="mailto:log4j.appender.MAIL.From=web@www.wuset.com">log4j.appender.MAIL.From=web@www.wuset.com</a><br />log4j.appender.MAIL.SMTPHost=www.wusetu.com<br />log4j.appender.MAIL.Subject=Log4J Message<br /><a href="mailto:log4j.appender.MAIL.To=web@www.wusetu.com">log4j.appender.MAIL.To=web@www.wusetu.com</a><br />log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout<br />log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n</p>
		<p># 应用于控制台<br />log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender<br />log4j.appender.Threshold=DEBUG<br />log4j.appender.CONSOLE.Target=System.out<br />log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout<br />log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<br />#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread] n%c[CATEGORY]%n%m[MESSAGE]%n%n</p>
		<p>#应用于文件<br />log4j.appender.FILE=org.apache.log4j.FileAppender<br />log4j.appender.FILE.File=file.log<br />log4j.appender.FILE.Append=false<br />log4j.appender.FILE.layout=org.apache.log4j.PatternLayout<br />log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<br /># Use this layout for LogFactor 5 analysis</p>
		<p># 应用于文件回滚<br />log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender<br />log4j.appender.ROLLING_FILE.Threshold=ERROR<br />log4j.appender.ROLLING_FILE.File=rolling.log<br />log4j.appender.ROLLING_FILE.Append=true<br />log4j.appender.ROLLING_FILE.MaxFileSize=10KB<br />log4j.appender.ROLLING_FILE.MaxBackupIndex=1<br />log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout<br />log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n</p>
		<p>#应用于socket<br />log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender<br />log4j.appender.SOCKET.RemoteHost=localhost<br />log4j.appender.SOCKET.Port=5001<br />log4j.appender.SOCKET.LocationInfo=true<br /># Set up for Log Facter 5<br />log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout<br />log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread]%n%c[CATEGORY]%n%m[MESSAGE]%n%n</p>
		<p># Log Factor 5 Appender<br />log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender<br />log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000</p>
		<p>#自定义Appender<br />log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender<br />log4j.appender.im.host = mail.cybercorlin.net<br />log4j.appender.im.username = username<br />log4j.appender.im.password = password<br />log4j.appender.im.recipient = <a href="mailto:corlin@cybercorlin.net">corlin@cybercorlin.net</a><br />log4j.appender.im.layout=org.apache.log4j.PatternLayout<br />log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n</p>
<img src ="http://www.blogjava.net/leekiang/aggbug/190986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-04-05 23:04 <a href="http://www.blogjava.net/leekiang/archive/2008/04/05/190986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HttpClient 笔记</title><link>http://www.blogjava.net/leekiang/archive/2007/12/07/166091.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Fri, 07 Dec 2007 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2007/12/07/166091.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/166091.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2007/12/07/166091.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/166091.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/166091.html</trackback:ping><description><![CDATA[1,需要同时使用commons-codec-1.3.jar<br />2,处理header<br />a.jsp<br />&lt;%@ page language="java" pageEncoding="UTF-8"%&gt;<br />&lt;%<br />    response.addHeader("location","beijing");<br />%&gt;<br />3,<br />            HttpClient client = new HttpClient();<br />            HeadMethod headMethod = new HeadMethod(<br />                    "http://localhost:8080/Test/jsp/a.jsp");<br />            client.executeMethod(headMethod);<br />            Header[] headers = headMethod.getResponseHeaders();<br />            System.out.println(headers.length);<br />            for (int i = 0; i &lt; headers.length; i++) {<br />                out.println(headers[i] + " &lt;br&gt;");<br />            }<br />            headMethod.releaseConnection();<br />4，<br /><p>httpclient默认使用ISO-8859-1读取http响应的内容，如果内容中包含汉字的话就得动用丑陋的new String(str.getBytes("ISO-8859-1"),"GBK");语句了。</p><p>解决办法</p><p>HttpClient client = new HttpClient();<br />
    client.getParams().setParameter(<br />
      HttpMethodParams.HTTP_CONTENT_CHARSET, "GBK");</p>5，设置 Http 连接超时为2秒<br />httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(2000); <br /><br />9,很好的帖子<br />http://laohuang.javaeye.com/blog/55613<br />http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html<br />http://www.cnjm.net/tech/article1155.html<br /><br />15,资源:<br />http://hi.baidu.com/toad24/blog/item/6d4e734e4ac2d00bb3de05d3.html<br />AD:http://dev2dev.bea.com.cn/techdoc/20060621823.html#_Toc131329166<br />http认证:http://dev.csdn.net/author/Jason009/769317e872024d0f8a2710141384ba47.html<br />http://www.javaeye.com/topic/84996<br />超时http://lkf0217.javaeye.com/blog/601104<br />超时http://skyful.javaeye.com/blog/518735<br /><img src ="http://www.blogjava.net/leekiang/aggbug/166091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2007-12-07 16:51 <a href="http://www.blogjava.net/leekiang/archive/2007/12/07/166091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>