﻿<?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-HelloWorld 善战者,求之于势,不责于人;故能择人而任势。-随笔分类-java</title><link>http://www.blogjava.net/zhaochengming/category/24908.html</link><description> 知止而后有定，定而后能静，静而后能安，安而后能虑，虑而后能得。物有本末，事有终始。知所先后，则近道矣。</description><language>zh-cn</language><lastBuildDate>Mon, 28 Jan 2013 04:33:30 GMT</lastBuildDate><pubDate>Mon, 28 Jan 2013 04:33:30 GMT</pubDate><ttl>60</ttl><item><title>excel加备注，转自http://blog.sina.com.cn/s/blog_4c27f00c0100dr4g.html</title><link>http://www.blogjava.net/zhaochengming/archive/2013/01/27/394816.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Sun, 27 Jan 2013 14:54:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2013/01/27/394816.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/394816.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2013/01/27/394816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/394816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/394816.html</trackback:ping><description><![CDATA[<a href="http://blog.sina.com.cn/s/blog_4c27f00c0100dr4g.html">http://blog.sina.com.cn/s/blog_4c27f00c0100dr4g.html</a><img src ="http://www.blogjava.net/zhaochengming/aggbug/394816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2013-01-27 22:54 <a href="http://www.blogjava.net/zhaochengming/archive/2013/01/27/394816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java特殊字符处理 StringEscapeUtils </title><link>http://www.blogjava.net/zhaochengming/archive/2012/05/04/377382.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Fri, 04 May 2012 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2012/05/04/377382.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/377382.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2012/05/04/377382.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/377382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/377382.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Search &nbsp; Browse &nbsp; Javadoc Search &nbsp; Javadoc Browse &nbsp; More  Java Source Code Display&nbsp;/* * Licensed to the Apache Software Foundation (ASF) under one or more * co...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhaochengming/archive/2012/05/04/377382.html'>阅读全文</a><img src ="http://www.blogjava.net/zhaochengming/aggbug/377382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2012-05-04 15:01 <a href="http://www.blogjava.net/zhaochengming/archive/2012/05/04/377382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用正则表达式例子</title><link>http://www.blogjava.net/zhaochengming/archive/2012/02/26/370798.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Sun, 26 Feb 2012 12:04:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2012/02/26/370798.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/370798.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2012/02/26/370798.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/370798.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/370798.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>package com.test;</p>
<p>import java.util.regex.Matcher;<br />import java.util.regex.Pattern;</p>
<p>public class PatternTest {<br />&nbsp;<br />&nbsp;private static void test0() {<br />&nbsp;&nbsp;String str = "&lt;biao&gt;&lt;&gt;c&lt;b&gt;x";<br />&nbsp;&nbsp;Pattern pattern;<br />&nbsp;&nbsp;Matcher matcher;<br />&nbsp;&nbsp;// 贪婪: 最长匹配 .* : 输出: &lt;biao&gt;&lt;&gt;c&lt;b&gt;<br />&nbsp;&nbsp;pattern = Pattern.compile("&lt;.*&gt;");<br />&nbsp;&nbsp;matcher = pattern.matcher(str);<br />&nbsp;&nbsp;while (matcher.find()) {<br />&nbsp;&nbsp;System.out.println(matcher.group());<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;// 不知是否非贪婪 .*? : 输出: &lt;biao&gt;, &lt;&gt;, &lt;b&gt;<br />&nbsp;&nbsp;pattern = Pattern.compile("&lt;.*?&gt;");<br />&nbsp;&nbsp;matcher = pattern.matcher(str);<br />&nbsp;&nbsp;while (matcher.find()) {<br />&nbsp;&nbsp;System.out.println(matcher.group());<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;// 使用组, 输出&lt;&gt;里的内容, 输出: 'biao', ' ', 'b'<br />&nbsp;&nbsp;// 0组代表整个表达式, 子组从1开始<br />&nbsp;&nbsp;pattern = Pattern.compile("&lt;(.*?)&gt;");<br />&nbsp;&nbsp;matcher = pattern.matcher(str);<br />&nbsp;&nbsp;while (matcher.find()) {<br />&nbsp;&nbsp;System.out.println("&gt;&gt;"+matcher.group(1));<br />&nbsp;&nbsp;} <br />&nbsp;}<br />&nbsp;<br />&nbsp;/** 查找以Java开头的任意字符串 */<br />&nbsp;public static void test1() {<br />&nbsp;&nbsp;Pattern pattern = Pattern.compile("^Java.*");<br />&nbsp;&nbsp;Matcher m = pattern.matcher("Java哈哈");<br />&nbsp;&nbsp;System.out.println(m.find());<br />&nbsp;}<br />&nbsp;<br />&nbsp;/** 以多条件分割字符串 */<br />&nbsp;public static void test2() {<br />&nbsp;&nbsp;Pattern pattern = Pattern.compile("[,|\\+]+");<br />&nbsp;&nbsp;String str[] = pattern.split("Java+ Hello World&nbsp; Java,Hello,,World|Sun");<br />&nbsp;&nbsp;if(str != null) {<br />&nbsp;&nbsp;&nbsp;for(String s : str) {<br />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("&gt;&gt; " +s);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;}</p>
<p>&nbsp;/** 文字替换 */<br />&nbsp;public static void test3() {<br />&nbsp;&nbsp;Pattern pattern = Pattern.compile("abc*");<br />&nbsp;&nbsp;Matcher matcher = pattern.matcher("xabcccc测试abd, abcce");<br />&nbsp;&nbsp;String str = matcher.replaceAll("(?)");<br />&nbsp;&nbsp;System.out.println(str);<br />&nbsp;}<br />&nbsp;<br />&nbsp;/** 文字替换(替换字符)&nbsp; 结果将会是&nbsp; x(?)测试(?)d, (?) */<br />&nbsp;public static void test4() {<br />&nbsp;&nbsp;Pattern pattern = Pattern.compile("123|4(567)");<br />&nbsp;&nbsp;Matcher matcher = pattern.matcher("0123456789abcde");<br />&nbsp;&nbsp;StringBuffer sb = new StringBuffer();<br />&nbsp;&nbsp;while(matcher.find()) {<br />&nbsp;&nbsp;&nbsp;System.out.println(matcher.group(0));<br />&nbsp;&nbsp;&nbsp;System.out.println(matcher.group(1));<br />&nbsp;&nbsp;&nbsp;System.out.println("&gt;&gt;"+ matcher.start()+":"+matcher.end());<br />&nbsp;&nbsp;&nbsp;matcher.appendReplacement(sb, "(?)");<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;matcher.appendTail(sb);<br />&nbsp;&nbsp;System.out.println(sb);<br />&nbsp;}<br />&nbsp;<br />&nbsp;public static void test5() {<br />&nbsp;&nbsp;String regEx="B(ond)";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str="My name is Bond. James Bond.";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pattern p=Pattern.compile(regEx);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Matcher matcher=p.matcher(str);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(matcher.find()){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(matcher.groupCount());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(matcher.start());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String group_0 = matcher.group(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String group_1 = matcher.group(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Group 0 " + group_0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Group 1 " + group_1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(str);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;}<br />&nbsp;<br />&nbsp;// 验证是否为邮箱地址<br />&nbsp;public static void test6() {<br />&nbsp;&nbsp;String str="<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#112;&#111;&#110;&#108;&#105;&#110;&#101;&#64;&#121;&#97;&#104;&#111;&#111;&#46;&#99;&#111;&#109;&#46;&#99;&#110;&#46;&#106;&#99;&#87;&#101;">ponline@yahoo.com.cn.jcWe</a>--_*"; <br />&nbsp;&nbsp;Pattern pattern = <br />&nbsp;&nbsp;Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+"); <br />&nbsp;&nbsp;Matcher matcher = pattern.matcher(str); <br />&nbsp;&nbsp;System.out.println(matcher.matches()); <br />&nbsp;}<br />&nbsp;<br />&nbsp;/** 去除html 标记&nbsp; */<br />&nbsp;public static void test7() {<br />&nbsp;&nbsp;Pattern pattern = Pattern.compile(".+?"); <br />&nbsp;&nbsp;Matcher matcher = pattern.matcher("&lt;a 测试 href=\"index.html\"&gt;主页&lt;/a&gt;"); <br />&nbsp;&nbsp;matcher.find();<br />&nbsp;&nbsp;System.out.println(matcher.group());<br />&nbsp;&nbsp;String string = matcher.replaceFirst(""); <br />&nbsp;&nbsp;System.out.println(string); <br />&nbsp;}<br />&nbsp;<br />&nbsp;/** 查找html 中对应条件字符串 **/<br />&nbsp;public static void test8() {<br />&nbsp;&nbsp;Pattern pattern = Pattern.compile("href=\"(.+?)\""); <br />&nbsp;&nbsp;Matcher matcher = pattern.matcher("&lt;a href=\"index.html\"&gt;主页&lt;/a&gt;"); <br />&nbsp;&nbsp;if(matcher.find()) <br />&nbsp;&nbsp;&nbsp; System.out.println(matcher.group(1)); <br />&nbsp;}<br />&nbsp;/** 截取http://地址&nbsp; **/<br />&nbsp;public static void test9() {<br />&nbsp;&nbsp;Pattern pattern = Pattern.compile("(<a href="http://|https://){1">http://|https://){1</a>}.+"); <br />&nbsp;&nbsp;Matcher matcher = pattern.matcher("dsdsds&lt;<a href="http://dfhf.\\sd">http://dfhf.\\sd</a>-: s//国家gfg-ffdfd&gt;fdf"); <br />&nbsp;&nbsp;StringBuffer buffer = new StringBuffer(); <br />&nbsp;&nbsp;while(matcher.find()){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buffer.append(matcher.group());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buffer.append("\r\n");&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(buffer.toString()); <br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;/** 替换指定{}中文字&nbsp; **/<br />&nbsp;public static void test10() {<br />&nbsp;&nbsp;String str = "Java目前的发展史是由{0}年-{1}年"; <br />&nbsp;&nbsp;String[][] object={new String[]{"<a href="file://%7b0//%7D%22,%221995%22%7D,new" href_cetemp='file://\\{0\\}","1995"},new'>\\{0\\}","1995"},new</a> String[]{"<a href="file://%7b1//%7D%22,%222007" href_cetemp='file://\\{1\\}","2007'>\\{1\\}","2007</a>"}}; <br />&nbsp;&nbsp;System.out.println(replace(str,object)); <br />&nbsp;}<br />&nbsp;<br />&nbsp;public static String replace(String sourceString, String[][] object) {<br />&nbsp;&nbsp;String temp=sourceString;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;object.length;i++){ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] result=(String[])object[i]; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pattern&nbsp;&nbsp;&nbsp; pattern = Pattern.compile(result[0]); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Matcher matcher = pattern.matcher(temp); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp=matcher.replaceAll(result[1]); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return temp; <br />&nbsp;}<br />&nbsp;<br />&nbsp;public static void main(String[] args) throws Exception{<br />&nbsp;&nbsp;PatternTest.test10();<br />&nbsp;</p>
<p>&nbsp;}<br />}<br /></p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/zhaochengming/aggbug/370798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2012-02-26 20:04 <a href="http://www.blogjava.net/zhaochengming/archive/2012/02/26/370798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAX-WS + Spring integration example (轉自http://www.mkyong.com/webservices/jax-ws/jax-ws-spring-integration-example/）</title><link>http://www.blogjava.net/zhaochengming/archive/2011/10/10/360406.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 10 Oct 2011 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2011/10/10/360406.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/360406.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2011/10/10/360406.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/360406.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/360406.html</trackback:ping><description><![CDATA[<div><p>Here&#8217;s a guide to show you how to integrate Spring with JAX-WS, as mention in this link : <a href="http://jax-ws-commons.java.net/spring/" target="_blank">http://jax-ws-commons.java.net/spring/</a>.  Upon finishing this tutorial, you will create a simple HelloWorld web  service (JAX-WS), and DI a bean into the web service via Spring.</p><h4>1. Project Folder</h4><p>See the final project folder structure.</p><div> <img src="http://www.mkyong.com/wp-content/uploads/2011/03/jaxws-spring-folder-structure.png" alt="jaxws-spring-folder-structure" title="jaxws-spring-folder-structure" width="353" height="456" /></div><h4>2. Project Dependencies</h4><div><div style="margin:20px 0;">   </div></div><p>Use Maven to get all the library dependencies. The key to integrate Spring with JAX-WS is via <strong>jaxws-spring.jar</strong>.</p><p><em>File : pom.xml</em></p><div><div style="margin:20px 0">   </div></div><div><div><pre style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">"http://maven.apache.org/POM/4.0.0"</span> </span> <span style="color: #009900;">  <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">"http://www.w3.org/2001/XMLSchema-instance"</span></span> <span style="color: #009900;">  <span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">"http://maven.apache.org/POM/4.0.0 </span> <span style="color: #009900;">  http://maven.apache.org/maven-v4_0_0.xsd"</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;modelVersion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>4.0.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/modelVersion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.mkyong<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>WebServicesExample<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;packaging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>war<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/packaging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.0-SNAPSHOT<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>WebServicesExample Maven Webapp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://maven.apache.org<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp;   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;repositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>java.net<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://download.java.net/maven/2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/repositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp;   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp;         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>                 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>junit<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>                 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>junit<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>                 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>3.8.1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>                 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>test<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp; 	<span style="color: #808080; font-style: italic;">&lt;!-- Spring framework --&gt;</span>  	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.springframework<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>spring<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.5.6<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp;         <span style="color: #808080; font-style: italic;">&lt;!-- JAX-WS --&gt;</span>  	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 	  	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.sun.xml.ws<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 	        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>jaxws-rt<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 	        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.2.3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp;  	<span style="color: #808080; font-style: italic;">&lt;!-- Library from java.net, integrate Spring with JAX-WS --&gt;</span>  	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.jvnet.jax-ws-commons.spring<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>jaxws-spring<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.8<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;exclusions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 		  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;exclusion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>            		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.springframework<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>       			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>spring-core<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>         	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/exclusion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>         	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;exclusion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>            		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.springframework<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>       			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>spring-context<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>         	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/exclusion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>         	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;exclusion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>            		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.sun.xml.stream.buffer<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>       			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>streambuffer<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>         	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/exclusion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>         	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;exclusion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>            		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.jvnet.staxex<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>       			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>stax-ex<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>         	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/exclusion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/exclusions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp;   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;finalName<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>web services<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/finalName<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.maven.plugins<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-compiler-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.3.1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.6<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.6<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><div> <strong>Note</strong><br /> The jaxws-spring&#8217;s pom.xml has a lot of unnecessary dependencies, you may need to exclude it via &lt;/exclusions&gt; tag.</div><h4>3. JAX-WS Hello World</h4><p>A simple JAX-WS example, and dependency inject (DI) &#8220;HelloWorldBo&#8221; via Spring.</p><p><em>File : HelloWorldWS.java</em></p><div><div><pre style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.mkyong.ws</span><span style="color: #339933;">;</span> &nbsp; <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.jws.WebMethod</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.jws.WebService</span><span style="color: #339933;">;</span> &nbsp; <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.mkyong.bo.HelloWorldBo</span><span style="color: #339933;">;</span> &nbsp; @WebService <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> HelloWorldWS<span style="color: #009900;">{</span> &nbsp; 	<span style="color: #666666; font-style: italic;">//DI via Spring</span> 	HelloWorldBo helloWorldBo<span style="color: #339933;">;</span> &nbsp; 	@WebMethod<span style="color: #009900;">(</span>exclude<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">)</span> 	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setHelloWorldBo<span style="color: #009900;">(</span>HelloWorldBo helloWorldBo<span style="color: #009900;">)</span> <span style="color: #009900;">{</span> 		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">helloWorldBo</span> <span style="color: #339933;">=</span> helloWorldBo<span style="color: #339933;">;</span> 	<span style="color: #009900;">}</span> &nbsp; 	@WebMethod<span style="color: #009900;">(</span>operationName<span style="color: #339933;">=</span><span style="color: #0000ff;">"getHelloWorld"</span><span style="color: #009900;">)</span> 	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getHelloWorld<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span> &nbsp; 		<span style="color: #000000; font-weight: bold;">return</span> helloWorldBo.<span style="color: #006633;">getHelloWorld</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span> &nbsp; 	<span style="color: #009900;">}</span> &nbsp; <span style="color: #009900;">}</span></pre></div></div><h4>4. Beans</h4><p>Here&#8217;s the HelloWorldBo class, with a <code>getHelloWorld()</code> method to return a simple string.</p><p><em>File : HelloWorldBo.java</em></p><div><div><pre style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.mkyong.bo</span><span style="color: #339933;">;</span> &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> HelloWorldBo<span style="color: #009900;">{</span> &nbsp; 	<span style="color: #003399;">String</span> getHelloWorld<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span> &nbsp; <span style="color: #009900;">}</span></pre></div></div><p><em>File : HelloWorldBoImpl.java</em></p><div><div><pre style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.mkyong.bo.impl</span><span style="color: #339933;">;</span> &nbsp; <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.mkyong.bo.HelloWorldBo</span><span style="color: #339933;">;</span> &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> HelloWorldBoImpl <span style="color: #000000; font-weight: bold;">implements</span> HelloWorldBo<span style="color: #009900;">{</span> &nbsp; 	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getHelloWorld<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span> 		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">"JAX-WS + Spring!"</span><span style="color: #339933;">;</span> 	<span style="color: #009900;">}</span> &nbsp; <span style="color: #009900;">}</span></pre></div></div><h4>5. Spring Beans Configuration</h4><p>Spring beans configuration file to bind URL pattern &#8220;<strong>/hello</strong>&#8221; to &#8220;<strong>com.mkyong.ws.HelloWorldWS</strong>&#8221; web service class.</p><p><em>File : applicationContext.xml</em></p><div><div><pre style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"1.0"</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">"UTF-8"</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span> <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beans</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">"http://www.springframework.org/schema/beans"</span></span> <span style="color: #009900;">       <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">"http://www.w3.org/2001/XMLSchema-instance"</span></span> <span style="color: #009900;">       <span style="color: #000066;">xmlns:ws</span>=<span style="color: #ff0000;">"http://jax-ws.dev.java.net/spring/core"</span></span> <span style="color: #009900;">       <span style="color: #000066;">xmlns:wss</span>=<span style="color: #ff0000;">"http://jax-ws.dev.java.net/spring/servlet"</span></span> <span style="color: #009900;">       <span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">"http://www.springframework.org/schema/beans</span> <span style="color: #009900;">       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd</span> <span style="color: #009900;">       http://jax-ws.dev.java.net/spring/core</span> <span style="color: #009900;">        http://jax-ws.dev.java.net/spring/core.xsd</span> <span style="color: #009900;">        http://jax-ws.dev.java.net/spring/servlet</span> <span style="color: #009900;">        http://jax-ws.dev.java.net/spring/servlet.xsd"</span></span> <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span> &nbsp;     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;wss:binding</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">"/hello"</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;wss:service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>             <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ws:service</span> <span style="color: #000066;">bean</span>=<span style="color: #ff0000;">"#helloWs"</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/wss:service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/wss:binding<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp;     <span style="color: #808080; font-style: italic;">&lt;!-- Web service methods --&gt;</span>     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"helloWs"</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"com.mkyong.ws.HelloWorldWS"</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>     	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"helloWorldBo"</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">"HelloWorldBo"</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/bean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp;     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"HelloWorldBo"</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"com.mkyong.bo.impl.HelloWorldBoImpl"</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span> &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/beans<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><div> <strong>Note</strong><br /> With this jaxws-spring integration mechanism, the <strong>sun-jaxws.xml</strong> file is no longer required.</div><h4>6. web.xml</h4><p>In web.xml, declares &#8220;<code>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</code>&#8220;, and link it to &#8220;<code>/hello</code>&#8220;.</p><div><div><pre style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;web-app</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"WebApp_ID"</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"2.4"</span> </span> <span style="color: #009900;">	<span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">"http://java.sun.com/xml/ns/j2ee"</span> </span> <span style="color: #009900;">	<span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">"http://www.w3.org/2001/XMLSchema-instance"</span> </span> <span style="color: #009900;">	<span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">"http://java.sun.com/xml/ns/j2ee </span> <span style="color: #009900;">	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span><span style="color: #000000; font-weight: bold;">&gt;</span></span> &nbsp; 	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Spring + JAX-WS<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/display-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp; 	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     	        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>jaxws-servlet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     	       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     		          com.sun.xml.ws.transport.http.servlet.WSSpringServlet     	        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp; 	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>                 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>jaxws-servlet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>                 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/hello<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp;          <span style="color: #808080; font-style: italic;">&lt;!-- Register Spring Listener --&gt;</span>   	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listener<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     	        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listener-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>     		     org.springframework.web.context.ContextLoaderListener     	        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/listener-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>   	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/listener<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><h4>7. Demo</h4><p>Start the project, and access the deployed web service via URL &#8220;<strong>/hello</strong>&#8220;, for example <em>http://localhost:8080/WebServicesExample/hello?wsdl</em></p><div> <img src="http://www.mkyong.com/wp-content/uploads/2011/03/jaxws-spring-demo.png" alt="jaxws-spring-demo" title="jaxws-spring-demo" width="639" height="391" /></div><div> Download it &#8211; <a href="http://www.mkyong.com/wp-content/uploads/2011/03/JAX-WS-Spring-Integration-Example.zip">JAX-WS-Spring-Integration-Example.zip</a> (10KB)</div></div><img src ="http://www.blogjava.net/zhaochengming/aggbug/360406.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2011-10-10 17:14 <a href="http://www.blogjava.net/zhaochengming/archive/2011/10/10/360406.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Groovy入门教程(一) </title><link>http://www.blogjava.net/zhaochengming/archive/2011/10/08/360191.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Sat, 08 Oct 2011 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2011/10/08/360191.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/360191.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2011/10/08/360191.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/360191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/360191.html</trackback:ping><description><![CDATA[<div>http://wenku.baidu.com/view/bca803b91a37f111f1855bc1.html</div><img src ="http://www.blogjava.net/zhaochengming/aggbug/360191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2011-10-08 14:42 <a href="http://www.blogjava.net/zhaochengming/archive/2011/10/08/360191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 2.0的Action讲解 轉自http://www.blogjava.net/max/archive/2006/10/25/77157.html</title><link>http://www.blogjava.net/zhaochengming/archive/2011/09/28/359723.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Wed, 28 Sep 2011 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2011/09/28/359723.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/359723.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2011/09/28/359723.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/359723.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/359723.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 有Struts 1.x经验的朋友都知道Action是Struts的核心内容，当然Struts 2.0也不例外。不过，Struts 1.x与Struts 2.0的Action模型很大的区别。 		 				 						 								 										&nbsp; 										Struts 1.x 										Stuts 2.0 								 								 					...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhaochengming/archive/2011/09/28/359723.html'>阅读全文</a><img src ="http://www.blogjava.net/zhaochengming/aggbug/359723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2011-09-28 18:07 <a href="http://www.blogjava.net/zhaochengming/archive/2011/09/28/359723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Velocity语法  轉自 http://www.blogjava.net/alexwan/archive/2008/06/07/206473.html</title><link>http://www.blogjava.net/zhaochengming/archive/2011/09/28/359724.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Wed, 28 Sep 2011 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2011/09/28/359724.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/359724.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2011/09/28/359724.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/359724.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/359724.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.&nbsp;&nbsp;&nbsp;&nbsp; 变量 (1)变量的定义： #set($name = "hello")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;说明：velocity中变量是弱类型的。 当使用#set 指令时，括在双引号中的字面字符串将解析和重新解释，如下所示： #set($directoryRoot = "www" ) #set($templateName ...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhaochengming/archive/2011/09/28/359724.html'>阅读全文</a><img src ="http://www.blogjava.net/zhaochengming/aggbug/359724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2011-09-28 18:07 <a href="http://www.blogjava.net/zhaochengming/archive/2011/09/28/359724.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>StringUtils方法全集  本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/fishnotears/archive/2010/11/16/6012953.aspx</title><link>http://www.blogjava.net/zhaochengming/archive/2011/09/26/359500.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 26 Sep 2011 04:57:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2011/09/26/359500.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/359500.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2011/09/26/359500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/359500.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/359500.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: org.apache.commons.lang.StringUtils中方法的操作对象是java.lang.String类型的对象，是JDK提供 的String类型操作方法的补充，并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException， 而是做了相应处理，例如，如果输入为null则返回也是null等，具体可以查看源代码)。 除了构造器，Stri...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhaochengming/archive/2011/09/26/359500.html'>阅读全文</a><img src ="http://www.blogjava.net/zhaochengming/aggbug/359500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2011-09-26 12:57 <a href="http://www.blogjava.net/zhaochengming/archive/2011/09/26/359500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring aop execution pointcut</title><link>http://www.blogjava.net/zhaochengming/archive/2011/07/25/355006.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 25 Jul 2011 09:36:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2011/07/25/355006.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/355006.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2011/07/25/355006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/355006.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/355006.html</trackback:ping><description><![CDATA[<span class="tcnt"><font size="5" face="微软雅黑"><br />
<p>Spring AOP 用户可能会经常使用 <code>execution</code> pointcut designator。执行表达式的格式如下：</p><pre>execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)
</pre>
<p><span style="font-size: 14pt">除了返回类型模式（上面代码片断中的ret-type-pattern），名字模式和参数模式以外，所有的部分都是可选的。 返回类型模式决定了方法的返回类型必须依次匹配一个连接点。 你会使用的最频繁的返回类型模式是 </span><code><span style="font-size: 14pt">*</span></code><span style="font-size: 14pt"> ，它代表了匹配任意的返回类型。 一个全称限定的类型名将只会匹配返回给定类型的方法。名字模式匹配的是方法名。 你可以使用 </span><code><span style="font-size: 14pt">*</span></code><span style="font-size: 14pt"> 通配符作为所有或者部分命名模式。 参数模式稍微有点复杂：</span><code><span style="font-size: 14pt">()</span></code><span style="font-size: 14pt"> 匹配了一个不接受任何参数的方法， 而 </span><code><span style="font-size: 14pt">(..)</span></code><span style="font-size: 14pt"> 匹配了一个接受任意数量参数的方法（零或者更多）。 模式 </span><code><span style="font-size: 14pt">(*)</span></code><span style="font-size: 14pt"> 匹配了一个接受一个任何类型的参数的方法。 模式 </span><code><span style="font-size: 14pt">(*,String)</span></code><span style="font-size: 14pt"> 匹配了一个接受两个参数的方法，第一个可以是任意类型，第二个则必须是String类型。</span></p>
<p>下面给出一些常见切入点表达式的例子。</p>
<ul type="disc"><li>
<p>任意公共方法的执行：</p><pre>execution(public * *(..))</pre></li><li>
<p>任何一个以&#8220;set&#8221;开始的方法的执行：</p><pre>execution(* set*(..))</pre></li><li>
<p><code>AccountService</code> 接口的任意方法的执行：</p><pre>execution(* com.xyz.service.AccountService.*(..))</pre></li><li>
<p>定义在service包里的任意方法的执行：</p><pre>execution(* com.xyz.service.*.*(..))</pre></li><li>
<p>定义在service包或者子包里的任意方法的执行：</p><pre>execution(* com.xyz.service..*.*(..))</pre></li></ul><pre>&nbsp;<p>within(com.xyz.service.*)在service包或者子包里的任意连接点（在Spring AOP中只是方法执行） ：&nbsp;&nbsp; </p><p>within(com.xyz.service..*)实现了 AccountService 接口的代理对象的任意连接点（在Spring AOP中只是方法执行） ：&nbsp;&nbsp; </p><p>this(com.xyz.service.AccountService)'this'在binding form中用的更多：- 请常见以下讨论通知的章节中关于如何使得代理对象可以在通知体内访问到的部分。&nbsp;&nbsp;&nbsp; <br />实现了 AccountService 接口的目标对象的任意连接点（在Spring AOP中只是方法执行） ：&nbsp;&nbsp; <br />&nbsp; <br />target(com.xyz.service.AccountService)'target'在binding form中用的更多：- 请常见以下讨论通知的章节中关于如何使得目标对象可以在通知体内访问到的部分。&nbsp;&nbsp;&nbsp; <br />任何一个只接受一个参数，且在运行时传入的参数实现了 Serializable 接口的连接点 （在Spring AOP中只是方法执行）&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />args(java.io.Serializable)'args'在binding form中用的更多：- 请常见以下讨论通知的章节中关于如何使得方法参数可以在通知体内访问到的部分。&nbsp;&nbsp;&nbsp; <br />请注意在例子中给出的切入点不同于 execution(* *(java.io.Serializable))： args只有在动态运行时候传入参数是可序列化的（Serializable）才匹配，而execution 在传入参数的签名声明的类型实现了 Serializable 接口时候匹配。&nbsp;&nbsp; <br />&nbsp; <br />有一个 @Transactional 注解的目标对象中的任意连接点（在Spring AOP中只是方法执行）&nbsp;&nbsp;&nbsp; </p><p>@target(org.springframework.transaction.annotation.Transactional)'@target' 也可以在binding form中使用：请常见以下讨论通知的章节中关于如何使得annotation对象可以在通知体内访问到的部分。&nbsp;&nbsp;&nbsp; <br />任何一个目标对象声明的类型有一个 @Transactional 注解的连接点（在Spring AOP中只是方法执行）&nbsp;&nbsp; </p><p>@within(org.springframework.transaction.annotation.Transactional)'@within'也可以在binding form中使用：- 请常见以下讨论通知的章节中关于如何使得annotation对象可以在通知体内访问到的部分。&nbsp;&nbsp;&nbsp; <br />任何一个执行的方法有一个 @Transactional annotation的连接点（在Spring AOP中只是方法执行）&nbsp;&nbsp;&nbsp; </p><p>@annotation(org.springframework.transaction.annotation.Transactional)'@annotation' 也可以在binding form中使用：- 请常见以下讨论通知的章节中关于如何使得annotation对象可以在通知体内访问到的部分。&nbsp;&nbsp;&nbsp; <br />任何一个接受一个参数，并且传入的参数在运行时的类型实现了 @Classified annotation的连接点（在Spring AOP中只是方法执行）&nbsp;&nbsp;&nbsp; <br />&nbsp;<br />@args(com.xyz.security.Classified)'@args'也可以在binding form中使用：- 请常见以下讨论通知的章节中关于如何使得annotation对象可以在通知体内访问到的部分。</p></pre></font></span><img src ="http://www.blogjava.net/zhaochengming/aggbug/355006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2011-07-25 17:36 <a href="http://www.blogjava.net/zhaochengming/archive/2011/07/25/355006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring和Hibernate整合时候的asm包冲突 转自(http://apps.hi.baidu.com/share/detail/33127760)</title><link>http://www.blogjava.net/zhaochengming/archive/2011/07/25/355003.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 25 Jul 2011 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2011/07/25/355003.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/355003.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2011/07/25/355003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/355003.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/355003.html</trackback:ping><description><![CDATA[<div id="app-share-content"><span style="color: rgb(255,0,0)"><span style="color: rgb(0,0,0); font-size: 12pt">
<p style="text-align: left" class="MsoNormal" align="left"></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="color: rgb(0,0,0); font-weight: bold"><span style="color: #ff6600">org.springframework.beans.factory.BeanCreationException</span>: <span style="color: #006600">Error creating bean with name 'SessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError</span>: <span style="color: #cc0000">org.objectweb.asm.ClassVisitor.visit</span>(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)VCaused by: <span style="color: #990000">java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit</span>(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)<br /><br />网上的说法真是良莠不齐,最终找个<span style="color: #009900">能解决问题的方法</span>(折腾我一下午,快疯了)</span></p>
<p style="text-align: left" class="MsoNormal" align="left"></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="color: rgb(0,0,0); font-weight: bold">原因：</span></p>
<div></div>
<div><font size="4"><strong>在使用Spring的AOP编程时，会用到这几个lib：<br />asm-2.2.2.jar<br />asm-commons-2.2.2.jar<br />asm-util-2.2.2.jar</strong></font></div>
<div></div>
<div><font size="4"><strong>Hibernate使用如下lib：</strong></font></div>
<div></div>
<div><font size="4"><strong>asm.jar<br />asm-attrs.jar</strong></font></div>
<div>
<p><br /><font size="4"><strong>其中asm-2.2.2.jar与asm.jar存在类上的冲突！！！<br />使用其中之一或两者都使用，可能会出现如下错误：<br />java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor<br />java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor<br />java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit</strong></font></p>
<p>&nbsp;</p></div>
<div></div>
<div></div>
<div><span style="color: rgb(0,255,0); font-weight: bold"><font size="4"><font color="#000000"><span style="color: rgb(0,0,0)">解决方法</span>：</font></font><br /><br /></span><font color="#ff0000"><font size="4"><strong><font color="#000000">1.<u><font color="#800080" size="5">去掉</font></u>类路径上的关于Hibernate的3个lib</font><br />asm.jar<br />asm-attrs.jar<br />cglib-2.1.2.jar<br /><font color="#000000">2.<font color="#008080" size="5"><u>加入</u></font>Spring中的以下4个lib</font><br />asm-2.2.2.jar<br />asm-commons-2.2.2.jar<br />asm-util-2.2.2.jar<br />cglib-nodep-2.1_3.jar<br /><br /></strong></font><font color="#000000" size="4"><strong>自己的一个小测试： (运行环境：apache-tomcat-5.5.15 + .MyEclipse_5.5GA_E3.2.2 )<br /><br />整合ssh项目中, 在 Tomcat 部署的环境中 D:\tomcat\webapps\my\WEB-INF\lib 发生了点异常：同时有 <br /></strong></font><font size="4"><strong><font color="#800080">asm.jar、asm-attrs.jar、asm-2.2.3.jar 、 asm-commons-2.2.3.jar<br />asm-util-2.2.3.jar、 cglib-nodep-2.1_3.jar</font> </strong></font><font size="4"><strong><font color="#003366">在启动tomcat中不会出现异常信息。(我想asm-2.2.3jar可能在一定程度上作了改进。)<br /></font><br /><font color="#000000">当在D:\tomcat\webapps\my\WEB-INF\lib 下加入</font> cglib-2.1.3.jar <br /></strong></font><font size="4"><strong><font color="#ff6600">会报上面的java.lang.NoSuchMethodError: <br />org.objectweb.asm.ClassVisitor.visit错误信息。</font> <font color="#993366">说明cglib-2.1.3.jar与其它包发生了冲突</font>。</strong></font></font></div>
<div></div>
<div><font color="#ff0000" size="4"><strong>删除cglib-2.1.3.jar问题解决!</strong></font></div></span></span></div><img src ="http://www.blogjava.net/zhaochengming/aggbug/355003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2011-07-25 17:14 <a href="http://www.blogjava.net/zhaochengming/archive/2011/07/25/355003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中模拟鼠标和键盘输入</title><link>http://www.blogjava.net/zhaochengming/archive/2011/06/09/351958.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Thu, 09 Jun 2011 01:54:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2011/06/09/351958.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/351958.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2011/06/09/351958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/351958.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/351958.html</trackback:ping><description><![CDATA[提供了一个Robot类，在java.awt.*包下面。这个类在jdk中描述如下：<br /><br />此类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。 <br /><br />使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于：事件是在平台的本机输入队列中生成的。例如，Robot.mouseMove 将实际移动鼠标光标，而不是只生成鼠标移动事件。 <br /><br />注意，某些平台需要特定权限或扩展来访问低级输入控件。如果当前平台配置不允许使用输入控件，那么试图构造 Robot 对象时将抛出 AWTException。例如，如果 X 服务器不支持（或没有启用）XTEST 2.2 标准扩展，则 X-Window 系统会抛出异常。 <br /><br />出于自测试之外的目的而使用 Robot 的应用程序应妥善处理这些错误条件。 <br /><br /><br />这个类除了模拟鼠标键盘操作以外，还可以用来截取屏幕，只演示一下怎么模拟鼠标键盘操作，具体api参考javadoc。这个演示完成了弹出QQ和移动窗口的功能。代码如下：<br /><br />import java.awt.AWTException;<br />import java.awt.Robot;<br />import java.awt.event.KeyEvent;<br />/**<br />* @author bean<br />* <br />*/<br />public class RobotDemo {<br /><br />private Robot robot = null;<br /><br />public RobotDemo() {<br />&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp; robot = new Robot();<br />&nbsp;&nbsp; } catch (AWTException e) {<br />&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />&nbsp;&nbsp; }<br />}<br />/** 可以弹出QQ */<br />public void keyBoardDemo() {<br />&nbsp;&nbsp; robot.keyPress(KeyEvent.VK_ALT);<br />&nbsp;&nbsp; robot.keyPress(KeyEvent.VK_CONTROL);<br />&nbsp;&nbsp; robot.keyPress(KeyEvent.VK_Z);<br />&nbsp;&nbsp; robot.keyRelease(KeyEvent.VK_Z);<br />&nbsp;&nbsp; robot.keyRelease(KeyEvent.VK_CONTROL);<br />&nbsp;&nbsp; robot.keyRelease(KeyEvent.VK_ALT);<br />}<br />/** 前提是有个最大化的窗口，功能是移动到标题栏，然后拖拽到600,600的位置*/<br />public void mouseDemo(){<br />&nbsp;&nbsp; robot.mouseMove(80, 10);<br />&nbsp;&nbsp; robot.mousePress(KeyEvent.BUTTON1_MASK);<br />&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp; Thread.sleep(20);<br />&nbsp;&nbsp; } catch (InterruptedException e) {<br />&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; robot.mouseMove(600, 600);<br />&nbsp;&nbsp; robot.mouseRelease(KeyEvent.BUTTON1_MASK);<br />}<br />/**<br />&nbsp;&nbsp; * @param args<br />&nbsp;&nbsp; */<br />public static void main(String[] args) {<br />&nbsp;&nbsp; RobotDemo demo=new RobotDemo();<br />&nbsp;&nbsp; demo.keyBoardDemo();<br />&nbsp;&nbsp; demo.mouseDemo();<br />}<br /><br />}<img src ="http://www.blogjava.net/zhaochengming/aggbug/351958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2011-06-09 09:54 <a href="http://www.blogjava.net/zhaochengming/archive/2011/06/09/351958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转自http://blog.csdn.net/java_mars/archive/2008/11/18/3326099.aspx</title><link>http://www.blogjava.net/zhaochengming/archive/2011/04/20/348626.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Wed, 20 Apr 2011 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2011/04/20/348626.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/348626.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2011/04/20/348626.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/348626.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/348626.html</trackback:ping><description><![CDATA[<p>在网上那多人问,如何抓取iframe或其他所有的信息,对象等,其实很简单的,看了以下文章就明白了.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>去这里下载jdic</p>
<p><font color="#008000"><a href="https://jdic.dev.java.net/">https://<strong>jdic</strong>.dev.java.net/</a></font></p>
<p>&nbsp;</p>
<p><font color="#008000">我用的是0.94版,eclipse 3.x</font></p>
<p>&nbsp;</p>
<p><font color="#008000">下截后</font></p>
<p><font color="#008000">将jdic.dll,IeEmbed.exe,jdic.jar,MozEmbed.exe,packager.jar,tray.dll考贝到你的工程lib目录(在工程上建立lib目录),然后设置以上.jar文件到编译路径.</font></p>
<p>&nbsp;</p>
<p><font color="#008000">建一个jFrame,加一个JPanel</font></p>
<p>&nbsp;</p>
<p><font color="#008000">以下为代码片断, 用以下代码加载浏览器</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebBrowser webBrowser = new WebBrowser();</font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; panel_name.add(webBrowser, BorderLayout.CENTER);</font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; webBrowser .setURL(new URL(<a href="http://www.google.com/">http://www.google.com</a>));</font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; webBrowser .addWebBrowserListener(new WebBrowserListener() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void downloadStarted(WebBrowserEvent event) {;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void downloadCompleted(WebBrowserEvent event) {;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void downloadProgress(WebBrowserEvent event) {;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void downloadError(WebBrowserEvent event) {;}<br />
</font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void documentCompleted(WebBrowserEvent event) {</font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //在这里写代码</font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 很COOL的功能,与脚本交互</font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer jsBuff = new StringBuffer();</font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jsBuff.append(" var bodyhtml = document.body.innerHTML;");&nbsp;&nbsp; //取当前页的内容</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String html =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">webBrowser </font>.getContent();&nbsp; //取当前页的内容,这个不好用,在有iframe的网页中不灵</p>
<font color="#008000">
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jsBuff.append(" var hrefObj = document.getElementsByTagName('A');");</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //....略,取页面的N个内容</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //好了,好多人都问,如何取得iframe的内容呢?jdic 的包没有一个方法可以取得到的,看以上的脚本 var bodyhtml ,我们怎么取到它的值呢?如果取得到,那一切问题都可以解决.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String iframeScript= " var iframehtml = document.frames[0].body.innerHTML;";&nbsp;&nbsp; //取得指定iframe的内容</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //在这里,可以与脚本变量的值进行交互,完成我们想要的功能,确实很COOL</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String iframeHtml = webBrowser .executeScript(iframeScript);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(iframeHtml );&nbsp;&nbsp; //出来的正是想要的,很简单吧?但是不知道的话,想破头也不明白</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //说到这,其实大家已经明白,用jdic可以操纵绝大多数的网站,比如时下流行的web网游,想到什么了?对,写一个脚本外挂就是这么简单.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //快装一个浏览器dom结构查看插件,操控在你手中</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</font>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></p>
<p><font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void titleChange(WebBrowserEvent event) {;}&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void statusTextChange(WebBrowserEvent event) {;}<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void windowClose(WebBrowserEvent arg0) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;});</font></p>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/348626.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2011-04-20 14:36 <a href="http://www.blogjava.net/zhaochengming/archive/2011/04/20/348626.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 个人信息导出到Excel表 转自 http://hi.baidu.com/ftuo/blog/item/2a4836cf45f0bc3ef8dc61d4.html</title><link>http://www.blogjava.net/zhaochengming/archive/2010/11/26/339140.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Fri, 26 Nov 2010 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2010/11/26/339140.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/339140.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2010/11/26/339140.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/339140.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/339140.html</trackback:ping><description><![CDATA[/&nbsp; * 将个人信息导出到Excel表<br />
&nbsp;&nbsp; */<br />
public void grxxExportXLS(HttpServletResponse response, Grxx grxx,<br />
&nbsp;&nbsp;&nbsp; PageBean p) {<br />
&nbsp;&nbsp; List list = queryGrxxList(grxx, p);<br />
&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; // String targetfile = getServlet().getServletContext().getRealPath(<br />
&nbsp;&nbsp;&nbsp; // "/companymanage")<br />
&nbsp;&nbsp;&nbsp; // + "/grxxlistxls.xls";<br />
&nbsp;&nbsp;&nbsp; // Method 1：创建可写入的Excel工作薄<br />
&nbsp;&nbsp;&nbsp; // jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new<br />
&nbsp;&nbsp;&nbsp; // File(<br />
&nbsp;&nbsp;&nbsp; // targetfile));<br />
&nbsp;&nbsp;&nbsp; // Method 2：将WritableWorkbook直接写入到输出流<br />
&nbsp;&nbsp;&nbsp; OutputStream os = response.getOutputStream();<br />
&nbsp;&nbsp;&nbsp; String fs = "个人信息表";<br />
&nbsp;&nbsp;&nbsp; fs = new String(fs.getBytes("gb2312"), "iso8859-1");<br />
&nbsp;&nbsp;&nbsp; response.reset();// 清空输出流<br />
&nbsp;&nbsp;&nbsp; response.setContentType("application/msexcel");// 定义输出类型<br />
&nbsp;&nbsp;&nbsp; response.setHeader("Content-disposition", "attachment; filename="<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + fs + ".xls");// 设定输出文件头<br />
&nbsp;&nbsp;&nbsp; jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
<p>&nbsp;&nbsp;&nbsp; // 创建Excel工作表<br />
&nbsp;&nbsp;&nbsp; jxl.write.WritableSheet ws = wwb.createSheet("个人信息表1", 0);<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * 19列,标题占据2行<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; int charTitle = 10;// 标题字体大小<br />
&nbsp;&nbsp;&nbsp; int charNormal = 10;// 标题字体大小<br />
&nbsp;&nbsp;&nbsp; // 添加带有字型Formatting的对象</p>
<p>&nbsp;&nbsp;&nbsp; // 用于标题<br />
&nbsp;&nbsp;&nbsp; jxl.write.WritableFont titleFont = new jxl.write.WritableFont(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WritableFont.createFont("宋体"), charTitle, WritableFont.BOLD);</p>
<p>&nbsp;&nbsp;&nbsp; jxl.write.WritableCellFormat titleFormat = new jxl.write.WritableCellFormat(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFont);<br />
&nbsp;&nbsp;&nbsp; titleFormat.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条<br />
&nbsp;&nbsp;&nbsp; titleFormat.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐<br />
&nbsp;&nbsp;&nbsp; titleFormat.setAlignment(Alignment.CENTRE); // 水平对齐<br />
&nbsp;&nbsp;&nbsp; titleFormat.setWrap(true); // 是否换行<br />
&nbsp;&nbsp;&nbsp; titleFormat.setBackground(Colour.GRAY_25);// 背景色暗灰-25%<br />
&nbsp;&nbsp;&nbsp; // 用于正文<br />
&nbsp;&nbsp;&nbsp; WritableFont normalFont = new WritableFont(WritableFont<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .createFont("宋体"), charNormal);<br />
&nbsp;&nbsp;&nbsp; jxl.write.WritableCellFormat normalFormat = new jxl.write.WritableCellFormat(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFont);<br />
&nbsp;&nbsp;&nbsp; normalFormat.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条<br />
&nbsp;&nbsp;&nbsp; normalFormat.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐<br />
&nbsp;&nbsp;&nbsp; normalFormat.setAlignment(Alignment.CENTRE);// 水平对齐<br />
&nbsp;&nbsp;&nbsp; normalFormat.setWrap(true); // 是否换行</p>
<p>&nbsp;&nbsp;&nbsp; // 用于带有formatting的Number对象<br />
&nbsp;&nbsp;&nbsp; WritableFont nf = new WritableFont(WritableFont<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .createFont("Times New Roman"), charNormal);<br />
&nbsp;&nbsp;&nbsp; // jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");<br />
&nbsp;&nbsp;&nbsp; jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nf);<br />
&nbsp;&nbsp;&nbsp; wcfN.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条<br />
&nbsp;&nbsp;&nbsp; wcfN.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐<br />
&nbsp;&nbsp;&nbsp; wcfN.setAlignment(Alignment.CENTRE);// 水平对齐<br />
&nbsp;&nbsp;&nbsp; wcfN.setWrap(true); // 是否换行<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * 添加标题<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; // 第一行<br />
&nbsp;&nbsp;&nbsp; /** *********设置列宽每个字体占charset个**************** */<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(14, 0, 18, 0); // 合并单元格，<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(10, 0, 13, 0); // 合并单元格，</p>
<p>&nbsp;&nbsp;&nbsp; ws.mergeCells(0, 0, 0, 1); // 合并单元格，序号<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(0, 6); // 设置列宽,第1列<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(1, 0, 1, 1); // 合并单元格，公民身份证号<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(1, 9); // 设置列宽,第2列<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(2, 0, 2, 1); // 合并单元格，电脑序号<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(2, 6); // 设置列宽,第3列<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(3, 0, 3, 1); // 合并单元格，四险姓名<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(3, 6); // 设置列宽,第4列<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(4, 0, 4, 1); // 合并单元格，医疗姓名<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(4, 6); // 设置列宽,第5列<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(5, 0, 5, 1); // 合并单元格，医疗保险手册号<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(5, 9); // 设置列宽,第6列<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(6, 0, 6, 1); // 合并单元格，四险缴费人员类别<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(6, 9); // 设置列宽,第7列<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(7, 0, 7, 1); // 合并单元格，医疗缴费人员类别<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(7, 9); // 设置列宽,第8列<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(8, 0, 8, 1); // 合并单元格，医疗参保人员类别<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(8, 9); // 设置列宽,第9列<br />
&nbsp;&nbsp;&nbsp; ws.mergeCells(9, 0, 9, 1); // 合并单元格，医疗参保状态<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(9, 7); // 设置列宽,第10列<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(10, 6); // 设置列宽,第11列<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(11, 6); // 设置列宽,第12列<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(12, 6); // 设置列宽,第13列<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(13, 6); // 设置列宽,第14列<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(14, 6); // 设置列宽,第15列<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(15, 6); // 设置列宽,第16列<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(16, 6); // 设置列宽,第17列<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(17, 6); // 设置列宽,第18列<br />
&nbsp;&nbsp;&nbsp; ws.setColumnView(18, 6); // 设置列宽,第19列<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit00 = new jxl.write.Label(0, 0, "序号", titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit00);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit10 = new jxl.write.Label(1, 0, "公民身份证号",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit10);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit20 = new jxl.write.Label(2, 0, "电脑序号",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit20);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit30 = new jxl.write.Label(3, 0, "四险姓名",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit30);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit40 = new jxl.write.Label(4, 0, "医疗姓名",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit40);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit50 = new jxl.write.Label(5, 0, "医疗保险手册号",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit50);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit60 = new jxl.write.Label(6, 0, "四险缴费人员类别",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit60);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit70 = new jxl.write.Label(7, 0, "医疗缴费人员类别",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit70);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit80 = new jxl.write.Label(8, 0, "医疗参保人员类别",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit80);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit90 = new jxl.write.Label(9, 0, "医疗参保状态",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit90);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit100 = new jxl.write.Label(10, 0, "四险缴费状态",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit100);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit140 = new jxl.write.Label(14, 0, "缴费基数",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit140);<br />
&nbsp;&nbsp;&nbsp; // 第二行<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit101 = new jxl.write.Label(10, 1, "养老",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit101);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit111 = new jxl.write.Label(11, 1, "失业",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit111);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit121 = new jxl.write.Label(12, 1, "工伤",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit121);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit131 = new jxl.write.Label(13, 1, "生育",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit131);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit141 = new jxl.write.Label(14, 1, "养老",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit141);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit151 = new jxl.write.Label(15, 1, "失业",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit151);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit161 = new jxl.write.Label(16, 1, "工伤",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit161);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit171 = new jxl.write.Label(17, 1, "生育",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit171);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label tit181 = new jxl.write.Label(18, 1, "医疗",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; titleFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(tit181);</p>
<p>&nbsp;&nbsp;&nbsp; double yljs = 0;// 医疗基数合计<br />
&nbsp;&nbsp;&nbsp; double yxjs = 0;// 养老基数合计<br />
&nbsp;&nbsp;&nbsp; double syjs = 0;// 失业基数合计<br />
&nbsp;&nbsp;&nbsp; double sxjs = 0;// 生育基数合计<br />
&nbsp;&nbsp;&nbsp; double gsjs = 0;// 工伤基数合计<br />
&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; list.size(); i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; Grxx xx = (Grxx) list.get(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab1 = new jxl.write.Label(0, i + 2, String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .valueOf(i + 1), wcfN);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab1);// 第1列：序号<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab2 = new jxl.write.Label(1, i + 2, xx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getBzhm(), wcfN);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab2);// 第2列：公民身份证号<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab3 = new jxl.write.Label(2, i + 2, "字段不存在",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wcfN);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab3);// 第3列：电脑序号<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab4 = new jxl.write.Label(3, i + 2,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xx.getXm(), normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab4);// 第4列：四险姓名<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab5 = new jxl.write.Label(4, i + 2,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xx.getXm(), normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab5);// 第5列：医疗姓名<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab6 = new jxl.write.Label(5, i + 2, xx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getBxh(), wcfN);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab6);// 第6列：医疗保险手册号<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab7 = new jxl.write.Label(6, i + 2, xx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getBxh(), normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab7);// 第7列：四险缴费人员类别<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab8 = new jxl.write.Label(7, i + 2, "字段不存在",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab8);// 第8列：医疗缴费人员类别<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab9 = new jxl.write.Label(8, i + 2, "字段不存在",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab9);// 第9列：医疗参保人员类别<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab10 = new jxl.write.Label(9, i + 2, "字段不存在",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab10);// 第10列：医疗参保状态<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab11 = new jxl.write.Label(10, i + 2, "字段不存在",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab11);// 第11列：养老缴费状态<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab12 = new jxl.write.Label(11, i + 2, "字段不存在",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab12);// 第12列：失业缴费状态<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab13 = new jxl.write.Label(12, i + 2, "字段不存在",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab13);// 第13列：工伤缴费状态<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Label lab14 = new jxl.write.Label(13, i + 2, "字段不存在",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab14);// 第14列：生育缴费状态<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Number lab15 = new jxl.write.Number(14, i + 2, xx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getGrjs().getYxjfjs().doubleValue(), wcfN);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab15);// 第15列：养老缴费基数<br />
&nbsp;&nbsp;&nbsp;&nbsp; yxjs += xx.getGrjs().getYxjfjs().doubleValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Number lab16 = new jxl.write.Number(15, i + 2, xx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getGrjs().getSyjfjs().doubleValue(), wcfN);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab16);// 第16列：失业缴费基数<br />
&nbsp;&nbsp;&nbsp;&nbsp; syjs += xx.getGrjs().getSyjfjs().doubleValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Number lab17 = new jxl.write.Number(16, i + 2, xx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getGrjs().getGsjfjs().doubleValue(), wcfN);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab17);// 第17列：工伤缴费基数<br />
&nbsp;&nbsp;&nbsp;&nbsp; gsjs += xx.getGrjs().getGsjfjs().doubleValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Number lab18 = new jxl.write.Number(17, i + 2, xx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getGrjs().getSxjfjs().doubleValue(), wcfN);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab18);// 第18列：生育缴费基数<br />
&nbsp;&nbsp;&nbsp;&nbsp; sxjs += xx.getGrjs().getSxjfjs().doubleValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp; jxl.write.Number lab19 = new jxl.write.Number(18, i + 2, xx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getGrjs().getYljfjs().doubleValue(), wcfN);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ws.addCell(lab19);// 第19列：医疗缴费基数<br />
&nbsp;&nbsp;&nbsp;&nbsp; yljs += xx.getGrjs().getYljfjs().doubleValue();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * 最后一行合计<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; int end = list.size() + 2;<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end0 = new jxl.write.Label(0, end, "合计",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end0);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end1 = new jxl.write.Label(1, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end1);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end2 = new jxl.write.Label(2, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end2);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end3 = new jxl.write.Label(3, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end3);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end4 = new jxl.write.Label(4, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end4);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end5 = new jxl.write.Label(5, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end5);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end6 = new jxl.write.Label(6, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end6);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end7 = new jxl.write.Label(7, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end7);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end8 = new jxl.write.Label(8, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end8);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end9 = new jxl.write.Label(9, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end9);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end10 = new jxl.write.Label(10, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end10);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end11 = new jxl.write.Label(11, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end11);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end12 = new jxl.write.Label(12, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end12);<br />
&nbsp;&nbsp;&nbsp; jxl.write.Label end13 = new jxl.write.Label(13, end, "--",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normalFormat);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end13);<br />
&nbsp;&nbsp;&nbsp; // 养老<br />
&nbsp;&nbsp;&nbsp; jxl.write.Number end14 = new jxl.write.Number(14, end, yxjs, wcfN);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end14);<br />
&nbsp;&nbsp;&nbsp; // 失业<br />
&nbsp;&nbsp;&nbsp; jxl.write.Number end15 = new jxl.write.Number(15, end, syjs, wcfN);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end15);<br />
&nbsp;&nbsp;&nbsp; // 工伤<br />
&nbsp;&nbsp;&nbsp; jxl.write.Number end16 = new jxl.write.Number(16, end, gsjs, wcfN);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end16);<br />
&nbsp;&nbsp;&nbsp; // 生育<br />
&nbsp;&nbsp;&nbsp; jxl.write.Number end17 = new jxl.write.Number(17, end, sxjs, wcfN);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end17);<br />
&nbsp;&nbsp;&nbsp; // 医疗<br />
&nbsp;&nbsp;&nbsp; jxl.write.Number end18 = new jxl.write.Number(18, end, yljs, wcfN);<br />
&nbsp;&nbsp;&nbsp; ws.addCell(end18);<br />
&nbsp;&nbsp;&nbsp; // 写入Exel工作表<br />
&nbsp;&nbsp;&nbsp; wwb.write();<br />
&nbsp;&nbsp;&nbsp; // 关闭Excel工作薄对象<br />
&nbsp;&nbsp;&nbsp; wwb.close();<br />
&nbsp;&nbsp;&nbsp; os.close();<br />
&nbsp;&nbsp; } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp; }<br />
}</p>
<br />
<img src ="http://www.blogjava.net/zhaochengming/aggbug/339140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2010-11-26 16:30 <a href="http://www.blogjava.net/zhaochengming/archive/2010/11/26/339140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javamail收邮件 ,转自http://www.blogjava.net/kissyan4916/articles/279130.html</title><link>http://www.blogjava.net/zhaochengming/archive/2010/10/09/334098.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Sat, 09 Oct 2010 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2010/10/09/334098.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/334098.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2010/10/09/334098.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/334098.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/334098.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关键技术：    javax.mail.Store：该类实现特定邮件协议（如POP3）上的读、写、监视、查找等操作。通过它的getFolder方法打开一个javax.mail.Folder。    javax.mail.Folder：该类用于描述邮件的分级组织，如收件箱、草稿箱。它的open方法打开分级组织，close方法关闭分级组织，getMessages方法获得分级组织中的邮件，g...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhaochengming/archive/2010/10/09/334098.html'>阅读全文</a><img src ="http://www.blogjava.net/zhaochengming/aggbug/334098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2010-10-09 15:05 <a href="http://www.blogjava.net/zhaochengming/archive/2010/10/09/334098.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Mail   处理  java.io.IOException: Unknown encoding: GB2312 转自：http://www.javapg.com/?p=1204</title><link>http://www.blogjava.net/zhaochengming/archive/2010/10/09/334083.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Sat, 09 Oct 2010 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2010/10/09/334083.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/334083.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2010/10/09/334083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/334083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/334083.html</trackback:ping><description><![CDATA[<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; ">近日，发现gmail开放了IMAP服务，于是想着iOffice的WebMail功能是否能够对应Gmail呢？ 虽然不用想都知道WebMail方面，不可能做的比gmail更好。但是出于一种功能验证的考虑，还是进行了尝试用iOffice的WebMail去连接gmail的邮件账户。</p>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; ">这一连接，发现WebMail只支持pop3/imap/smtp的protocol，而对gmail的pop3 ssl/imap ssl/smtp ssl的安全连接都不支持，于是奋力去修改，终于今天搞定了。</p>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; ">接着为了测试邮件的多样性，从Hotmail账户当中转移了一部分邮件进入gmail的IMAP Folder，发现英国金融时报旗下的FT中文网发送的新闻邮件，居然无法在WebMail中显示，出现Exception.</p>
<blockquote style="margin-top: 10px; margin-right: 20px; margin-bottom: 10px; margin-left: 20px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 40px; background-image: url(http://www.javapg.com/wp-content/themes/pressplay/images/blockquote.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; background-repeat: no-repeat no-repeat; ">
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">java.io.IOException: Unknown encoding: GB2312<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:108)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
at com.sun.mail.handlers.text_plain.getContent(text_plain.java:90)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
at javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:775)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
at javax.activation.DataHandler.getContent(DataHandler.java:522)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1395)</p>
</blockquote>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; ">觉得很奇怪，GB2312肯定属于Java认识的encoding啊？ 为什么会出这种信息呢？ 仔细检查此邮件的源码，以及查阅资料。发现此处所说的Encoding并非是Java Encoding。 而是邮件的一种自有的编码。 该新闻邮件的编码</p>
<blockquote style="margin-top: 10px; margin-right: 20px; margin-bottom: 10px; margin-left: 20px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 40px; background-image: url(http://www.javapg.com/wp-content/themes/pressplay/images/blockquote.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; background-repeat: no-repeat no-repeat; ">
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Date: Thu, 20 Aug 2009 09:09:16 +0800<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
MIME-Version: 1.0<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
Content-Type: text/html; charset=&#8221;gb2312&#8243;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #ff0000; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Content-Transfer-Encoding: gb2312</strong></span><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
Message-ID:&nbsp;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#49;&#50;&#53;&#48;&#55;&#51;&#48;&#54;&#49;&#52;&#57;&#51;&#57;&#52;&#55;&#49;&#64;&#50;&#48;&#48;&#56;&#48;&#57;&#78;&#101;&#119;&#115;&#76;&#101;&#116;&#116;&#101;&#114;" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: underline; color: #db5216; ">1250730614939471@200809NewsLetter</a></p>
</blockquote>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; ">该邮件的发送程序把 text/html charset=gb2312的编码部分，当作Content-Transfer-Encoding的编码，而实际上JavaMail认识的Content-Transfer-Encoding包含如下几种：&#8221;base64&#8243;, &#8220;quoted-printable&#8221;, &#8220;7bit&#8221;, &#8220;8bit&#8221;, &#8220;binary&#8221;, &#8220;uuencode&#8221;。</p>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; ">原则上针对这种错误格式的邮件，可以不对应，但是考虑到未来可能还有别的问题，于是直接去修改 javax.mail.internet.MimePartDataSource.java，</p>
<blockquote style="margin-top: 10px; margin-right: 20px; margin-bottom: 10px; margin-left: 20px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 40px; background-image: url(http://www.javapg.com/wp-content/themes/pressplay/images/blockquote.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; background-repeat: no-repeat no-repeat; ">
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">public InputStream getInputStream() throws IOException {<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
InputStream is;</p>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">try {<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
if (part instanceof MimeBodyPart)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
is = ((MimeBodyPart)part).getContentStream();<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
else if (part instanceof MimeMessage)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
is = ((MimeMessage)part).getContentStream();<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
else<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
throw new MessagingException(&#8220;Unknown part&#8221;);<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
String encoding = restrictEncoding(part.getEncoding(), part);<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
if (encoding != null){<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #ff0000; ">if(encoding.equalsIgnoreCase(&#8220;GB2312&#8243;) ||<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
encoding.equalsIgnoreCase(&#8220;GBK&#8221;)){<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
encoding = &#8220;7bit&#8221;;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
}</span><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
return MimeUtility.decode(is, encoding);<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
}else{<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
return is;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
}<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
} catch (MessagingException mex) {<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
throw new IOException(mex.getMessage());<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
}<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
}</p>
</blockquote>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #343434; font-family: 'Microsoft YaHei', 'MS UI Gothic'; font-size: 12px; line-height: 19px; ">编译好以后，放回 sun-javamail-1.4.2.jar，执行一遍后，OK了。</p>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/334083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2010-10-09 13:38 <a href="http://www.blogjava.net/zhaochengming/archive/2010/10/09/334083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>非安装版TOMCAT/MYSQL/APACHE安装服务和卸载服务的方法  转自http://www.qoolee.com/2010/0416/55.html</title><link>http://www.blogjava.net/zhaochengming/archive/2010/09/19/332460.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Sun, 19 Sep 2010 11:19:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2010/09/19/332460.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/332460.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2010/09/19/332460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/332460.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/332460.html</trackback:ping><description><![CDATA[一、tomcat服务安装卸载
<div style="padding-bottom: 5px; background-color: rgb(255,255,255); margin: 0px; padding-left: 5px; padding-right: 5px; font-family: Arial, Verdana, sans-serif; font-size: 12px; padding-top: 5px">
<p>如果已经配置好CATALINA_HOME,以及path变量%CATALINA_HOME%\bin,可直接运行下列命令。<br />
C:\&gt; service.bat install &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;C:\&gt; service.bat&nbsp;&nbsp;&nbsp;remove<br />
没有配置环境变量则进入tomcat安装目录下的bin目录，加载服务service install tomcat6&nbsp; 卸载服务service remove tomcat6</p>
<p><br />
二、apache服务安装卸载<br />
把apache注册为windows服务. 运行cmd命令 注册apache为windows服务：apache安装目录\bin\httpd.exe -k install 卸载apache为windows服务：apache安装目录\bin\httpd.exe -k uninstall</p>
<p><br />
三、MYSQL服务安装卸载<br />
<br />
1.、 安装服务。&nbsp;<br />
在Windows2000下，安装完成后，并没有把MySQL安装成服务，我们必须执行下面的语句把MySQL注册为服务:mysql安装目录\bin\mysqld-nt &nbsp;&#8211;-install。&nbsp;<br />
Windows98下没有服务的概念，所以不用安装服务。 &nbsp;<br />
<br />
2、 卸载服务&nbsp;<br />
可以通过下面的命令卸载MySQL服务:mysql安装目录\bin\mysqld-nt &nbsp;&#8211;-remove。&nbsp;<br />
经过上面的安装就可以使用了，可以把我们系统空的数据库内建到mySQL数据目录即可，缺省数据库目录在installdirmysqldata。&nbsp;<br />
<br />
3.、 启动服务&nbsp;<br />
在Windows2000下，安装服务后可以启动MySQL服务:net start mysql。&nbsp;<br />
在Windows98下，可以用下面的命令启动服务:c:\mysql\bin\mysqld，服务启动后在后台运行，并没有界面。&nbsp;<br />
4.、 停止服务&nbsp;<br />
在Windows2000下，可以通过下面的命令停止MySQL服务:net stop mysql。&nbsp;<br />
在Windows98下，可以通过下面命令停止服务:C:&gt; C:\mysql\bin\mysqladmin -u root shutdown&nbsp;<br />
<br />
<br />
==========================================================================<br />
1.报错:Can't find messagefile 'F:Program Filesmysqlshareenglisherrmsg.sys'&nbsp;<br />
原因:原来的4.1版本安装在F:Program Filesmysql目录;而现在的5.0版本在F:database目录&nbsp;<br />
解决方法:在c:winnt目录下找到my.ini文件，修改或删除之&nbsp;<br />
<br />
2.报错:ready for connections.&nbsp;<br />
Version: '5.0.21-community-nt' socket: '' port: 3306 MySQL Community Edition (GPL)&nbsp;<br />
原因:socket为空，没有配置mysql;或者端口已经占用&nbsp;<br />
解决方法: mysqlbin目录下运行MySQLInstanceConfig.exe配置mysql实例&nbsp;<br />
<br />
3.如何更改Win2000服务MySQL属性中的可执行文件路径!&nbsp;<br />
开始时在D盘装了MySQL，后来卸载后，格式化D盘，再次安装，路径与原路径不同，不能通过&#8220;net start mysql&#8221;启动。查看win2000服务中MYsql的属性，可执行文件路径在位于D盘。现在怎么样更改，或启动Mysql?&nbsp;<br />
注册表里HKEY_LOCAL_MECHINE---SYSTEM ---CurrentControlSet里&nbsp;<br />
<br />
<br />
启动MYSQL服务时出错的几种解决方法&nbsp;<br />
1.安装MYSQL后更改了ROOT的密码后用net startmysql启动时我就遇到了这样的问题.使用以下命令后c:mysqlbinmysqladmin-u root -p shutdown再net start mysql就没有这个错误提示了!&nbsp;<br />
<br />
2.MySQL的1067错误&nbsp;<br />
Q:我的Mysql碰到了 1067 错误&nbsp;<br />
错误信息为:&nbsp;<br />
A:在我的机上的解决办法是:&nbsp;<br />
修改%windir%my.ini，增加&nbsp;<br />
3.已经弄好了!!!&nbsp;<br />
好像是这样&#8230;&#8230;&nbsp;<br />
mysql_install_db脚本只是在初次安装时才需要运行一次,之后就不用再运行了,不知道是不是这么回事.我把mysql.server拷贝至/etc/rc.d/init.d/中,运行chkconfig mysql.server,至此mysql服务器每次开机自动启动,只要设置好PATH,在命令行上输入mysql就一切搞定!&nbsp;<br />
</p>
</div>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/332460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2010-09-19 19:19 <a href="http://www.blogjava.net/zhaochengming/archive/2010/09/19/332460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在windows下如何将Tomcat设置为自动启动的服务</title><link>http://www.blogjava.net/zhaochengming/archive/2010/09/07/331352.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Tue, 07 Sep 2010 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2010/09/07/331352.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/331352.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2010/09/07/331352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/331352.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/331352.html</trackback:ping><description><![CDATA[<p style="color: #222222; font-family: Verdana, Arial, 宋体; font-size: 12px; line-height: 21px; ">&nbsp;承元OA基于J2ee技术开发，可以运行在Tomcat、weblogic、websphere等J2ee应用服务器上，对于一般访问量不是很高的客户我们推荐使用Tomcat(开源免费)，一般情况下Tomcat服务需要手动运行批命令启动服务。在windows操作系统下如果需要将Tomcat变成自动启动的服务，只需按以下步骤操作即可：<br />
1、在环境变量中设置JAVA_HOME<br />
(假设我们缺省的JDK目录为d:\j2sdk1.4.2_04)<br />
&nbsp;&nbsp;&nbsp; A、进入windows桌面，右键选择&#8220;我的电脑&#8221;--&gt;&#8220;属性&#8221;<br />
&nbsp;&nbsp;&nbsp; B、选择&#8220;高级&#8221;页签，点开&#8220;环境变量&#8221;<br />
&nbsp;&nbsp;&nbsp; C、在&#8220;系统变量&#8221;下点击新建弹出&#8220;新建系统变量&#8221;，变量名输入&#8220;JAVA_HOME&#8221;，变量值输入&#8220;d:\j2sdk1.4.2_04&#8221;后点击确定。<br />
2、将Tomcat设置成服务<br />
(假设我们缺省的Tomcat目录为d:\Tomcat_oa)<br />
&nbsp;&nbsp;&nbsp; A、点击开始--&gt;运行，输入cmd进入dos控制台<br />
&nbsp;&nbsp;&nbsp; B、执行以下dos命令(输入命令后按回车键执行)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd Tomcat_oa\bin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; service install 服务名(可选)<br />
&nbsp;&nbsp;&nbsp; 此时Tomcat服务已经成功安装。<br />
3、进入系统服务将服务启动，并将服务设置成自动启动<br />
4、服务移除<br />
基本操作同2，最后执行service&nbsp;remove 服务名(可选)<br />
</p>
<p style="color: #222222; font-family: Verdana, Arial, 宋体; font-size: 12px; line-height: 21px; "><strong>基于服务模式的参数调整<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基于服务模式修改tomcat\bin目录下的catalina.bat文件，调整参数（如：内存）是不起作用的，我们可以采用以下方式(以tomcat5为例)：<br />
1、运行cmd，从控制台进入tomcat的bin目录<br />
2、运行tomcat5w //MS//<u>服务名</u>，windows的右下角出现托盘图标<br />
&nbsp;&nbsp;&nbsp;（服务名是具体的tomcat服务）<br />
3、进入调整参数，保存<br />
4、重新启动tomcat服务</p>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/331352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2010-09-07 22:20 <a href="http://www.blogjava.net/zhaochengming/archive/2010/09/07/331352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Cannot forward after response has been committed </title><link>http://www.blogjava.net/zhaochengming/archive/2010/08/12/328722.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Thu, 12 Aug 2010 15:51:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2010/08/12/328722.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/328722.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2010/08/12/328722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/328722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/328722.html</trackback:ping><description><![CDATA[<p>转自：http://blog.csdn.net/prufeng/archive/2009/05/24/4213218.aspx<br />
Cannot forward after response has been committed </p>
<p>试图在jsp页面里包含Action：</p>
<p>&lt;c:import url="/friendlink.do?method=list"&gt;&lt;/c:import&gt; <br />
&lt;jsp:include flush="true" page="friendlink.do"&gt;&lt;/jsp:include&gt;</p>
<p>结果出现以上错误。</p>
<p>想想其实也很容易理解，Action的过程本身就是请求转发，而此时处理未完成页面却已输出。</p>
<p>解决办法一：使用bean:include </p>
<p>&lt;bean:include id="friendlink" page="/friendlink.do?method=list"/&gt;</p>
<p>&lt;bean:write name="friendlink" filter="false"/&gt;</p>
<p>可以这样理解，就是Action处理的结果被保存到bean里了，这里只是输出bean里包含的内容，没有涉及页面转发和定向问题，所以不会有异常。</p>
<p>解决办法二：使用tiles</p>
<p>tiles里可以直接包含Action，配置方法和包含jsp时一样。</p>
<p>解决办法三：使用Ajax</p>
<p>Ajax就是被设计来从后台异步发送请求和接收处理结果，所以必定能满足这种需求。</p>
<p>解决办法四：使用TAG</p>
<p>标签的用法就不用说了，相当于不用Action而在页面嵌入Java代码。</p>
<p><br />
本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/prufeng/archive/2009/05/24/4213218.aspx</p>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/328722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2010-08-12 23:51 <a href="http://www.blogjava.net/zhaochengming/archive/2010/08/12/328722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>byte inputstream 转换</title><link>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297991.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 12 Oct 2009 14:25:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297991.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/297991.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297991.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/297991.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/297991.html</trackback:ping><description><![CDATA[<li><span><span class="keyword">转自http://mingkg21.javaeye.com/blog/431067</span></span></li>
<li><span></span></li>
<li><span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">byte</span><span>[]&nbsp;InputStreamToByte(InputStream&nbsp;is)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;IOException&nbsp;{ &nbsp;&nbsp;</span></span></li>
<li><span>&nbsp;&nbsp;&nbsp;ByteArrayOutputStream&nbsp;bytestream&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;ByteArrayOutputStream(); &nbsp;&nbsp;</span></span></li>
<li><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;ch; &nbsp;&nbsp;</span></span></li>
<li><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>&nbsp;((ch&nbsp;=&nbsp;is.read())&nbsp;!=&nbsp;-</span><span class="number">1</span><span>)&nbsp;{ &nbsp;&nbsp;</span></span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;bytestream.write(ch); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">byte</span><span>&nbsp;imgdata[]&nbsp;=&nbsp;bytestream.toByteArray(); &nbsp;&nbsp;</span></span></li>
<li><span>&nbsp;&nbsp;&nbsp;bytestream.close(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;imgdata; &nbsp;&nbsp;</span></span></li>
<li><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<p>&nbsp;</p>
<ol class="dp-j">
    <li><span><span class="keyword">byte</span><span>[]&nbsp;data; &nbsp;&nbsp;</span></span></li>
    <li><span>InputStream&nbsp;is&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;ByteArrayInputStream(data);&nbsp;&nbsp;</span></span></li>
</ol>
<p><br />
<br />
<br />
&nbsp;</p>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/297991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2009-10-12 22:25 <a href="http://www.blogjava.net/zhaochengming/archive/2009/10/12/297991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用 JDOM 简化 XML 编程</title><link>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297986.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 12 Oct 2009 14:09:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297986.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/297986.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/297986.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/297986.html</trackback:ping><description><![CDATA[转自http://www.ibm.com/developerworks/cn/java/j-jdom/index.html<br />
<blockquote>JDOM 是一种使用 XML 的独特 Java 工具包，用于快速开发 XML 应用程序。它的设计包含 Java 语言的语法乃至语义。但是它是否比现有的 -- 更标准的 -- XML APL 好呢？当我们看过一些示例并说明这个流行的开放源代码项目的设计目标后，您自己来判断吧。最近这个开放源代码项目已被正式接受成为 Java 规范要求。</blockquote><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES-->
<p>作为开发人员，您可能听说过 80-20 规则，在其它领域被称为 Pareto 法则：一种过程或方法能适应所有可能情况的 80%，另外的 20% 则需要根据具体情况来处理。软件开发的必然结果是：对于开发人员而言，有了给定的技术后就能非常容易地完成可能要做的工作的 80%。</p>
<p>当然，软件产品和标准并不总是根据 80-20 规则发展的。特别的，Java XML 的缺陷就是这条规则的一个例外。Java 的编程世界拥有很多的 API -- 一些是自己开发的，一些是由几个大公司开发并被制定为标准的 -- 他们提供了解决特殊 XML 任务的成熟解决方案。作为 XML 普遍性的证明，每个新任务都存在着一种新技术，但如何将它们结合在一起，又如何寻找一种合适的工具去完成必须重复做的任务中的 80% -- 利用 Java 语言的直观映象的基本 XML 树操作？JDOM 正好是用来解决上述问题的一个 XML API。</p>
<p><a name="1"><span class="atitle">标记：Java 和 XML</span></a></p>
<p>在许多方面，Java 语言已变成供 XML 选择的一种编程语言。由于 Apache 软件基金会和 IBM alphaWorks 所做的开创性工作，现在已有完整的工具链用于创建，操作，传送文档和对 XML 文档进行语法分析。</p>
<p>但是，虽然许多 Java 开发人员每天都在使用 XML，Sun 却在将 XML 整合进 Java 平台方面落后了。因为在 XML 成为从商家对商家集成到 Web 站点内容流水化等方面的关键技术之前，Java 2 平台就已经非常流行了。Sun 已经使用 JSR 过程使之成为现存 XML API 的鼻祖，这一点已被广泛接受。目前最显著的是加入了 JAXP （用于 XML 语法分析的 Java API），其中包含了三个软件包：</p>
<ul>
    <li><code>org.w3c.dom</code> ，W3C 推荐的用于 XML 标准规划文档对象模型的 Java 工具
    <li><code>org.xml.sax</code> ，用于对 XML 进行语法分析的事件驱动的简单 API
    <li><code>javax.xml.parsers</code> ，工厂化工具，允许应用程序开发人员获得并配置特殊的语法分析器工具 </li>
</ul>
<p>尽管对于 Java 开发人员而言，有了这些软件包是件好事，但它仅仅代表获得了现有 API 标准的正式许可而已，并没有在提供一流的 Java-XML 互操作性方面取得了巨大飞跃。核心 Java 平台所缺乏的是将 XML 文档作为 Java 对象操作的直观接口。</p>
<p>进入 JDOM。JDOM 是两位著名的 Java 开发人员兼作者，Brett Mclaughlin 和 Jason Hunter 的创作成果， 2000 年初在类似于 Apache 协议的许可下，JDOM 作为一个开放源代码项目正式开始研发，JDOM 作为一个开放源代码项目正式开始了。它已成长为包含来自广泛的 Java 开发人员的投稿、集中反馈及错误修复的系统，并致力于建立一个完整的基于 Java 平台的解决方案，通过 Java 代码来访问、操作并输出 XML 数据。</p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/java/j-jdom/index.html#main" cmimpressionsent="1"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="2"><span class="atitle">这是 JDOM 适合的 API、哑元</span></a></p>
<p>JDOM 能够替换 <code>org.w3c.dom</code> 软件包来有计划地操作 XML 文档。它并不是一个简单的替代品，实际上 JDOM 和 DOM 能够愉快地并存。另外，尽管它提供的类的封装从配置和运行分析器执行中分担了大量工作，但它不负责根据文本输入来对 XML 进行语法分析。JDOM 建立在现有的 API 的能力之上，正如项目网页所表述的&#8220;一个更好的捕鼠器&#8221;。 </p>
<p>要理解需要备用 API 的原因，就要考虑 W3C DOM 设计的局限性：</p>
<ul>
    <li><strong>语言独立。</strong>DOM 并不是用人们心目中的 Java 语言设计的。虽然这种方法保留了在不同语言中非常相似的 API，它也使那些习惯 Java 语言的程序员感到更麻烦。例如：Java 语言内建了一种 <code>String</code> 类，而 DOM 则规范定义了自己的 <code>Text</code> 类。 <br />
    <li><strong>严格的层次结构。</strong>DOM API 直接沿袭了 XML 规范。在 XML 中，每件东西都是一个结点，因此您能在 DOM 中找到一个几乎每件东西都可以扩展的基于 <code>Node</code> 的接口和返回 <code>Node</code> 的一系列方法。就多态性的观点来讲，它是优秀的，但鉴于如上解释，它在 Java 语言中的应用是困难而且不便的，其中从 <code>Node</code> 向叶类型作显式下拉会导致代码的冗长和难以理解。 <br />
    <li><strong>接口驱动。</strong>公共 DOM API 仅由接口组成（ <code>Exception</code> 类是一个例外，但恰恰足够了）。w3c 对提供实现并不感兴趣，它只对定义接口（比较有意义）感兴趣。但它也意味着作为 Java 程序员使用 API 在创建 XML 对象时增加了分散程度，因为 w3c 标准大量使用工厂化的类和类似的灵活的但不直接的模式。在某些应用中，XML 文档是仅由语法分析器建立的，而从不会由应用程序级代码建立，这是不相关的。但是，随着 XML 更广泛的使用，并不是所有问题都继续需要由语法分析器来驱动。应用程序的开发人员需要一个更方便的方法有计划地构造 XML 对象。 </li>
</ul>
<p>对于程序员，这些约束意味着庞大（在内存占用和接口大小方面）的和难掌握的 API，学习和使用都很难。相反，JDOM 是作为一种轻量级 API 被制定的，最主要的是它是以 Java 为中心的。它在遵循 DOM 主要规则的基础上除去了上述缺点：</p>
<ul>
    <li><strong>JDOM 是 Java 平台专用的。</strong>只要有可能，API 都使用 Java 语言的内建 <code>String</code> 支持，因此文本值也适用于 <code>String</code> 。它还可利用 Java 2 平台的类集，如 <code>List</code> 和 <code>Iterator</code> ，给程序员提供了一个丰富的并且和 Java 语言类似的环境。 <br />
    <li><strong>没有层次性。</strong>在 JDOM 中，XML 元素就是 <code>Element</code> 的实例，XML 属性就是 <code>Attribute</code> 的实例，XML 文档本身就是 <code>Document</code> 的实例。由于在 XML 中所有这些都代表了不同的概念，因此它们总是作为自己的类型被引用，而不是作为一个含糊的&#8220;结点&#8221;。 <br />
    <li><strong>类驱动。</strong>因为 JDOM 对象就是像 <code>Document</code> 、 <code>Element</code> 和 <code>Attribute</code> 这些类的直接实例，因此创建一个新 JDOM 对象就如在 Java 语言中使用 <code>new</code> 操作符一样容易。它还意味着不需要进行工厂化接口配置 -- JDOM 的使用是直截了当的。 </li>
</ul>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/java/j-jdom/index.html#main" cmimpressionsent="1"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="3"><span class="atitle">看，没有 <code>Node</code> ：建立和操作 JDOM 文档 </span></a></p>
<p>JDOM 使用标准的 Java 编码模式。只要有可能，它使用 Java <code>new</code> 操作符而不用复杂的工厂化模式，使对象操作即便对于初学用户也很方便。例如，让我们看一下如何随便使用 JDOM 建立一个简单的 XML 文档。我们将要建立的结构如清单 1 所示。（从 <a href="http://www.ibm.com/developerworks/cn/java/j-jdom/index.html#resources" cmimpressionsent="1">参考资料</a>上可下载关于本文的完整代码） </p>
<br />
<a name="code1"><strong>清单 1. 建立 XML 文档样本</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
            &lt;car vin="123fhg5869705iop90"&gt;
            &lt;!--Description of a car--&gt;
            &lt;make&gt;Toyota&lt;/make&gt;
            &lt;model&gt;Celica&lt;/model&gt;
            &lt;year&gt;1997&lt;/year&gt;
            &lt;color&gt;green&lt;/color&gt;
            &lt;license state="CA"&gt;1ABC234&lt;/license&gt;
            &lt;/car&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>注意：我们将建立 <a href="http://www.ibm.com/developerworks/cn/java/j-jdom/code.html" cmimpressionsent="1">示例文档</a>，在下面的清单 2 到清单 7 中有详细描述。 </p>
<p>开始，让我们先创建一个根元素，并将其添加到文档中：</p>
<br />
<a name="code2"><strong>清单 2. 创建一个 <code>Document</code> </strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">Element carElement = new Element("car");
            Document myDocument = new Document(carElement);
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这一步创建一个新 <code>org.jdom.Element</code> ，并将其作为 <code>org.jdom.Document</code> <code>myDocument</code> 的根元素。（如果您使用 <a href="http://www.ibm.com/developerworks/cn/java/j-jdom/index.html#resources" cmimpressionsent="1">参考资料</a>中提供的样本代码，请务必导入 <code>org.jdom.*</code> 。）因为一个 XML 文档必须一直有一个唯一的根元素，所以 <code>Document</code> 将 <code>Element</code> 放在它的构造器中。 </p>
<p>下一步，添加 <code>vin</code> 属性： </p>
<br />
<a name="code3"><strong>清单 3. 添加一个 <code>Attribute</code> </strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">carElement.addAttribute(new Attribute("vin", "123fhg5869705iop90"));
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>添加元素也是很简单的。这里我们添加 <code>make</code> 元素： </p>
<br />
<a name="code4"><strong>清单 4. 元素和子元素</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">Element make = new Element("make");
            make.addContent("Toyota");
            carElement.addContent(make);
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>由于 <code>Element</code> 的 <code>addContent</code> 方法返回 <code>Element</code> ，我们也可以这样写： </p>
<br />
<a name="code5"><strong>清单 5. 用简洁形式添加元素</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">carElement.addContent(new Element("make").addContent("Toyota"));
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这两个语句完成了相同的工作。有些人认为第一个示例可读性更好，但是如果您一次建立许多元素，您会觉得第二个示例可读性更好。要完成构建文档：</p>
<br />
<a name="code6"><strong>清单 6. 添加其余的元素</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">carElement.addContent(new Element("model").addContent("Celica"));
            carElement.addContent(new Element("year").addContent("1997"));
            carElement.addContent(new Element("color").addContent("green"));
            carElement.addContent(new Element("license")
            .addContent("1ABC234").addAttribute("state", "CA"));
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>您会注意到对于 <code>license</code> 元素，我们不但添加了元素的内容，还为其添加了一个属性，表明许可已被发出了这个状态。这是因为 <code>Element</code> 的 <code>addContent</code> 方法总是返回 <code>Element</code> 本身，而不是一个无效的声明。 </p>
<p>用同样的方法添加注释部分或其它标准 XML 类型：</p>
<br />
<a name="code7"><strong>清单 7. 添加一条注释</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">carElement.addContent(new Comment("Description of a car"));
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>操作文档也是用类似方式。例如，要引用 <code>year</code> 元素，我们使用 <code>Element</code> 的 <code>getChild</code> 方法： </p>
<br />
<a name="code8"><strong>清单 8. 访问子元素</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">Element yearElement = carElement.getChild("year");
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>该语句实际上将返回第一个元素名为 <code>year</code> 的子 <code>Element</code> 。 如果没有 <code>year</code> 元素，则调用返回一个空值。注意，我们不必回溯来自任何类似于 DOM <code>Node</code> 接口的返回值 -- <code>Element</code> 的子元素就是 <code>Element</code> 。用类似的方式，我们可把 <code>year</code> 元素从文档中除去： </p>
<br />
<a name="code9"><strong>清单 9. 除去子元素</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">boolean removed = carElement.removeChild("year");
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这次调用将只除去 <code>year</code> 元素；文档的其余部分保持不变。 </p>
<p>到目前为止，我们已经涵盖了文档的生成和操作。要将完成的文档输出至控制台，可使用 JDOM 的 <code>XMLOutputter</code> 类： </p>
<br />
<a name="code10"><strong>清单 10. 将 JDOM 转化为 XML 文本</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">try {
            XMLOutputter outputter = new XMLOutputter("  ", true);
            outputter.output(myDocument, System.out);
            } catch (java.io.IOException e) {
            e.printStackTrace();
            }
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p><code>XMLOutputter</code> 有几个格式选项。这里我们已指定希望子元素从父元素缩进两个空格，并且希望元素间有空行。 <code>XMLOutputter</code> 可输出到 <code>Writer</code> 或 <code>OutputStream</code> 。为输出到文件，我们可以简单地将输出行简化为： </p>
<br />
<a name="code11"><strong>清单 11. 使用 <code>FileWriter</code> 输出 XML </strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">FileWriter writer = new FileWriter("/some/directory/myFile.xml");
            outputter.output(myDocument, writer);
            writer.close();
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/java/j-jdom/index.html#main" cmimpressionsent="1"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="4"><span class="atitle">与其它方法良好协作：和现有的 XML 工具进行互操作</span></a></p>
<p>JDOM 的一个有趣特征是和其它 API 有互操作性。使用 JDOM，不仅能把文档输出到 <code>Stream</code> 或 <code>Reader</code> ，还可将文档作为 SAX <code>Event Stream</code> 或作为 DOM <code>Document</code> 。这种灵活性允许 JDOM 能在多种环境下使用或被添加到已经在使用另一种方法处理 XML 的系统中去。正如我们在后面一个示例中所看到的，它还允许 JDOM 使用其它的还不能识别 JDOM 的数据结构的 XML 工具。 </p>
<p>JDOM 的另一个用处是它能够读取并操作现有的 XML 数据。使用 <code>org.jdom.input</code> 中的一个类可以阅读结构很规范的 XML 文件。在这个示例中我们使用 <code>SAXBuilder</code> ： </p>
<br />
<a name="code12"><strong>清单 12. 使用 <code>SAXBuilder</code> 对 XML 文件进行语法分析 </strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">try {
            SAXBuilder builder = new SAXBuilder();
            Document anotherDocument =
            builder.build(new File("/some/directory/sample.xml"));
            } catch(JDOMException e) {
            e.printStackTrace();
            } catch(NullPointerException e) {
            e.printStackTrace();
            }
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>您可以用清单 2 到清单 7 中显示的方法来操作通过这个过程建立的文档。</p>
<p>JDOM 的另一个实用应用程序将其与 Apache 的 Xalan 产品结合在一起（请参阅 <a href="http://www.ibm.com/developerworks/cn/java/j-jdom/index.html#resources" cmimpressionsent="1">参考资料</a>）。使用上面的汽车示例，我们将为在线汽车经销商建立一个 Web 页面，显示特定汽车的详细信息。首先，假设我们上面建立的文档显示我们准备呈现给用户的汽车的信息。下一步，我们将把这个 JDOM <code>Document</code> 与一个 XSL 样式表结合起来并把 HTML 格式的结果输出到 servlet 的 <code>OutputStream</code> 上以便在用户的浏览器中显示。 </p>
<p>在本例中，我们准备使用的 XSL 样式表被称为 <code>car.xsl</code> ： </p>
<br />
<a name="code13"><strong>清单 13. 用于将汽车记录转换为 HTML 的 XSL 文档</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
            &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
            &lt;xsl:template match="/car"&gt;
            &lt;html&gt;
            &lt;head&gt;
            &lt;title&gt;&lt;xsl:value-of select="make"/&gt; &lt;xsl:value-of select="model"/&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;h1&gt;&lt;xsl:value-of select="make"/&gt;&lt;/h1&gt;&lt;br /&gt;
            &lt;h2&gt;&lt;xsl:value-of select="model"/&gt;&lt;/h2&gt;&lt;br /&gt;
            &lt;table border="0"&gt;
            &lt;tr&gt;&lt;td&gt;VIN:&lt;/td&gt;&lt;td&gt;&lt;xsl:value-of select="@vin"/&gt;&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Year:&lt;/td&gt;&lt;td&gt;&lt;xsl:value-of select="year"/&gt;&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Color:&lt;/td&gt;&lt;td&gt;&lt;xsl:value-of select="color"/&gt;&lt;/td&gt;&lt;/tr&gt;
            &lt;/table&gt;
            &lt;/body&gt;
            &lt;/html&gt;
            &lt;/xsl:template&gt;
            &lt;/xsl:stylesheet&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>现在我们将把 <code>org.jdom.Document</code> 转换为 DOM <code>Document</code> ，并将其与显示我们的 XSL 和 <code>OutputStream</code> 的文件一起提供给 Xalan， <code>OutputStream</code> 是我们从我们假定的使用 servlet（如清单 14 所示）的应用服务器上获取的。 </p>
<br />
<a name="code14"><strong>清单 14. 使用 JDOM 和 Xalan 创建 HTML 文档</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">TransformerFactory tFactory = TransformerFactory.newInstance();
            // Make the input sources for the XML and XSLT documents
            org.jdom.output.DOMOutputter outputter = new org.jdom.output.DOMOutputter();
            org.w3c.dom.Document domDocument = outputter.output(myDocument);
            javax.xml.transform.Source xmlSource =
            new javax.xml.transform.dom.DOMSource(domDocument);
            StreamSource xsltSource =
            new StreamSource(new FileInputStream("/some/directory/car.xsl"));
            // Make the output result for the finished document using
            // the HTTPResponse OutputStream
            StreamResult xmlResult = new StreamResult(response.getOutputStream());
            // Get a XSLT transformer
            Transformer transformer = tFactory.newTransformer(xsltSource);
            // Do the transform
            transformer.transform(xmlSource, xmlResult);
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>在这个示例中，输出是通过 Java servlet 的 <code>HTTPResponse</code> <code>OutputStream</code> 流出。然而，输出流可以象早期的使用 <code>XMLOutputter</code> 的实例一样简单的通过文件流输出。我们使用 <code>DOMOutputter</code> 为 Xalan 生成 XML 源代码。但是我们可以生成相同的输出，方法是使用 <code>XMLOutputter</code> 将我们的 XML 文档作为 <code>String</code> 输出并使其进入 <code>StreamSource</code> 。说到灵活性：JDOM 可将它的结构作为 <code>String</code> 、SAX <code>Event Stream</code> 或 DOM <code>Document</code> 输出。这允许 JDOM 与能把任何这些模型作为输入的工具一起工作。（关于附加功能，请访问 JDOM Web 站点的 <code>contrib</code> 包，在那里您将发现一个基于 JDOM 工具的宝库，可提供基于 JDBC ResultSet 的构建器、XPATH 实现方法和其它更多工具。） </p>
<p>在短短几行代码中，JDOM 启用了许多功能，我们已经在 XML 中分析过并有计划地创建了 XML 文档，操作了那些文档，并使用它们产生 XML 驱动的 Web 页面。</p>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/297986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2009-10-12 22:09 <a href="http://www.blogjava.net/zhaochengming/archive/2009/10/12/297986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDom使用详解</title><link>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297985.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 12 Oct 2009 14:07:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297985.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/297985.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297985.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/297985.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/297985.html</trackback:ping><description><![CDATA[转自http://hi.baidu.com/secbug/blog/item/9f8bdc515b7de7561038c20b.html<br />
<font face="宋体" size="2">JDom是不错的API，算得上简单高效，最重要是已经成为jcp的一部分，这个咱得弄弄。不过www.jdom.org上写文档的人实在太懒，文档出奇的少，流传得最广的恐怕是IBM上面的一篇《JDom让java XML变得容易》，不过这篇文章只涉及基本的读写操作，远不能胜任实际工作。花了两天时间，把JDom的基本操作整理出来了，涵盖了大部分的操作：元素、属性、命名空间、PI、DTD、Schema，应付一般的应用没什么问题。反正我没有在网上见到更加详尽的版本，你见过的话，请留下连接。暂时来不及编写详细的说明，先帖几段程序，对有经验的Java开发者来说，已经足够了。程序都已经经过了实际的测试，我使用的JDom是0.9版。<br />
<br />
1、创建XML文档：<br />
<br />
<br />
package org.bromon.jdom.example; <br />
import java.io.*; <br />
import org.jdom.*; <br />
import org.jdom.input.*; <br />
import org.jdom.output.*; <br />
<br />
public class CreateXML <br />
{ <br />
public void Create() <br />
{ <br />
try <br />
{ <br />
Document doc = new Document(); <br />
ProcessingInstruction pi=new ProcessingInstruction("xml-stylesheet","type="textxsl" href="test.xsl""); <br />
doc.addContent(pi); <br />
<br />
Namespace ns = Namespace.getNamespace("http://www.bromon.org" ); <br />
Namespace ns2 = Namespace.getNamespace("other", "http://www.w3c.org" ); <br />
<br />
Element root = new Element("根元素", ns); <br />
root.addNamespaceDeclaration(ns2); <br />
doc.setRootElement(root); <br />
Element el1 = new Element("元素一"); <br />
el1.setAttribute("属性", "属性一"); <br />
<br />
Text text1=new Text("元素值"); <br />
Element em = new Element("元素二").addContent("第二个元素"); <br />
<br />
el1.addContent(text1); <br />
el1.addContent(em); <br />
<br />
Element el2 = new Element("元素三").addContent("第三个元素"); <br />
<br />
root.addContent(el1); <br />
root.addContent(el2); <br />
<br />
//缩进四个空格,自动换行,gb2312编码 <br />
XMLOutputter outputter = new XMLOutputter(" ", true,"GB2312"); <br />
outputter.output(doc, new FileWriter("test.xml")); <br />
}catch(Exception e) <br />
{ <br />
System.out.println(e); <br />
} <br />
} <br />
<br />
public static void main(String args[]) <br />
{ <br />
new CreateXML().Create(); <br />
} <br />
<br />
} <br />
<br />
2、DTD验证的：<br />
<br />
<br />
package org.bromon.jdom.example; <br />
import java.io.*; <br />
import org.jdom.*; <br />
import org.jdom.input.*; <br />
import org.jdom.output.*; <br />
<br />
public class XMLWithDTD <br />
{ <br />
public void validate() <br />
{ <br />
try <br />
{ <br />
SAXBuilder builder = new SAXBuilder(true); <br />
builder.setFeature("http://xml.org/sax/features/validation";,true); <br />
Document doc = builder.build(new FileReader("author.xml")); <br />
<br />
System.out.println("搞掂"); <br />
XMLOutputter outputter = new XMLOutputter(); <br />
outputter.output(doc, System.out); <br />
}catch(Exception e) <br />
{ <br />
System.out.println(e); <br />
} <br />
<br />
} <br />
public static void main(String args[]) <br />
{ <br />
new XMLWithDTD().validate(); <br />
} <br />
<br />
} <br />
<br />
需要说明的是，这个程序没有指明使用哪个DTD文件。DTD文件的位置是在XML中指定的，而且DTD不支持命名空间，一个XML只能引用一个DTD，所以程序直接读取XML中指定的DTD，程序本身不用指定。不过这样一来，好象就只能使用外部式的DTD引用方式了？高人指点。<br />
<br />
3、XML Schema验证的：<br />
<br />
<br />
package org.bromon.jdom.example; <br />
import java.io.*; <br />
import org.jdom.*; <br />
import org.jdom.input.*; <br />
import org.jdom.output.*; <br />
<br />
public class XMLWithSchema <br />
{ <br />
String xml="test.xml"; <br />
String schema="test-schema.xml"; <br />
public void validate() <br />
{ <br />
try <br />
{ <br />
SAXBuilder builder = new SAXBuilder(true); <br />
//指定约束方式为XML schema <br />
builder.setFeature("http://apache.org/xml/features/validation/schema";, true); <br />
//导入schema文件 <br />
builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";,schema); <br />
Document doc = builder.build(new FileReader(xml)); <br />
<br />
System.out.println("搞掂"); <br />
XMLOutputter outputter = new XMLOutputter(); <br />
outputter.output(doc, System.out); <br />
}catch(Exception e) <br />
{ <br />
System.out.println("验证失败:"+e); <br />
} <br />
<br />
} <br />
<br />
}</font>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/297985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2009-10-12 22:07 <a href="http://www.blogjava.net/zhaochengming/archive/2009/10/12/297985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM使用详解及实例</title><link>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297984.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 12 Oct 2009 14:06:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297984.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/297984.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2009/10/12/297984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/297984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/297984.html</trackback:ping><description><![CDATA[<p>转自http://hi.baidu.com/tuqiangkk/blog/item/779b181271f4e255f919b885.html<br />
</p>
<p>一、JDOM 简介</p>
<p>JDOM是一个开源项目，它基于树型结构，利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。</p>
<p>JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性（方法重载、集合概念以及映射），把SAX和DOM的功能有效地结合起来。</p>
<p>在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。</p>
<p>JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来，以弥补DOM及SAX在实际应用当中的不足之处。</p>
<p>这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能，而对于DOM来说，JAVA程序员在使用时来用起来总觉得不太方便。</p>
<p>DOM的缺点主要是来自于由于Dom是一个接口定义语言（IDL）,它的任务是在不同语言实现中的一个最低的通用标准，并不是为JAVA特别设计的。JDOM的最新版本为JDOM Beta 9。最近JDOM被收录到JSR-102内，这标志着JDOM成为了JAVA平台组成的一部分。</p>
<p>二、JDOM 包概览</p>
<p>JDOM是由以下几个包组成的<br />
org.jdom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了所有的xml文档要素的java类</p>
<p>&nbsp;</p>
<p>org.jdom.adapters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了与dom适配的java类</p>
<p>&nbsp;</p>
<p>org.jdom.filter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了xml文档的过滤器类</p>
<p>&nbsp;</p>
<p>org.jdom.input&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了读取xml文档的类</p>
<p>&nbsp;</p>
<p>org.jdom.output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了写入xml文档的类</p>
<p>&nbsp;</p>
<p>org.jdom.transform&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了将jdom xml文档接口转换为其他xml文档接口</p>
<p>&nbsp;</p>
<p>org.jdom.xpath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了对xml文档xpath操作的类三、JDOM 类说明</p>
<p>1、org.JDOM这个包里的类是你J解析xml文件后所要用到的所有数据类型。</p>
<p>Attribute</p>
<p>CDATA</p>
<p>Coment</p>
<p>DocType</p>
<p>Document</p>
<p>Element</p>
<p>EntityRef</p>
<p>Namespace</p>
<p>ProscessingInstruction</p>
<p>Text</p>
<p>2、org.JDOM.transform在涉及xslt格式转换时应使用下面的2个类</p>
<p>JDOMSource</p>
<p>JDOMResult</p>
<p>org.JDOM.input</p>
<p>3、输入类，一般用于文档的创建工作</p>
<p>SAXBuilder</p>
<p>DOMBuilder</p>
<p>ResultSetBuilder</p>
<p>org.JDOM.output</p>
<p>4、输出类，用于文档转换输出</p>
<p>XMLOutputter</p>
<p>SAXOutputter</p>
<p>DomOutputter</p>
<p>JTreeOutputter</p>
<p>使用前注意事项：</p>
<p>1.JDOM对于JAXP 以及 TRax 的支持</p>
<p>JDOM 支持JAXP1.1：你可以在程序中使用任何的parser工具类,默认情况下是JAXP的parser。</p>
<p>制定特别的parser可用如下形式</p>
<p>SAXBuilder parser</p>
<p>= new SAXBuilder("org.apache.crimson.parser.XMLReaderImpl");</p>
<p>Document doc = parser.build("http://www.cafeconleche.org/");</p>
<p>// work with the document...</p>
<p>JDOM也支持TRaX：XSLT可通过JDOMSource以及JDOMResult类来转换（参见以后章节）</p>
<p>2.注意在JDOM里文档（Document）类由org.JDOM.Document 来表示。这要与org.w3c.dom中的Document区别开，这2种格式如何转换在后面会说明。</p>
<p>以下如无特指均指JDOM里的Document。</p>
<p>四、JDOM主要使用方法</p>
<p>1.Ducument类</p>
<p>(1)Document的操作方法：</p>
<p>Element root = new Element("GREETING");</p>
<p>Document doc = new Document(root);</p>
<p>root.setText("Hello JDOM!");</p>
<p>或者简单的使用Document doc = new Document(new Element("GREETING").setText("Hello JDOM!t"));</p>
<p>这点和DOM不同。Dom则需要更为复杂的代码，如下：</p>
<p>DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();</p>
<p>DocumentBuilder builder =factory.newDocumentBuilder();</p>
<p>Document doc = builder.newDocument();</p>
<p>Element root =doc.createElement("root");</p>
<p>Text text = doc.createText("This is the root");</p>
<p>root.appendChild(text);</p>
<p>doc.appendChild(root);</p>
<p>注意事项：JDOM不允许同一个节点同时被2个或多个文档相关联，要在第2个文档中使用原来老文档中的节点的话。首先需要使用detach()把这个节点分开来。</p>
<p>(2)从文件、流、系统ID、URL得到Document对象：</p>
<p>DOMBuilder builder = new DOMBuilder();</p>
<p>Document doc = builder.build(new File("jdom_test.xml"));</p>
<p>SAXBuilder builder = new SAXBuilder();</p>
<p>Document doc = builder.build(url);</p>
<p>在新版本中DOMBuilder 已经Deprecated掉 DOMBuilder.builder(url)，用SAX效率会比较快。</p>
<p>这里举一个小例子，为了简单起见，使用String对象直接作为xml数据源：</p>
<p>public jdomTest() {</p>
<p>&nbsp;&nbsp;&nbsp; String textXml = null;</p>
<p>&nbsp;&nbsp;&nbsp; textXml = "&lt;note&gt;";</p>
<p>&nbsp;&nbsp;&nbsp; textXml = textXml +</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "&lt;to&gt;aaa&lt;/to&gt;&lt;from&gt;bbb&lt;/from&gt;&lt;heading&gt;ccc&lt;/heading&gt;&lt;body&gt;ddd&lt;/body&gt;";</p>
<p>&nbsp;&nbsp;&nbsp; textXml = textXml + "&lt;/note&gt;";</p>
<p>&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder();</p>
<p>&nbsp;&nbsp;&nbsp; Document doc = null;</p>
<p>&nbsp;&nbsp;&nbsp; Reader in= new StringReader(textXml);</p>
<p>&nbsp;&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doc = builder.build(in);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element root = doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List ls = root.getChildren();//注意此处取出的是root节点下面的一层的Element集合</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter = ls.iterator(); iter.hasNext(); ) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element el = (Element) iter.next();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(el.getName().equals("to")){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(el.getText());</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; catch (IOException ex) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; catch (JDOMException ex) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>(3)DOM的document和JDOM的Document之间的相互转换使用方法，简单！</p>
<p>DOMBuilder builder = new DOMBuilder();</p>
<p>org.jdom.Document jdomDocument = builder.build(domDocument);</p>
<p>DOMOutputter converter = new DOMOutputter();// work with the JDOM document&#8230;</p>
<p>org.w3c.dom.Document domDocument = converter.output(jdomDocument);</p>
<p>// work with the DOM document&#8230;</p>
<p>2.XML文档输出</p>
<p>XMLOutPutter类：</p>
<p>JDOM的输出非常灵活,支持很多种io格式以及风格的输出</p>
<p>Document doc = new Document(...);</p>
<p>XMLOutputter outp = new XMLOutputter();</p>
<p>outp.output(doc, fileOutputStream); // Raw output</p>
<p>outp.setTextTrim(true); // Compressed output</p>
<p>outp.output(doc, socket.getOutputStream());</p>
<p>outp.setIndent(" ");// Pretty output</p>
<p>outp.setNewlines(true);</p>
<p>outp.output(doc, System.out);</p>
<p>详细请参阅最新的JDOM API手册</p>
<p>3.Element 类：</p>
<p>(1)浏览Element树</p>
<p>Element root = doc.getRootElement();//获得根元素element</p>
<p>List allChildren = root.getChildren();// 获得所有子元素的一个list</p>
<p>List namedChildren = root.getChildren("name");// 获得指定名称子元素的list</p>
<p>Element child = root.getChild("name");//获得指定名称的第一个子元素</p>
<p>JDOM给了我们很多很灵活的使用方法来管理子元素（这里的List是java.util.List）</p>
<p>List allChildren = root.getChildren();</p>
<p>allChildren.remove(3); // 删除第四个子元素</p>
<p>allChildren.removeAll(root.getChildren("jack"));// 删除叫&#8220;jack&#8221;的子元素</p>
<p>root.removeChildren("jack"); // 便捷写法</p>
<p>allChildren.add(new Element("jane"));// 加入</p>
<p>root.addContent(new Element("jane")); // 便捷写法</p>
<p>allChildren.add(0, new Element("first"));</p>
<p>(2)移动Elements:</p>
<p>在JDOM里很简单</p>
<p>Element movable = new Element("movable");</p>
<p>parent1.addContent(movable); // place</p>
<p>parent1.removeContent(movable); // remove</p>
<p>parent2.addContent(movable); // add</p>
<p>在Dom里</p>
<p>Element movable = doc1.createElement("movable");</p>
<p>parent1.appendChild(movable); // place</p>
<p>parent1.removeChild(movable); // remove</p>
<p>parent2.appendChild(movable); // 出错!</p>
<p>补充：纠错性</p>
<p>JDOM的Element构造函数（以及它的其他函数）会检查element是否合法。</p>
<p>而它的add/remove方法会检查树结构，检查内容如下：</p>
<p>1.在任何树中是否有回环节点</p>
<p>2.是否只有一个根节点</p>
<p>3.是否有一致的命名空间（Namespaces）</p>
<p>(3)Element的text内容读取</p>
<p>&lt;description&gt;</p>
<p>A cool demo</p>
<p>&lt;/description&gt;</p>
<p>// The text is directly available</p>
<p>// Returns "\n A cool demo\n"</p>
<p>String desc = element.getText();</p>
<p>// There's a convenient shortcut</p>
<p>// Returns "A cool demo"</p>
<p>String desc = element.getTextTrim();</p>
<p>(4)Elment内容修改</p>
<p>element.setText("A new description");</p>
<p>3.可正确解释特殊字符</p>
<p>element.setText("&lt;xml&gt; content");</p>
<p>4.CDATA的数据写入、读出</p>
<p>element.addContent(new CDATA("&lt;xml&gt; content"));</p>
<p>String noDifference = element.getText();</p>
<p>混合内容</p>
<p>element可能包含很多种内容，比如说</p>
<p>&lt;table&gt;</p>
<p>&lt;!-- Some comment --&gt;</p>
<p>Some text</p>
<p>&lt;tr&gt;Some child element&lt;/tr&gt;</p>
<p>&lt;/table&gt;</p>
<p>取table的子元素tr</p>
<p>String text = table.getTextTrim();</p>
<p>Element tr = table.getChild("tr");</p>
<p>也可使用另外一个比较简单的方法</p>
<p>List mixedCo = table.getContent();</p>
<p>Iterator itr = mixedCo.iterator();</p>
<p>while (itr.hasNext()) {</p>
<p>Object o = i.next();</p>
<p>if (o instanceof Comment) {...}</p>
<p>// 这里可以写成Comment, Element, Text, CDATA,ProcessingInstruction, 或者是EntityRef的类型</p>
<p>}</p>
<p>// 现在移除Comment,注意这里游标应为1。这是由于回车键也被解析成Text类的缘故,所以Comment项应为1。</p>
<p>mixedCo.remove(1);</p>
<p>4.Attribute类</p>
<p>&lt;table width="100%" border="0"&gt; &lt;/table&gt;</p>
<p>String width = table.getAttributeValue("width");//获得attribute</p>
<p>int border = table.getAttribute("width").getIntValue();</p>
<p>table.setAttribute("vspace", "0");//设置attribute</p>
<p>table.removeAttribute("vspace");// 删除一个或全部attribute</p>
<p>table.getAttributes().clear();</p>
<p>5.处理指令(Processing Instructions)操作</p>
<p>一个Pls的例子</p>
<p>&lt;?br?&gt;</p>
<p>&lt;?cocoon-process type="xslt"?&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目标&nbsp;&nbsp;&nbsp;&nbsp; 数据</p>
<p>处理目标名称(Target)</p>
<p>String target = pi.getTarget();</p>
<p>获得所有数据（data），在目标（target）以后的所有数据都会被返回。</p>
<p>String data = pi.getData();</p>
<p>String type = pi.getValue("type");获得指定属性的数据</p>
<p>List ls = pi.getNames();获得所有属性的名称</p>
<p>6.命名空间操作</p>
<p>&lt;xhtml:html</p>
<p>xmlns:xhtml="http://www.w3.org/1999/xhtml"&gt;</p>
<p>&lt;xhtml:title&gt;Home Page&lt;/xhtml:title&gt;</p>
<p>&lt;/xhtml:html&gt;</p>
<p>Namespace xhtml = Namespace.getNamespace("xhtml", "http://www.w3.org/1999/xhtml");</p>
<p>List kids = html.getChildren("title", xhtml);</p>
<p>Element kid = html.getChild("title", xhtml);</p>
<p>kid.addContent(new Element("table", xhtml));</p>
<p>7.XSLT格式转换</p>
<p>使用以下函数可对XSLT转换</p>
<p>最后如果你需要使用w3c的Document则需要转换一下。</p>
<p>public static Document transform(String stylesheet，Document in)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws JDOMException {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transformer transformer = TransformerFactory.newInstance()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .newTransformer(new StreamSource(stylesheet));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOMResult out = new JDOMResult();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transformer.transform(new JDOMSource(in), out);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return out.getDeocument();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; catch (TransformerException e) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new JDOMException("XSLT Trandformation failed", e);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp; }</p>
<p>五、用例:</p>
<p>1、生成xml文档：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>public class WriteXML{</p>
<p>&nbsp;&nbsp;&nbsp; public void BuildXML() throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element root,student,number,name,age;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root = new Element("student-info"); //生成根元素：student-info</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student = new Element("student"); //生成元素：student(number,name,age)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number = new Element("number");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = new Element("name");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; age = new Element("age");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document doc = new Document(root); //将根元素植入文档doc中</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number.setText("001");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name.setText("lnman");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; age.setText("24");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student.addContent(number);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student.addContent(name);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student.addContent(age);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.addContent(student);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Format format = Format.getCompactFormat();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setEncoding("gb2312"); //设置xml文件的字符为gb2312</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setIndent("&nbsp;&nbsp;&nbsp; "); //设置xml文件的缩进为4个空格</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter XMLOut = new XMLOutputter(format);//元素后换行一层元素缩四格</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOut.output(doc, new FileOutputStream("studentinfo.xml")); </p>
<p>}</p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteXML w = new WriteXML();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Now we build an XML document .....");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w.BuildXML();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("finished!");</p>
<p>}</p>
<p>}</p>
<p>生成的xml文档为：</p>
<p>&lt;?xml version="1.0" encoding="gb2312"?&gt;</p>
<p>&lt;student-info&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;student&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;number&gt;001&lt;/number&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;lnman&lt;/name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;age&gt;24&lt;/age&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/student&gt;</p>
<p>&lt;/student-info&gt;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>创建XML文档2：</p>
<p>public class CreateXML {</p>
<p>public void Create() {</p>
<p>&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp; Document doc = new Document();&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; ProcessingInstruction pi=new ProcessingInstruction("xml-stylesheet","type="text/xsl" href="test.xsl"");</p>
<p>&nbsp;&nbsp;&nbsp; doc.addContent(pi);&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; Namespace ns = Namespace.getNamespace("http://www.bromon.org" );</p>
<p>&nbsp;&nbsp;&nbsp; Namespace ns2 = Namespace.getNamespace("other", "http://www.w3c.org" );</p>
<p>&nbsp;&nbsp;&nbsp; Element root = new Element("根元素", ns);</p>
<p>&nbsp;&nbsp;&nbsp; root.addNamespaceDeclaration(ns2);</p>
<p>&nbsp;&nbsp;&nbsp; doc.setRootElement(root);</p>
<p>&nbsp;&nbsp;&nbsp; Element el1 = new Element("元素一");</p>
<p>&nbsp;&nbsp;&nbsp; el1.setAttribute("属性", "属性一");&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; Text text1=new Text("元素值");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element em = new Element("元素二").addContent("第二个元素");</p>
<p>&nbsp;&nbsp;&nbsp; el1.addContent(text1);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; el1.addContent(em);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element el2 = new Element("元素三").addContent("第三个元素");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.addContent(el1);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.addContent(el2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //缩进四个空格,自动换行,gb2312编码</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter outputter = new XMLOutputter(" ", true,"GB2312");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputter.output(doc, new FileWriter("test.xml"));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception e) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(e);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String args[]) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new CreateXML().Create();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>}</p>
<p>2、读取xml文档的例子：</p>
<p>import org.jdom.output.*;</p>
<p>import org.jdom.input.*;</p>
<p>import org.jdom.*;</p>
<p>import java.io.*;</p>
<p>import java.util.*;</p>
<p>public class ReadXML{</p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document read_doc = builder.build("studentinfo.xml");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element stu = read_doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List list = stu.getChildren("student");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 0;i &lt; list.size();i++) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element e = (Element)list.get(i);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str_number = e.getChildText("number");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str_name = e.getChildText("name");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str_age = e.getChildText("age");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("---------STUDENT--------------");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("NUMBER:" + str_number);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("NAME:" + str_name);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("AGE:" + str_age);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("------------------------------");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>3、DTD验证的：</p>
<p>public class XMLWithDTD {</p>
<p>public void validate() {</p>
<p>&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder(true);</p>
<p>&nbsp;&nbsp;&nbsp; builder.setFeature("http://xml.org/sax/features/validation";,true);</p>
<p>&nbsp;&nbsp;&nbsp; Document doc = builder.build(new FileReader("author.xml"));&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; System.out.println("搞掂");</p>
<p>&nbsp;&nbsp;&nbsp; XMLOutputter outputter = new XMLOutputter();</p>
<p>&nbsp;&nbsp;&nbsp; outputter.output(doc, System.out);</p>
<p>&nbsp;&nbsp; }catch(Exception e) {</p>
<p>&nbsp;&nbsp;&nbsp; System.out.println(e);</p>
<p>&nbsp;&nbsp; }&nbsp;&nbsp;</p>
<p>}</p>
<p>public static void main(String args[]) {</p>
<p>&nbsp;&nbsp; new XMLWithDTD().validate();</p>
<p>} </p>
<p>}</p>
<p>　　需要说明的是，这个程序没有指明使用哪个DTD文件。DTD文件的位置是在XML中指定的，而且DTD不支持命名空间，一个XML只能引用一个DTD，所以程序直接读取XML中指定的DTD，程序本身不用指定。不过这样一来，好象就只能使用外部式的DTD引用方式了？高人指点。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>4、XML Schema验证的：</p>
<p>public class XMLWithSchema {</p>
<p>String xml="test.xml";</p>
<p>String schema="test-schema.xml";</p>
<p>public void validate() {</p>
<p>&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder(true);</p>
<p>&nbsp;&nbsp;&nbsp; //指定约束方式为XML schema</p>
<p>&nbsp;&nbsp;&nbsp; builder.setFeature("http://apache.org/xml/features/validation/schema";, true);</p>
<p>&nbsp;&nbsp;&nbsp; //导入schema文件</p>
<p>builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";,schema);</p>
<p>&nbsp;&nbsp;&nbsp; Document doc = builder.build(new FileReader(xml));&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; System.out.println("搞掂");</p>
<p>&nbsp;&nbsp;&nbsp; XMLOutputter outputter = new XMLOutputter();</p>
<p>&nbsp;&nbsp;&nbsp; outputter.output(doc, System.out);</p>
<p>&nbsp;&nbsp; }catch(Exception e) {</p>
<p>&nbsp;&nbsp;&nbsp; System.out.println("验证失败:"+e);</p>
<p>&nbsp;&nbsp; } </p>
<p>}</p>
<p>}</p>
<p>上面的程序就指出了要引入的XML Schema文件的位置。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>系统默认输出是UTF-8，这有可能导致出现乱码。</p>
<p>5、Xpath例子：</p>
<p>JDOM的关于XPATH的api在org.jdom.xpath这个包里。这个包下，有一个抽象类XPath.java和实现类JaxenXPath.java， 使用时先用XPath类的静态方法newInstance(String xpath)得到XPath对象，然后调用它的selectNodes(Object context)方法或selectSingleNode(Object context)方法，前者根据xpath语句返回一组节点(List对象)；后者根据一个xpath语句返回符合条件的第一个节点(Object类型)。请看jdom-1.0自带的范例程序：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 它分析在web.xml文件中的注册的servlet的个数及参数个数，并输出角色名。</p>
<p>web.xml文件：</p>
<p>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;</p>
<p>&lt;!--</p>
<p>&lt;!DOCTYPE web-app</p>
<p>&nbsp;&nbsp;&nbsp; PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"</p>
<p>&nbsp;&nbsp;&nbsp; "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd"&gt;</p>
<p>--&gt;</p>
<p>&lt;web-app&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;snoop&lt;/servlet-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;SnoopServlet&lt;/servlet-class&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;file &lt;/servlet-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;ViewFile&lt;/servlet-class&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;initial&lt;/param-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;1000&lt;/param-value&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;The initial value for the counter &lt;!-- optional --&gt;&lt;/description&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;mv&lt;/servlet-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;*.wm&lt;/url-pattern&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;distributed/&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;security-role&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;manager&lt;/role-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;director&lt;/role-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;president&lt;/role-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/security-role&gt;</p>
<p>&lt;/web-app&gt;</p>
<p>处理程序：</p>
<p>import java.io.*;</p>
<p>import java.util.*; </p>
<p>public class XPathReader {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws IOException, JDOMException {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (args.length != 1) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println("Usage: java XPathReader web.xml");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filename = args[0];//从命令行输入web.xml</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintStream out = System.out;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document doc = builder.build(new File(filename));//得到Document对象</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Print servlet information</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XPath servletPath = XPath.newInstance("//servlet");//,选择任意路径下servlet元素</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List servlets = servletPath.selectNodes(doc);//返回所有的servlet元素。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("This WAR has "+ servlets.size() +" registered servlets:");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator i = servlets.iterator();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i.hasNext()) {//输出servlet信息</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element servlet = (Element) i.next();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("\t" + servlet.getChild("servlet-name")</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getTextTrim() +</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " for " + servlet.getChild("servlet-class")</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getTextTrim());</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List initParams = servlet.getChildren("init-param");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(" (it has " + initParams.size() + " init params)"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Print security role information</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XPath rolePath = XPath.newInstance("//security-role/role-name/text()");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List roleNames = rolePath.selectNodes(doc);//得到所有的角色名</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (roleNames.size() == 0) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("This WAR contains no roles");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("This WAR contains " + roleNames.size() + " roles:");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i = roleNames.iterator();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i.hasNext()) {//输出角色名</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("\t" + ((Text)i.next()).getTextTrim());</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>}</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>输出结果:</p>
<p>C:\java&gt;java&nbsp;&nbsp; XPathReader web.xml</p>
<p>This WAR has 2 registered servlets:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; snoop for SnoopServlet (it has 0 init params)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file for ViewFile (it has 1 init params)</p>
<p>This WAR contains 3 roles:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; manager</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; director</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; president</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>6、数据输入要用到XML文档要通过org.jdom.input包，反过来需要org.jdom.output。如前面所说，关是看API文档就能够使用。</p>
<p>我们的例子读入XML文件exampleA.xml，加入一条处理指令，修改第一本书的价格和作者，并添加一条属性，然后写入文件exampleB.xml：</p>
<p>//exampleA.xml</p>
<p>&lt;?xml version="1.0" encoding="GBK"?&gt;</p>
<p>&lt;bookList&gt;</p>
<p>&lt;book&gt;</p>
<p>&lt;name&gt;Java编程入门&lt;/name&gt;</p>
<p>&lt;author&gt;张三&lt;/author&gt;</p>
<p>&lt;publishDate&gt;2002-6-6&lt;/publishDate&gt;</p>
<p>&lt;price&gt;35.0&lt;/price&gt;</p>
<p>&lt;/book&gt;</p>
<p>&lt;book&gt;</p>
<p>&lt;name&gt;XML在Java中的应用&lt;/name&gt;</p>
<p>&lt;author&gt;李四&lt;/author&gt;</p>
<p>&lt;publishDate&gt;2002-9-16&lt;/publishDate&gt;</p>
<p>&lt;price&gt;92.0&lt;/price&gt;</p>
<p>&lt;/book&gt;</p>
<p>&lt;/bookList&gt;</p>
<p>//testJDOM.java</p>
<p>import org.jdom.*;</p>
<p>import org.jdom.output.*;</p>
<p>import org.jdom.input.*;</p>
<p>import java.io.*;</p>
<p>public class TestJDOM{</p>
<p>public static void main(String args[])throws Exception{</p>
<p>SAXBuilder sb = new SAXBuilder();</p>
<p>//从文件构造一个Document，因为XML文件中已经指定了编码，所以这里不必了</p>
<p>Document doc = sb.build(new FileInputStream("exampleA.xml"));</p>
<p>ProcessingInstruction pi = new ProcessingInstruction//加入一条处理指令</p>
<p>("xml-stylesheet","href=\"bookList.html.xsl\" type=\"text/xsl\"");</p>
<p>doc.addContent(pi);</p>
<p>Element root = doc.getRootElement(); //得到根元素</p>
<p>java.util.List books = root.getChildren(); //得到根元素所有子元素的集合</p>
<p>Element book = (Element)books.get(0); //得到第一个book元素</p>
<p>//为第一本书添加一条属性</p>
<p>Attribute a = new Attribute("hot","true");</p>
<p>book.setAttribute(a);</p>
<p>Element author = book.getChild("author"); //得到指定的字元素</p>
<p>author.setText("王五"); //将作者改为王五</p>
<p>//或 Text t = new Text("王五");book.addContent(t);</p>
<p>Element price = book.getChild("price"); //得到指定的字元素</p>
<p>//修改价格，比较郁闷的是我们必须自己转换数据类型，而这正是JAXB的优势</p>
<p>author.setText(Float.toString(50.0f));</p>
<p>String indent = " ";</p>
<p>boolean newLines = true;</p>
<p>XMLOutputter outp = new XMLOutputter(indent,newLines,"GBK");</p>
<p>outp.output(doc, new FileOutputStream("exampleB.xml"));</p>
<p>}</p>
<p>};</p>
<p>执行结果exampleB.xml：</p>
<p>&lt;?xml version="1.0" encoding="GBK"?&gt;</p>
<p>&lt;bookList&gt;</p>
<p>&lt;book hot=&#8221;true&#8221;&gt;</p>
<p>&lt;name&gt;Java编程入门&lt;/name&gt;</p>
<p>&lt;author&gt;50.0&lt;/author&gt;</p>
<p>&lt;publishDate&gt;2002-6-6&lt;/publishDate&gt;</p>
<p>&lt;price&gt;35.0&lt;/price&gt;</p>
<p>&lt;/book&gt;</p>
<p>&lt;book&gt;</p>
<p>&lt;name&gt;XML在Java中的应用&lt;/name&gt;</p>
<p>&lt;author&gt;李四&lt;/author&gt;</p>
<p>&lt;publishDate&gt;2002-9-16&lt;/publishDate&gt;</p>
<p>&lt;price&gt;92.0&lt;/price&gt;</p>
<p>&lt;/book&gt;</p>
<p>&lt;/bookList&gt;</p>
<p>&lt;?xml-stylesheet href="bookList.html.xsl" type="text/xsl"?&gt;</p>
<p>在默认情况下，JDOM的Element类的getText()这类的方法不会过滤空白字符，如果你需要过滤，用setTextTrim() 。</p>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/297984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2009-10-12 22:06 <a href="http://www.blogjava.net/zhaochengming/archive/2009/10/12/297984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 安全性的演变和理念 第一部分：安全性的基本要点(转)</title><link>http://www.blogjava.net/zhaochengming/archive/2009/07/09/286153.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Thu, 09 Jul 2009 13:45:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2009/07/09/286153.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/286153.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2009/07/09/286153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/286153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/286153.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;原文地址http://www.ibm.com/developerworks/cn/java/jw-0428-security/在最近的几十年内，计算模型发生了巨大的变化，由于这些变化，出现了对大规模电子商务与电子交易系统应用程序安全的更大需求，这正如最近对几个受欢迎站点的大量拒绝服务 (DoS) 攻击所表明的那样。尤其是对于 Java 团体，随着 Java 作为因特网编程的事实...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhaochengming/archive/2009/07/09/286153.html'>阅读全文</a><img src ="http://www.blogjava.net/zhaochengming/aggbug/286153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2009-07-09 21:45 <a href="http://www.blogjava.net/zhaochengming/archive/2009/07/09/286153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSTL对Map集合的操作迭代 (转自http://hi.baidu.com/javadonkey/blog/item/c0d02f35555ac41591ef395a.html)</title><link>http://www.blogjava.net/zhaochengming/archive/2008/10/26/236708.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Sun, 26 Oct 2008 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2008/10/26/236708.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/236708.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2008/10/26/236708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/236708.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/236708.html</trackback:ping><description><![CDATA[<p><br />
&nbsp;&nbsp;&nbsp;&nbsp; 当forEach 的items属性中的表达式的值是java.util.Map时，则var中命名的变量的类型就是</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; java.util.Map.Entry。这时var=entry的话，用表达式${entry.key}取得键名。</p>
<p>　 用表达式${entry.value}得到每个entry的值。这是因为java.util.Map.Entry对象有getKey和getValue方</p>
<p>　法，表达式语言遵守JavaBean的命名约定。　example:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:forEach items="${map}" var="entry"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:out value="${entry.key}" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:out value="${entry.value}" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/c:forEach&gt;<br />
2、根据key变量求值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果事先知道key那么很容易根据${map.key值}就可以得到值对象，但是如果key是一个变量呢？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 有一个问题,如果给定一个key的变量如何使用EL得到对象呢,这里需要使用EL表达式中的[]来解决,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 解决方法如示例:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:out value="${map[key]}" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 这里的map就是 java.util.Map对像，key是这个map里的一个key --&gt;<br />
&nbsp;</p>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/236708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2008-10-26 15:07 <a href="http://www.blogjava.net/zhaochengming/archive/2008/10/26/236708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jstl function 函数说明</title><link>http://www.blogjava.net/zhaochengming/archive/2008/10/07/232946.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Tue, 07 Oct 2008 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2008/10/07/232946.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/232946.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2008/10/07/232946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/232946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/232946.html</trackback:ping><description><![CDATA[<table cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="center"><strong><span style="font-size: 9pt">函数</span></strong></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="center"><strong><span style="font-size: 9pt">描述</span></strong></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:contains(string, substring)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">如果参数string中包含参数substring，返回true</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:containsIgnoreCase(string, substring)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">如果参数string中包含参数substring（忽略大小写），返回true</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:endsWith(string, suffix)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">如果参数 string 以参数suffix结尾，返回true</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:escapeXml(string)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">将有特殊意义的XML (和HTML)转换为对应的XML character entity code，并返回</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:indexOf(string, substring)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">返回参数substring在参数string中第一次出现的位置</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:join(array, separator)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">将一个给定的数组array用给定的间隔符separator串在一起，组成一个新的字符串并返回。</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:length(item)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:replace(string, before, after)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方，并返回替换后的结果</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:split(string, separator)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">返回一个数组，以参数separator 为分割符分割参数string，分割后的每一部分就是数组的一个元素</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:startsWith(string, prefix)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">如果参数string以参数prefix开头，返回true</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:substring(string, begin, end)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">返回参数string部分字符串, 从参数begin开始到参数end位置，包括end位置的字符</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:substringAfter(string, substring)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">返回参数substring在参数string中后面的那一部分字符串</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:substringBefore(string, substring)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">返回参数substring在参数string中前面的那一部分字符串</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:toLowerCase(string)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">将参数string所有的字符变为小写，并将其返回</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:toUpperCase(string)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">将参数string所有的字符变为大写，并将其返回</span></div>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8" valign="top">
            <div align="left"><span style="font-size: 9pt">fn:trim(string)</span></div>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; border-left-color: #ece9d8; border-bottom-color: #ece9d8; padding-bottom: 0cm; border-top-color: #ece9d8; padding-top: 0cm; background-color: transparent; border-right-color: #ece9d8">
            <div align="left"><span style="font-size: 9pt">去除参数string 首尾的空格，并将其返回</span></div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/232946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2008-10-07 16:43 <a href="http://www.blogjava.net/zhaochengming/archive/2008/10/07/232946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tag接口中的返回常数意义</title><link>http://www.blogjava.net/zhaochengming/archive/2008/09/17/229359.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Wed, 17 Sep 2008 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2008/09/17/229359.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/229359.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2008/09/17/229359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/229359.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/229359.html</trackback:ping><description><![CDATA[<p>tag接口中的返回常数意义：</p>
<p>&nbsp;</p>
eval_body_include：告诉服务器正文的内容，并把这些内容送入输出流
<p>&nbsp;</p>
<p>&nbsp;</p>
skip_body：告诉服务器不要处理正文内容
<p>&nbsp;</p>
<p>&nbsp;</p>
eval_page：让服务器继续执行页面
<p>&nbsp;</p>
<p>&nbsp;</p>
skip_page：让服务器不要处理剩余的页面
<p>&nbsp;</p>
<p>&nbsp;</p>
eval_body_again：让服务器继续处理正文内容，只有doafterbody方法可以返回
<p>&nbsp;</p>
<p>&nbsp;</p>
eval_body_buffered：bodytag接口的字段，在dostarttag()返回
<img src ="http://www.blogjava.net/zhaochengming/aggbug/229359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2008-09-17 10:42 <a href="http://www.blogjava.net/zhaochengming/archive/2008/09/17/229359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>卸载Myeclipse错误 "载入 Java VM 时 Windows 出现错误 : 3"</title><link>http://www.blogjava.net/zhaochengming/archive/2008/08/26/224386.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Tue, 26 Aug 2008 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2008/08/26/224386.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/224386.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2008/08/26/224386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/224386.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/224386.html</trackback:ping><description><![CDATA[<p>转自：http://www.cnblogs.com/liubiqu/archive/2007/11/30/977800.html<font face="Courier New"><br />
</p>
<p><font face="Courier New">卸载时就出现这个问题,重装了JDK和myeclipse结果问题还是一样 </p>
<p>解决办法：这个问题是由于JDK更新造成的 </p>
<p>找到MyEclipse的安装目录，下面会有一个名字类似Uninstall MyEclipse 5.5.0GA.lax的文件，打开，可以找到<br />
lax.nl.current.vm= <br />
这项，将后面的值更新成有效的jre的值就可以了，如下所示：</p>
<p><br />
#&nbsp;&nbsp; LAX.NL.CURRENT.VM<br />
#&nbsp;&nbsp; -----------------<br />
#&nbsp;&nbsp; the VM to use for the next launch</p>
<p>lax.nl.current.vm=C:\\Program Files\\Java\\jre1.5.0_11\\bin\\java.exe</font></p>
</font>
 <img src ="http://www.blogjava.net/zhaochengming/aggbug/224386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2008-08-26 09:58 <a href="http://www.blogjava.net/zhaochengming/archive/2008/08/26/224386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中 static/transient,final/volatile 说明 转自(http://hi.baidu.com/jxliaom/blog/item/e9d5fd6d0bf6c3fe4316942b.html)</title><link>http://www.blogjava.net/zhaochengming/archive/2008/06/02/205253.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 02 Jun 2008 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2008/06/02/205253.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/205253.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2008/06/02/205253.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/205253.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/205253.html</trackback:ping><description><![CDATA[<p>Java中 static/transient,final/volatile 说明2008-05-22 11:06你可以任意使用如下的修改限定关键字来定义一个字段：final或者volatile和/或者static和/或者transient。<br />
如果你将一个字段定义为final，编译器将确保字段当成一个常量——只读变量来初始化和处理。因为编译器知道常量是不变的，所以在程序的字节码中对其进行了内部优化。class Employee</p>
<p>{</p>
<p>final int ACCOUNTANT = 1;</p>
<p>final int PAYROLL_CLERK = 2;</p>
<p>final int MANAGER = 3;</p>
<p>&nbsp;</p>
<p>int jobID = ACCOUNTANT;</p>
<p>}如果你将一个字段声明为volatile，则多线程将能访问此字段，而特定的编译器将防止最优化以使该字段能被适当的访问。如果你将一个字段定义为static，则所有对象都将共享此字段的一份拷贝。当你将一个新值赋给这个字段时，所有对象都将得到这个新值。如果没有指定为static，则这个字段将是一个实例字段，每个对象都使用他们自己的一份拷贝。<br />
定义为transient的字段值在对象串行化过程中将不被保存。实例字段<br />
&#8220;实例字段&#8221;就是没有使用static修改标识符定义的字段。实例字段和对象紧密相连——而不是和类。当在一个对象代码里修改时，仅仅这个相关的类实例——对象——可以得到这个改变。实例字段随对象的创建而创建，随对象的释放而释放。类字段<br />
类字段是用static关键字定义的字段。类字段和类联系——而不是对象。当在一个类代码中修改时，这个类（以及所有创建的对象）都能感知这个变化。类字段随类的加载而创建，随类的卸载而释放常量<br />
&#8220;常量&#8221;是一种只读变量；当JVM初始化这种变量后，变量的值就不能改变了。<br />
使用final关键字来定义常量。正如有两种字段——实例和类字段，常量也有两种——实例常量和类常量。为了提高效率，应当创建类常量，或者说是final static字段。class Constants</p>
<p>{</p>
<p>final int FIRST = 1;</p>
<p>final static int SECOND = 2;</p>
<p>&nbsp;</p>
<p>public static void main(String[] args)</p>
<p>{</p>
<p>int iteration = SECOND;</p>
<p>&nbsp;</p>
<p>if (iteration == FIRST)//编译错误</p>
<p>System.out.println(&#8220;first iteration&#8221;);</p>
<p>else</p>
<p>if (iteration == SECOND)</p>
<p>System.out.println(&#8220;second iteration&#8221;);</p>
<p>}</p>
<p>}<br />
上例中的Constants类定义了一对常量——FIRST和SECOND。FIRST是实例常量，因为JVM给每个Constants对象分配一份FIRST的拷贝。相反的，因为JVM在加载Constants类后只创建了一份SECOND拷贝，所以SECOND是类常量。<br />
注意：当你尝试在main()中直接访问FIRST时会导致一个编译错误。常量FIRST直到一个对象创建时才存在，所以FIRST仅仅只能被这个对象所访问——而不是类。 <br />
</p>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/205253.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2008-06-02 09:57 <a href="http://www.blogjava.net/zhaochengming/archive/2008/06/02/205253.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 字符串特殊处理(转)</title><link>http://www.blogjava.net/zhaochengming/archive/2008/05/08/199206.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Thu, 08 May 2008 04:39:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2008/05/08/199206.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/199206.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2008/05/08/199206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/199206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/199206.html</trackback:ping><description><![CDATA[public static String javaScriptEscape(String input) {<br />
&nbsp;&nbsp;if (input == null) {<br />
&nbsp;&nbsp;&nbsp;return input;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;StringBuffer filtered = new StringBuffer(input.length());<br />
&nbsp;&nbsp;char prevChar = '\u0000';<br />
&nbsp;&nbsp;char c;<br />
&nbsp;&nbsp;for (int i = 0; i &lt; input.length(); i++) {<br />
&nbsp;&nbsp;&nbsp;c = input.charAt(i);<br />
&nbsp;&nbsp;&nbsp;if (c == '"') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;filtered.append("\\\"");<br />
&nbsp;&nbsp;&nbsp;} else if (c == '\'') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;filtered.append("\\'");<br />
&nbsp;&nbsp;&nbsp;} else if (c == '\\') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;filtered.append("\\\\");<br />
&nbsp;&nbsp;&nbsp;} else if (c == '\t') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;filtered.append("\\t");<br />
&nbsp;&nbsp;&nbsp;} else if (c == '\n') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (prevChar != '\r') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filtered.append("\\n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;} else if (c == '\r') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;filtered.append("\\n");<br />
&nbsp;&nbsp;&nbsp;} else if (c == '\f') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;filtered.append("\\f");<br />
&nbsp;&nbsp;&nbsp;} else if (c == '/') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;filtered.append("\\/");<br />
&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;filtered.append(c);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;prevChar = c;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return filtered.toString();<br />
&nbsp;}
<img src ="http://www.blogjava.net/zhaochengming/aggbug/199206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2008-05-08 12:39 <a href="http://www.blogjava.net/zhaochengming/archive/2008/05/08/199206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sychronized的一些用法</title><link>http://www.blogjava.net/zhaochengming/archive/2008/04/01/189932.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Tue, 01 Apr 2008 02:25:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2008/04/01/189932.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/189932.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2008/04/01/189932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/189932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/189932.html</trackback:ping><description><![CDATA[(1)<br />
synchronized(this) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;//......<br />
}<br />
实际上等同于<br />
synchronized void test() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;//......<br />
}<br />
<br />
(2)<br />
synchronized(Test.class) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;//......<br />
}<br />
实际上等同于<br />
synchronized static void test() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;//......<br />
}
<img src ="http://www.blogjava.net/zhaochengming/aggbug/189932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2008-04-01 10:25 <a href="http://www.blogjava.net/zhaochengming/archive/2008/04/01/189932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>