锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
package com.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest {
private static void test0() {
String str = "<biao><>c<b>x";
Pattern pattern;
Matcher matcher;
// 璐┆: 鏈闀垮尮閰?.* : 杈撳嚭: <biao><>c<b>
pattern = Pattern.compile("<.*>");
matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
// 涓嶇煡鏄惁闈炶椽濠?.*? : 杈撳嚭: <biao>, <>, <b>
pattern = Pattern.compile("<.*?>");
matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
// 浣跨敤緇? 杈撳嚭<>閲岀殑鍐呭, 杈撳嚭: 'biao', ' ', 'b'
// 0緇勪唬琛ㄦ暣涓〃杈懼紡, 瀛愮粍浠?寮濮?br /> pattern = Pattern.compile("<(.*?)>");
matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(">>"+matcher.group(1));
}
}
/** 鏌ユ壘浠ava寮澶寸殑浠繪剰瀛楃涓?*/
public static void test1() {
Pattern pattern = Pattern.compile("^Java.*");
Matcher m = pattern.matcher("Java鍝堝搱");
System.out.println(m.find());
}
/** 浠ュ鏉′歡鍒嗗壊瀛楃涓?*/
public static void test2() {
Pattern pattern = Pattern.compile("[,|\\+]+");
String str[] = pattern.split("Java+ Hello World Java,Hello,,World|Sun");
if(str != null) {
for(String s : str) {
System.out.println(">> " +s);
}
}
}
/** 鏂囧瓧鏇挎崲 */
public static void test3() {
Pattern pattern = Pattern.compile("abc*");
Matcher matcher = pattern.matcher("xabcccc嫻嬭瘯abd, abcce");
String str = matcher.replaceAll("(?)");
System.out.println(str);
}
/** 鏂囧瓧鏇挎崲(鏇挎崲瀛楃) 緇撴灉灝嗕細(xì)鏄?nbsp; x(?)嫻嬭瘯(?)d, (?) */
public static void test4() {
Pattern pattern = Pattern.compile("123|4(567)");
Matcher matcher = pattern.matcher("0123456789abcde");
StringBuffer sb = new StringBuffer();
while(matcher.find()) {
System.out.println(matcher.group(0));
System.out.println(matcher.group(1));
System.out.println(">>"+ matcher.start()+":"+matcher.end());
matcher.appendReplacement(sb, "(?)");
}
matcher.appendTail(sb);
System.out.println(sb);
}
public static void test5() {
String regEx="B(ond)";
String str="My name is Bond. James Bond.";
Pattern p=Pattern.compile(regEx);
Matcher matcher=p.matcher(str);
if(matcher.find()){
System.out.println(matcher.groupCount());
System.out.println(matcher.start());
String group_0 = matcher.group(0);
String group_1 = matcher.group(1);
System.out.println("Group 0 " + group_0);
System.out.println("Group 1 " + group_1);
System.out.println(str);
}
}
// 楠岃瘉鏄惁涓洪偖綆卞湴鍧
public static void test6() {
String str="ponline@yahoo.com.cn.jcWe--_*";
Pattern pattern =
Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+");
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.matches());
}
/** 鍘婚櫎html 鏍囪 */
public static void test7() {
Pattern pattern = Pattern.compile(".+?");
Matcher matcher = pattern.matcher("<a 嫻嬭瘯 href=\"index.html\">涓婚〉</a>");
matcher.find();
System.out.println(matcher.group());
String string = matcher.replaceFirst("");
System.out.println(string);
}
/** 鏌ユ壘html 涓搴旀潯浠跺瓧絎︿覆 **/
public static void test8() {
Pattern pattern = Pattern.compile("href=\"(.+?)\"");
Matcher matcher = pattern.matcher("<a href=\"index.html\">涓婚〉</a>");
if(matcher.find())
System.out.println(matcher.group(1));
}
/** 鎴彇http://鍦板潃 **/
public static void test9() {
Pattern pattern = Pattern.compile("(http://|https://){1}.+");
Matcher matcher = pattern.matcher("dsdsds<http://dfhf.\\sd-: s//鍥藉gfg-ffdfd>fdf");
StringBuffer buffer = new StringBuffer();
while(matcher.find()){
buffer.append(matcher.group());
buffer.append("\r\n");
System.out.println(buffer.toString());
}
}
/** 鏇挎崲鎸囧畾{}涓枃瀛?nbsp; **/
public static void test10() {
String str = "Java鐩墠鐨勫彂灞曞彶鏄敱{0}騫?{1}騫?;
String[][] object={new String[]{"\\{0\\}","1995"},new String[]{"\\{1\\}","2007"}};
System.out.println(replace(str,object));
}
public static String replace(String sourceString, String[][] object) {
String temp=sourceString;
for(int i=0;i<object.length;i++){
String[] result=(String[])object[i];
Pattern pattern = Pattern.compile(result[0]);
Matcher matcher = pattern.matcher(temp);
temp=matcher.replaceAll(result[1]);
}
return temp;
}
public static void main(String[] args) throws Exception{
PatternTest.test10();
}
}
Here’s a guide to show you how to integrate Spring with JAX-WS, as mention in this link : http://jax-ws-commons.java.net/spring/. Upon finishing this tutorial, you will create a simple HelloWorld web service (JAX-WS), and DI a bean into the web service via Spring.
See the final project folder structure.
Use Maven to get all the library dependencies. The key to integrate Spring with JAX-WS is via jaxws-spring.jar.
File : pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mkyong</groupId> <artifactId>WebServicesExample</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>WebServicesExample Maven Webapp</name> <url>http://maven.apache.org</url> <repositories> <repository> <id>java.net</id> <url>http://download.java.net/maven/2</url> </repository> </repositories> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- Spring framework --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>2.5.6</version> </dependency> <!-- JAX-WS --> <dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>2.2.3</version> </dependency> <!-- Library from java.net, integrate Spring with JAX-WS --> <dependency> <groupId>org.jvnet.jax-ws-commons.spring</groupId> <artifactId>jaxws-spring</artifactId> <version>1.8</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>com.sun.xml.stream.buffer</groupId> <artifactId>streambuffer</artifactId> </exclusion> <exclusion> <groupId>org.jvnet.staxex</groupId> <artifactId>stax-ex</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <finalName>web services</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.1</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> </project>
A simple JAX-WS example, and dependency inject (DI) “HelloWorldBo” via Spring.
File : HelloWorldWS.java
package com.mkyong.ws; import javax.jws.WebMethod; import javax.jws.WebService; import com.mkyong.bo.HelloWorldBo; @WebService public class HelloWorldWS{ //DI via Spring HelloWorldBo helloWorldBo; @WebMethod(exclude=true) public void setHelloWorldBo(HelloWorldBo helloWorldBo) { this.helloWorldBo = helloWorldBo; } @WebMethod(operationName="getHelloWorld") public String getHelloWorld() { return helloWorldBo.getHelloWorld(); } }
Here’s the HelloWorldBo class, with a getHelloWorld()
method to return a simple string.
File : HelloWorldBo.java
package com.mkyong.bo; public interface HelloWorldBo{ String getHelloWorld(); }
File : HelloWorldBoImpl.java
package com.mkyong.bo.impl; import com.mkyong.bo.HelloWorldBo; public class HelloWorldBoImpl implements HelloWorldBo{ public String getHelloWorld(){ return "JAX-WS + Spring!"; } }
Spring beans configuration file to bind URL pattern “/hello” to “com.mkyong.ws.HelloWorldWS” web service class.
File : applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ws="http://jax-ws.dev.java.net/spring/core" xmlns:wss="http://jax-ws.dev.java.net/spring/servlet" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://jax-ws.dev.java.net/spring/core http://jax-ws.dev.java.net/spring/core.xsd http://jax-ws.dev.java.net/spring/servlet http://jax-ws.dev.java.net/spring/servlet.xsd" > <wss:binding url="/hello"> <wss:service> <ws:service bean="#helloWs"/> </wss:service> </wss:binding> <!-- Web service methods --> <bean id="helloWs" class="com.mkyong.ws.HelloWorldWS"> <property name="helloWorldBo" ref="HelloWorldBo" /> </bean> <bean id="HelloWorldBo" class="com.mkyong.bo.impl.HelloWorldBoImpl" /> </beans>
In web.xml, declares “com.sun.xml.ws.transport.http.servlet.WSSpringServlet
“, and link it to “/hello
“.
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring + JAX-WS</display-name> <servlet> <servlet-name>jaxws-servlet</servlet-name> <servlet-class> com.sun.xml.ws.transport.http.servlet.WSSpringServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>jaxws-servlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <!-- Register Spring Listener --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app>
Start the project, and access the deployed web service via URL “/hello“, for example http://localhost:8080/WebServicesExample/hello?wsdl
Spring AOP 鐢ㄦ埛鍙兘浼?xì)缁忓告嬌鐢?execution
pointcut designator銆傛墽琛岃〃杈懼紡鐨勬牸寮忓涓嬶細(xì)
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)
闄や簡榪斿洖綾誨瀷妯″紡錛堜笂闈唬鐮佺墖鏂腑鐨剅et-type-pattern錛夛紝鍚嶅瓧妯″紡鍜屽弬鏁版ā寮忎互澶栵紝鎵鏈夌殑閮ㄥ垎閮芥槸鍙夌殑銆?榪斿洖綾誨瀷妯″紡鍐沖畾浜嗘柟娉曠殑榪斿洖綾誨瀷蹇呴』渚濇鍖歸厤涓涓繛鎺ョ偣銆?浣犱細(xì)浣跨敤鐨勬渶棰戠箒鐨勮繑鍥炵被鍨嬫ā寮忔槸 *
錛屽畠浠h〃浜嗗尮閰嶄換鎰忕殑榪斿洖綾誨瀷銆?涓涓叏縐伴檺瀹氱殑綾誨瀷鍚嶅皢鍙細(xì)鍖歸厤榪斿洖緇欏畾綾誨瀷鐨勬柟娉曘傚悕瀛楁ā寮忓尮閰嶇殑鏄柟娉曞悕銆?浣犲彲浠ヤ嬌鐢?*
閫氶厤絎︿綔涓烘墍鏈夋垨鑰呴儴鍒嗗懡鍚嶆ā寮忋?鍙傛暟妯″紡紼嶅井鏈夌偣澶嶆潅錛?/span>()
鍖歸厤浜嗕竴涓笉鎺ュ彈浠諱綍鍙傛暟鐨勬柟娉曪紝 鑰?(..)
鍖歸厤浜嗕竴涓帴鍙椾換鎰忔暟閲忓弬鏁扮殑鏂規(guī)硶錛堥浂鎴栬呮洿澶氾級銆?妯″紡 (*)
鍖歸厤浜嗕竴涓帴鍙椾竴涓換浣曠被鍨嬬殑鍙傛暟鐨勬柟娉曘?妯″紡 (*,String)
鍖歸厤浜嗕竴涓帴鍙椾袱涓弬鏁扮殑鏂規(guī)硶錛岀涓涓彲浠ユ槸浠繪剰綾誨瀷錛岀浜屼釜鍒欏繀欏繪槸String綾誨瀷銆?/span>
涓嬮潰緇欏嚭涓浜涘父瑙佸垏鍏ョ偣琛ㄨ揪寮忕殑渚嬪瓙銆?/p>
浠繪剰鍏叡鏂規(guī)硶鐨勬墽琛岋細(xì)
execution(public * *(..))
浠諱綍涓涓互“set”寮濮嬬殑鏂規(guī)硶鐨勬墽琛岋細(xì)
execution(* set*(..))
AccountService
鎺ュ彛鐨勪換鎰忔柟娉曠殑鎵ц錛?/p>
execution(* com.xyz.service.AccountService.*(..))
瀹氫箟鍦╯ervice鍖呴噷鐨勪換鎰忔柟娉曠殑鎵ц錛?/p>
execution(* com.xyz.service.*.*(..))
瀹氫箟鍦╯ervice鍖呮垨鑰呭瓙鍖呴噷鐨勪換鎰忔柟娉曠殑鎵ц錛?/p>
execution(* com.xyz.service..*.*(..))
within(com.xyz.service.*)鍦╯ervice鍖呮垨鑰呭瓙鍖呴噷鐨勪換鎰忚繛鎺ョ偣錛堝湪Spring AOP涓彧鏄柟娉曟墽琛岋級 錛?nbsp;
within(com.xyz.service..*)瀹炵幇浜?AccountService 鎺ュ彛鐨勪唬鐞嗗璞$殑浠繪剰榪炴帴鐐癸紙鍦⊿pring AOP涓彧鏄柟娉曟墽琛岋級 錛?nbsp;
this(com.xyz.service.AccountService)'this'鍦╞inding form涓敤鐨勬洿澶氾細(xì)- 璇峰父瑙佷互涓嬭璁洪氱煡鐨勭珷鑺備腑鍏充簬濡備綍浣垮緱浠g悊瀵硅薄鍙互鍦ㄩ氱煡浣撳唴璁塊棶鍒扮殑閮ㄥ垎銆?nbsp;
瀹炵幇浜?AccountService 鎺ュ彛鐨勭洰鏍囧璞$殑浠繪剰榪炴帴鐐癸紙鍦⊿pring AOP涓彧鏄柟娉曟墽琛岋級 錛?nbsp;
target(com.xyz.service.AccountService)'target'鍦╞inding form涓敤鐨勬洿澶氾細(xì)- 璇峰父瑙佷互涓嬭璁洪氱煡鐨勭珷鑺備腑鍏充簬濡備綍浣垮緱鐩爣瀵硅薄鍙互鍦ㄩ氱煡浣撳唴璁塊棶鍒扮殑閮ㄥ垎銆?nbsp;
浠諱綍涓涓彧鎺ュ彈涓涓弬鏁幫紝涓斿湪榪愯鏃朵紶鍏ョ殑鍙傛暟瀹炵幇浜?Serializable 鎺ュ彛鐨勮繛鎺ョ偣 錛堝湪Spring AOP涓彧鏄柟娉曟墽琛岋級
args(java.io.Serializable)'args'鍦╞inding form涓敤鐨勬洿澶氾細(xì)- 璇峰父瑙佷互涓嬭璁洪氱煡鐨勭珷鑺備腑鍏充簬濡備綍浣垮緱鏂規(guī)硶鍙傛暟鍙互鍦ㄩ氱煡浣撳唴璁塊棶鍒扮殑閮ㄥ垎銆?nbsp;
璇鋒敞鎰忓湪渚嬪瓙涓粰鍑虹殑鍒囧叆鐐逛笉鍚屼簬 execution(* *(java.io.Serializable))錛?args鍙湁鍦ㄥ姩鎬佽繍琛屾椂鍊欎紶鍏ュ弬鏁版槸鍙簭鍒楀寲鐨勶紙Serializable錛夋墠鍖歸厤錛岃宔xecution 鍦ㄤ紶鍏ュ弬鏁扮殑絳懼悕澹版槑鐨勭被鍨嬪疄鐜頒簡 Serializable 鎺ュ彛鏃跺欏尮閰嶃?nbsp;
鏈変竴涓?@Transactional 娉ㄨВ鐨勭洰鏍囧璞′腑鐨勪換鎰忚繛鎺ョ偣錛堝湪Spring AOP涓彧鏄柟娉曟墽琛岋級@target(org.springframework.transaction.annotation.Transactional)'@target' 涔熷彲浠ュ湪binding form涓嬌鐢細(xì)璇峰父瑙佷互涓嬭璁洪氱煡鐨勭珷鑺備腑鍏充簬濡備綍浣垮緱annotation瀵硅薄鍙互鍦ㄩ氱煡浣撳唴璁塊棶鍒扮殑閮ㄥ垎銆?nbsp;
浠諱綍涓涓洰鏍囧璞″0鏄庣殑綾誨瀷鏈変竴涓?@Transactional 娉ㄨВ鐨勮繛鎺ョ偣錛堝湪Spring AOP涓彧鏄柟娉曟墽琛岋級@within(org.springframework.transaction.annotation.Transactional)'@within'涔熷彲浠ュ湪binding form涓嬌鐢細(xì)- 璇峰父瑙佷互涓嬭璁洪氱煡鐨勭珷鑺備腑鍏充簬濡備綍浣垮緱annotation瀵硅薄鍙互鍦ㄩ氱煡浣撳唴璁塊棶鍒扮殑閮ㄥ垎銆?nbsp;
浠諱綍涓涓墽琛岀殑鏂規(guī)硶鏈変竴涓?@Transactional annotation鐨勮繛鎺ョ偣錛堝湪Spring AOP涓彧鏄柟娉曟墽琛岋級@annotation(org.springframework.transaction.annotation.Transactional)'@annotation' 涔熷彲浠ュ湪binding form涓嬌鐢細(xì)- 璇峰父瑙佷互涓嬭璁洪氱煡鐨勭珷鑺備腑鍏充簬濡備綍浣垮緱annotation瀵硅薄鍙互鍦ㄩ氱煡浣撳唴璁塊棶鍒扮殑閮ㄥ垎銆?nbsp;
浠諱綍涓涓帴鍙椾竴涓弬鏁幫紝騫朵笖浼犲叆鐨勫弬鏁板湪榪愯鏃剁殑綾誨瀷瀹炵幇浜?@Classified annotation鐨勮繛鎺ョ偣錛堝湪Spring AOP涓彧鏄柟娉曟墽琛岋級
@args(com.xyz.security.Classified)'@args'涔熷彲浠ュ湪binding form涓嬌鐢細(xì)- 璇峰父瑙佷互涓嬭璁洪氱煡鐨勭珷鑺備腑鍏充簬濡備綍浣垮緱annotation瀵硅薄鍙互鍦ㄩ氱煡浣撳唴璁塊棶鍒扮殑閮ㄥ垎銆?/p>
org.springframework.beans.factory.BeanCreationException: 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: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)VCaused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
緗戜笂鐨勮娉曠湡鏄壇鑾犱笉榻?鏈緇堟壘涓?span style="color: #009900">鑳借В鍐抽棶棰樼殑鏂規(guī)硶(鎶樿吘鎴戜竴涓嬪崍,蹇柉浜?
鍘熷洜錛?/span>
鍏朵腑asm-2.2.2.jar涓巃sm.jar瀛樺湪綾諱笂鐨勫啿紿侊紒錛侊紒
浣跨敤鍏朵腑涔嬩竴鎴栦袱鑰呴兘浣跨敤錛屽彲鑳戒細(xì)鍑虹幇濡備笅閿欒錛?br />java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit
鍘昏繖閲屼笅杞絡(luò)dic
鎴戠敤鐨勬槸0.94鐗?eclipse 3.x
涓嬫埅鍚?/font>
灝唈dic.dll,IeEmbed.exe,jdic.jar,MozEmbed.exe,packager.jar,tray.dll鑰冭礉鍒頒綘鐨勫伐紼媗ib鐩綍(鍦ㄥ伐紼嬩笂寤虹珛lib鐩綍),鐒跺悗璁劇疆浠ヤ笂.jar鏂囦歡鍒扮紪璇戣礬寰?
寤轟竴涓猨Frame,鍔犱竴涓狫Panel
浠ヤ笅涓轟唬鐮佺墖鏂? 鐢ㄤ互涓嬩唬鐮佸姞杞芥祻瑙堝櫒
WebBrowser webBrowser = new WebBrowser();
panel_name.add(webBrowser, BorderLayout.CENTER);
webBrowser .setURL(new URL(http://www.google.com));
webBrowser .addWebBrowserListener(new WebBrowserListener() {
public void downloadStarted(WebBrowserEvent event) {;}
public void downloadCompleted(WebBrowserEvent event) {;}
public void downloadProgress(WebBrowserEvent event) {;}
public void downloadError(WebBrowserEvent event) {;}
public void documentCompleted(WebBrowserEvent event) {
//鍦ㄨ繖閲屽啓浠g爜
// 寰圕OOL鐨勫姛鑳?涓庤剼鏈氦浜?/font>
StringBuffer jsBuff = new StringBuffer();
jsBuff.append(" var bodyhtml = document.body.innerHTML;"); //鍙栧綋鍓嶉〉鐨勫唴瀹?/font>
String html = webBrowser .getContent(); //鍙栧綋鍓嶉〉鐨勫唴瀹?榪欎釜涓嶅ソ鐢?鍦ㄦ湁iframe鐨勭綉欏典腑涓嶇伒
jsBuff.append(" var hrefObj = document.getElementsByTagName('A');");
//....鐣?鍙栭〉闈㈢殑N涓唴瀹?/p>
//濂戒簡,濂藉浜洪兘闂?濡備綍鍙栧緱iframe鐨勫唴瀹瑰憿?jdic 鐨勫寘娌℃湁涓涓柟娉曞彲浠ュ彇寰楀埌鐨?鐪嬩互涓婄殑鑴氭湰 var bodyhtml ,鎴戜滑鎬庝箞鍙栧埌瀹冪殑鍊煎憿?濡傛灉鍙栧緱鍒?閭d竴鍒囬棶棰橀兘鍙互瑙e喅.
String iframeScript= " var iframehtml = document.frames[0].body.innerHTML;"; //鍙栧緱鎸囧畾iframe鐨勫唴瀹?/p>
//鍦ㄨ繖閲?鍙互涓庤剼鏈彉閲忕殑鍊艱繘琛屼氦浜?瀹屾垚鎴戜滑鎯寵鐨勫姛鑳?紜疄寰圕OOL
String iframeHtml = webBrowser .executeScript(iframeScript);
System.out.println(iframeHtml ); //鍑烘潵鐨勬鏄兂瑕佺殑,寰堢畝鍗曞惂?浣嗘槸涓嶇煡閬撶殑璇?鎯崇牬澶翠篃涓嶆槑鐧?/p>
//璇村埌榪?鍏跺疄澶у宸茬粡鏄庣櫧,鐢╦dic鍙互鎿嶇旱緇濆ぇ澶氭暟鐨勭綉绔?姣斿鏃朵笅嫻佽鐨剋eb緗戞父,鎯沖埌浠涔堜簡?瀵?鍐欎竴涓剼鏈鎸傚氨鏄繖涔堢畝鍗?
//蹇涓涓祻瑙堝櫒dom緇撴瀯鏌ョ湅鎻掍歡,鎿嶆帶鍦ㄤ綘鎵嬩腑
}
public void titleChange(WebBrowserEvent event) {;}
public void statusTextChange(WebBrowserEvent event) {;}
public void windowClose(WebBrowserEvent arg0) {
}
});
// 鍒涘緩Excel宸ヤ綔琛?br />
jxl.write.WritableSheet ws = wwb.createSheet("涓漢淇℃伅琛?", 0);
/**
* 19鍒?鏍囬鍗犳嵁2琛?br />
*/
int charTitle = 10;// 鏍囬瀛椾綋澶у皬
int charNormal = 10;// 鏍囬瀛椾綋澶у皬
// 娣誨姞甯︽湁瀛楀瀷Formatting鐨勫璞?/p>
// 鐢ㄤ簬鏍囬
jxl.write.WritableFont titleFont = new jxl.write.WritableFont(
WritableFont.createFont("瀹嬩綋"), charTitle, WritableFont.BOLD);
jxl.write.WritableCellFormat titleFormat = new jxl.write.WritableCellFormat(
titleFont);
titleFormat.setBorder(Border.ALL, BorderLineStyle.THIN); // 綰挎潯
titleFormat.setVerticalAlignment(VerticalAlignment.CENTRE); // 鍨傜洿瀵歸綈
titleFormat.setAlignment(Alignment.CENTRE); // 姘村鉤瀵歸綈
titleFormat.setWrap(true); // 鏄惁鎹㈣
titleFormat.setBackground(Colour.GRAY_25);// 鑳屾櫙鑹叉殫鐏?25%
// 鐢ㄤ簬姝f枃
WritableFont normalFont = new WritableFont(WritableFont
.createFont("瀹嬩綋"), charNormal);
jxl.write.WritableCellFormat normalFormat = new jxl.write.WritableCellFormat(
normalFont);
normalFormat.setBorder(Border.ALL, BorderLineStyle.THIN); // 綰挎潯
normalFormat.setVerticalAlignment(VerticalAlignment.CENTRE); // 鍨傜洿瀵歸綈
normalFormat.setAlignment(Alignment.CENTRE);// 姘村鉤瀵歸綈
normalFormat.setWrap(true); // 鏄惁鎹㈣
// 鐢ㄤ簬甯︽湁formatting鐨凬umber瀵硅薄
WritableFont nf = new WritableFont(WritableFont
.createFont("Times New Roman"), charNormal);
// jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(
nf);
wcfN.setBorder(Border.ALL, BorderLineStyle.THIN); // 綰挎潯
wcfN.setVerticalAlignment(VerticalAlignment.CENTRE); // 鍨傜洿瀵歸綈
wcfN.setAlignment(Alignment.CENTRE);// 姘村鉤瀵歸綈
wcfN.setWrap(true); // 鏄惁鎹㈣
/**
* 娣誨姞鏍囬
*/
// 絎竴琛?br />
/** *********璁劇疆鍒楀姣忎釜瀛椾綋鍗燾harset涓?*************** */
ws.mergeCells(14, 0, 18, 0); // 鍚堝茍鍗曞厓鏍鹼紝
ws.mergeCells(10, 0, 13, 0); // 鍚堝茍鍗曞厓鏍鹼紝
ws.mergeCells(0, 0, 0, 1); // 鍚堝茍鍗曞厓鏍鹼紝搴忓彿
ws.setColumnView(0, 6); // 璁劇疆鍒楀,絎?鍒?br />
ws.mergeCells(1, 0, 1, 1); // 鍚堝茍鍗曞厓鏍鹼紝鍏皯韜喚璇佸彿
ws.setColumnView(1, 9); // 璁劇疆鍒楀,絎?鍒?br />
ws.mergeCells(2, 0, 2, 1); // 鍚堝茍鍗曞厓鏍鹼紝鐢?shù)鑴戝簭鍙?br />
ws.setColumnView(2, 6); // 璁劇疆鍒楀,絎?鍒?br />
ws.mergeCells(3, 0, 3, 1); // 鍚堝茍鍗曞厓鏍鹼紝鍥涢櫓濮撳悕
ws.setColumnView(3, 6); // 璁劇疆鍒楀,絎?鍒?br />
ws.mergeCells(4, 0, 4, 1); // 鍚堝茍鍗曞厓鏍鹼紝鍖葷枟濮撳悕
ws.setColumnView(4, 6); // 璁劇疆鍒楀,絎?鍒?br />
ws.mergeCells(5, 0, 5, 1); // 鍚堝茍鍗曞厓鏍鹼紝鍖葷枟淇濋櫓鎵嬪唽鍙?br />
ws.setColumnView(5, 9); // 璁劇疆鍒楀,絎?鍒?br />
ws.mergeCells(6, 0, 6, 1); // 鍚堝茍鍗曞厓鏍鹼紝鍥涢櫓緙磋垂浜哄憳綾誨埆
ws.setColumnView(6, 9); // 璁劇疆鍒楀,絎?鍒?br />
ws.mergeCells(7, 0, 7, 1); // 鍚堝茍鍗曞厓鏍鹼紝鍖葷枟緙磋垂浜哄憳綾誨埆
ws.setColumnView(7, 9); // 璁劇疆鍒楀,絎?鍒?br />
ws.mergeCells(8, 0, 8, 1); // 鍚堝茍鍗曞厓鏍鹼紝鍖葷枟鍙備繚浜哄憳綾誨埆
ws.setColumnView(8, 9); // 璁劇疆鍒楀,絎?鍒?br />
ws.mergeCells(9, 0, 9, 1); // 鍚堝茍鍗曞厓鏍鹼紝鍖葷枟鍙備繚鐘舵?br />
ws.setColumnView(9, 7); // 璁劇疆鍒楀,絎?0鍒?br />
ws.setColumnView(10, 6); // 璁劇疆鍒楀,絎?1鍒?br />
ws.setColumnView(11, 6); // 璁劇疆鍒楀,絎?2鍒?br />
ws.setColumnView(12, 6); // 璁劇疆鍒楀,絎?3鍒?br />
ws.setColumnView(13, 6); // 璁劇疆鍒楀,絎?4鍒?br />
ws.setColumnView(14, 6); // 璁劇疆鍒楀,絎?5鍒?br />
ws.setColumnView(15, 6); // 璁劇疆鍒楀,絎?6鍒?br />
ws.setColumnView(16, 6); // 璁劇疆鍒楀,絎?7鍒?br />
ws.setColumnView(17, 6); // 璁劇疆鍒楀,絎?8鍒?br />
ws.setColumnView(18, 6); // 璁劇疆鍒楀,絎?9鍒?br />
jxl.write.Label tit00 = new jxl.write.Label(0, 0, "搴忓彿", titleFormat);
ws.addCell(tit00);
jxl.write.Label tit10 = new jxl.write.Label(1, 0, "鍏皯韜喚璇佸彿",
titleFormat);
ws.addCell(tit10);
jxl.write.Label tit20 = new jxl.write.Label(2, 0, "鐢?shù)鑴戝簭鍙?,
titleFormat);
ws.addCell(tit20);
jxl.write.Label tit30 = new jxl.write.Label(3, 0, "鍥涢櫓濮撳悕",
titleFormat);
ws.addCell(tit30);
jxl.write.Label tit40 = new jxl.write.Label(4, 0, "鍖葷枟濮撳悕",
titleFormat);
ws.addCell(tit40);
jxl.write.Label tit50 = new jxl.write.Label(5, 0, "鍖葷枟淇濋櫓鎵嬪唽鍙?,
titleFormat);
ws.addCell(tit50);
jxl.write.Label tit60 = new jxl.write.Label(6, 0, "鍥涢櫓緙磋垂浜哄憳綾誨埆",
titleFormat);
ws.addCell(tit60);
jxl.write.Label tit70 = new jxl.write.Label(7, 0, "鍖葷枟緙磋垂浜哄憳綾誨埆",
titleFormat);
ws.addCell(tit70);
jxl.write.Label tit80 = new jxl.write.Label(8, 0, "鍖葷枟鍙備繚浜哄憳綾誨埆",
titleFormat);
ws.addCell(tit80);
jxl.write.Label tit90 = new jxl.write.Label(9, 0, "鍖葷枟鍙備繚鐘舵?,
titleFormat);
ws.addCell(tit90);
jxl.write.Label tit100 = new jxl.write.Label(10, 0, "鍥涢櫓緙磋垂鐘舵?,
titleFormat);
ws.addCell(tit100);
jxl.write.Label tit140 = new jxl.write.Label(14, 0, "緙磋垂鍩烘暟",
titleFormat);
ws.addCell(tit140);
// 絎簩琛?br />
jxl.write.Label tit101 = new jxl.write.Label(10, 1, "鍏昏?,
titleFormat);
ws.addCell(tit101);
jxl.write.Label tit111 = new jxl.write.Label(11, 1, "澶變笟",
titleFormat);
ws.addCell(tit111);
jxl.write.Label tit121 = new jxl.write.Label(12, 1, "宸ヤ激",
titleFormat);
ws.addCell(tit121);
jxl.write.Label tit131 = new jxl.write.Label(13, 1, "鐢熻偛",
titleFormat);
ws.addCell(tit131);
jxl.write.Label tit141 = new jxl.write.Label(14, 1, "鍏昏?,
titleFormat);
ws.addCell(tit141);
jxl.write.Label tit151 = new jxl.write.Label(15, 1, "澶變笟",
titleFormat);
ws.addCell(tit151);
jxl.write.Label tit161 = new jxl.write.Label(16, 1, "宸ヤ激",
titleFormat);
ws.addCell(tit161);
jxl.write.Label tit171 = new jxl.write.Label(17, 1, "鐢熻偛",
titleFormat);
ws.addCell(tit171);
jxl.write.Label tit181 = new jxl.write.Label(18, 1, "鍖葷枟",
titleFormat);
ws.addCell(tit181);
double yljs = 0;// 鍖葷枟鍩烘暟鍚堣
double yxjs = 0;// 鍏昏佸熀鏁板悎璁?br />
double syjs = 0;// 澶變笟鍩烘暟鍚堣
double sxjs = 0;// 鐢熻偛鍩烘暟鍚堣
double gsjs = 0;// 宸ヤ激鍩烘暟鍚堣
for (int i = 0; i < list.size(); i++) {
Grxx xx = (Grxx) list.get(i);
jxl.write.Label lab1 = new jxl.write.Label(0, i + 2, String
.valueOf(i + 1), wcfN);
ws.addCell(lab1);// 絎?鍒楋細(xì)搴忓彿
jxl.write.Label lab2 = new jxl.write.Label(1, i + 2, xx
.getBzhm(), wcfN);
ws.addCell(lab2);// 絎?鍒楋細(xì)鍏皯韜喚璇佸彿
jxl.write.Label lab3 = new jxl.write.Label(2, i + 2, "瀛楁涓嶅瓨鍦?,
wcfN);
ws.addCell(lab3);// 絎?鍒楋細(xì)鐢?shù)鑴戝簭鍙?br />
jxl.write.Label lab4 = new jxl.write.Label(3, i + 2,
xx.getXm(), normalFormat);
ws.addCell(lab4);// 絎?鍒楋細(xì)鍥涢櫓濮撳悕
jxl.write.Label lab5 = new jxl.write.Label(4, i + 2,
xx.getXm(), normalFormat);
ws.addCell(lab5);// 絎?鍒楋細(xì)鍖葷枟濮撳悕
jxl.write.Label lab6 = new jxl.write.Label(5, i + 2, xx
.getBxh(), wcfN);
ws.addCell(lab6);// 絎?鍒楋細(xì)鍖葷枟淇濋櫓鎵嬪唽鍙?br />
jxl.write.Label lab7 = new jxl.write.Label(6, i + 2, xx
.getBxh(), normalFormat);
ws.addCell(lab7);// 絎?鍒楋細(xì)鍥涢櫓緙磋垂浜哄憳綾誨埆
jxl.write.Label lab8 = new jxl.write.Label(7, i + 2, "瀛楁涓嶅瓨鍦?,
normalFormat);
ws.addCell(lab8);// 絎?鍒楋細(xì)鍖葷枟緙磋垂浜哄憳綾誨埆
jxl.write.Label lab9 = new jxl.write.Label(8, i + 2, "瀛楁涓嶅瓨鍦?,
normalFormat);
ws.addCell(lab9);// 絎?鍒楋細(xì)鍖葷枟鍙備繚浜哄憳綾誨埆
jxl.write.Label lab10 = new jxl.write.Label(9, i + 2, "瀛楁涓嶅瓨鍦?,
normalFormat);
ws.addCell(lab10);// 絎?0鍒楋細(xì)鍖葷枟鍙備繚鐘舵?br />
jxl.write.Label lab11 = new jxl.write.Label(10, i + 2, "瀛楁涓嶅瓨鍦?,
normalFormat);
ws.addCell(lab11);// 絎?1鍒楋細(xì)鍏昏佺即璐圭姸鎬?br />
jxl.write.Label lab12 = new jxl.write.Label(11, i + 2, "瀛楁涓嶅瓨鍦?,
normalFormat);
ws.addCell(lab12);// 絎?2鍒楋細(xì)澶變笟緙磋垂鐘舵?br />
jxl.write.Label lab13 = new jxl.write.Label(12, i + 2, "瀛楁涓嶅瓨鍦?,
normalFormat);
ws.addCell(lab13);// 絎?3鍒楋細(xì)宸ヤ激緙磋垂鐘舵?br />
jxl.write.Label lab14 = new jxl.write.Label(13, i + 2, "瀛楁涓嶅瓨鍦?,
normalFormat);
ws.addCell(lab14);// 絎?4鍒楋細(xì)鐢熻偛緙磋垂鐘舵?br />
jxl.write.Number lab15 = new jxl.write.Number(14, i + 2, xx
.getGrjs().getYxjfjs().doubleValue(), wcfN);
ws.addCell(lab15);// 絎?5鍒楋細(xì)鍏昏佺即璐瑰熀鏁?br />
yxjs += xx.getGrjs().getYxjfjs().doubleValue();
jxl.write.Number lab16 = new jxl.write.Number(15, i + 2, xx
.getGrjs().getSyjfjs().doubleValue(), wcfN);
ws.addCell(lab16);// 絎?6鍒楋細(xì)澶變笟緙磋垂鍩烘暟
syjs += xx.getGrjs().getSyjfjs().doubleValue();
jxl.write.Number lab17 = new jxl.write.Number(16, i + 2, xx
.getGrjs().getGsjfjs().doubleValue(), wcfN);
ws.addCell(lab17);// 絎?7鍒楋細(xì)宸ヤ激緙磋垂鍩烘暟
gsjs += xx.getGrjs().getGsjfjs().doubleValue();
jxl.write.Number lab18 = new jxl.write.Number(17, i + 2, xx
.getGrjs().getSxjfjs().doubleValue(), wcfN);
ws.addCell(lab18);// 絎?8鍒楋細(xì)鐢熻偛緙磋垂鍩烘暟
sxjs += xx.getGrjs().getSxjfjs().doubleValue();
jxl.write.Number lab19 = new jxl.write.Number(18, i + 2, xx
.getGrjs().getYljfjs().doubleValue(), wcfN);
ws.addCell(lab19);// 絎?9鍒楋細(xì)鍖葷枟緙磋垂鍩烘暟
yljs += xx.getGrjs().getYljfjs().doubleValue();
}
/**
* 鏈鍚庝竴琛屽悎璁?br />
*/
int end = list.size() + 2;
jxl.write.Label end0 = new jxl.write.Label(0, end, "鍚堣",
normalFormat);
ws.addCell(end0);
jxl.write.Label end1 = new jxl.write.Label(1, end, "--",
normalFormat);
ws.addCell(end1);
jxl.write.Label end2 = new jxl.write.Label(2, end, "--",
normalFormat);
ws.addCell(end2);
jxl.write.Label end3 = new jxl.write.Label(3, end, "--",
normalFormat);
ws.addCell(end3);
jxl.write.Label end4 = new jxl.write.Label(4, end, "--",
normalFormat);
ws.addCell(end4);
jxl.write.Label end5 = new jxl.write.Label(5, end, "--",
normalFormat);
ws.addCell(end5);
jxl.write.Label end6 = new jxl.write.Label(6, end, "--",
normalFormat);
ws.addCell(end6);
jxl.write.Label end7 = new jxl.write.Label(7, end, "--",
normalFormat);
ws.addCell(end7);
jxl.write.Label end8 = new jxl.write.Label(8, end, "--",
normalFormat);
ws.addCell(end8);
jxl.write.Label end9 = new jxl.write.Label(9, end, "--",
normalFormat);
ws.addCell(end9);
jxl.write.Label end10 = new jxl.write.Label(10, end, "--",
normalFormat);
ws.addCell(end10);
jxl.write.Label end11 = new jxl.write.Label(11, end, "--",
normalFormat);
ws.addCell(end11);
jxl.write.Label end12 = new jxl.write.Label(12, end, "--",
normalFormat);
ws.addCell(end12);
jxl.write.Label end13 = new jxl.write.Label(13, end, "--",
normalFormat);
ws.addCell(end13);
// 鍏昏?br />
jxl.write.Number end14 = new jxl.write.Number(14, end, yxjs, wcfN);
ws.addCell(end14);
// 澶變笟
jxl.write.Number end15 = new jxl.write.Number(15, end, syjs, wcfN);
ws.addCell(end15);
// 宸ヤ激
jxl.write.Number end16 = new jxl.write.Number(16, end, gsjs, wcfN);
ws.addCell(end16);
// 鐢熻偛
jxl.write.Number end17 = new jxl.write.Number(17, end, sxjs, wcfN);
ws.addCell(end17);
// 鍖葷枟
jxl.write.Number end18 = new jxl.write.Number(18, end, yljs, wcfN);
ws.addCell(end18);
// 鍐欏叆Exel宸ヤ綔琛?br />
wwb.write();
// 鍏抽棴Excel宸ヤ綔钖勫璞?br />
wwb.close();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
榪欎竴榪炴帴錛屽彂鐜癢ebMail鍙敮鎸乸op3/imap/smtp鐨刾rotocol錛岃屽gmail鐨刾op3 ssl/imap ssl/smtp ssl鐨勫畨鍏ㄨ繛鎺ラ兘涓嶆敮鎸侊紝浜庢槸濂嬪姏鍘諱慨鏀癸紝緇堜簬浠婂ぉ鎼炲畾浜嗐?/p>
鎺ョ潃涓轟簡嫻嬭瘯閭歡鐨勫鏍鋒э紝浠嶩otmail璐︽埛褰撲腑杞Щ浜嗕竴閮ㄥ垎閭歡榪涘叆gmail鐨処MAP Folder錛屽彂鐜拌嫳鍥介噾铻嶆椂鎶ユ棗涓嬬殑FT涓枃緗戝彂閫佺殑鏂伴椈閭歡錛屽眳鐒舵棤娉曞湪WebMail涓樉紺猴紝鍑虹幇Exception.
java.io.IOException: Unknown encoding: GB2312
at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:108)
at com.sun.mail.handlers.text_plain.getContent(text_plain.java:90)
at javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:775)
at javax.activation.DataHandler.getContent(DataHandler.java:522)
at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1395)
瑙夊緱寰堝鎬紝GB2312鑲畾灞炰簬Java璁よ瘑鐨別ncoding鍟婏紵 涓轟粈涔堜細(xì)鍑鴻繖縐嶄俊鎭憿錛?浠旂粏媯鏌ユ閭歡鐨勬簮鐮侊紝浠ュ強(qiáng)鏌ラ槄璧勬枡銆傚彂鐜版澶勬墍璇寸殑Encoding騫墮潪鏄疛ava Encoding銆?鑰屾槸閭歡鐨勪竴縐嶈嚜鏈夌殑緙栫爜銆?璇ユ柊闂婚偖浠剁殑緙栫爜
Date: Thu, 20 Aug 2009 09:09:16 +0800
MIME-Version: 1.0
Content-Type: text/html; charset=”gb2312″
Content-Transfer-Encoding: gb2312
Message-ID: 1250730614939471@200809NewsLetter
璇ラ偖浠剁殑鍙戦佺▼搴忔妸 text/html charset=gb2312鐨勭紪鐮侀儴鍒嗭紝褰撲綔Content-Transfer-Encoding鐨勭紪鐮侊紝鑰屽疄闄呬笂JavaMail璁よ瘑鐨凜ontent-Transfer-Encoding鍖呭惈濡備笅鍑犵錛?#8221;base64″, “quoted-printable”, “7bit”, “8bit”, “binary”, “uuencode”銆?/p>
鍘熷垯涓婇拡瀵硅繖縐嶉敊璇牸寮忕殑閭歡錛屽彲浠ヤ笉瀵瑰簲錛屼絾鏄冭檻鍒版湭鏉ュ彲鑳借繕鏈夊埆鐨勯棶棰橈紝浜庢槸鐩存帴鍘諱慨鏀?javax.mail.internet.MimePartDataSource.java錛?/p>
public InputStream getInputStream() throws IOException {
InputStream is;try {
if (part instanceof MimeBodyPart)
is = ((MimeBodyPart)part).getContentStream();
else if (part instanceof MimeMessage)
is = ((MimeMessage)part).getContentStream();
else
throw new MessagingException(“Unknown part”);
String encoding = restrictEncoding(part.getEncoding(), part);
if (encoding != null){
if(encoding.equalsIgnoreCase(“GB2312″) ||
encoding.equalsIgnoreCase(“GBK”)){
encoding = “7bit”;
}
return MimeUtility.decode(is, encoding);
}else{
return is;
}
} catch (MessagingException mex) {
throw new IOException(mex.getMessage());
}
}
緙栬瘧濂戒互鍚庯紝鏀懼洖 sun-javamail-1.4.2.jar錛屾墽琛屼竴閬嶅悗錛孫K浜嗐?/p>
濡傛灉宸茬粡閰嶇疆濂紺ATALINA_HOME,浠ュ強(qiáng)path鍙橀噺%CATALINA_HOME%\bin,鍙洿鎺ヨ繍琛屼笅鍒楀懡浠ゃ?br />
C:\> service.bat install C:\> service.bat remove
娌℃湁閰嶇疆鐜鍙橀噺鍒欒繘鍏omcat瀹夎鐩綍涓嬬殑bin鐩綍錛屽姞杞芥湇鍔ervice install tomcat6 鍗歌澆鏈嶅姟service remove tomcat6
浜屻乤pache鏈嶅姟瀹夎鍗歌澆
鎶奱pache娉ㄥ唽涓簑indows鏈嶅姟. 榪愯cmd鍛戒護(hù) 娉ㄥ唽apache涓簑indows鏈嶅姟錛歛pache瀹夎鐩綍\bin\httpd.exe -k install 鍗歌澆apache涓簑indows鏈嶅姟錛歛pache瀹夎鐩綍\bin\httpd.exe -k uninstall
涓夈丮YSQL鏈嶅姟瀹夎鍗歌澆
1.銆?瀹夎鏈嶅姟銆?nbsp;
鍦╓indows2000涓嬶紝瀹夎瀹屾垚鍚庯紝騫舵病鏈夋妸MySQL瀹夎鎴愭湇鍔★紝鎴戜滑蹇呴』鎵ц涓嬮潰鐨勮鍙ユ妸MySQL娉ㄥ唽涓烘湇鍔?mysql瀹夎鐩綍\bin\mysqld-nt –-install銆?nbsp;
Windows98涓嬫病鏈夋湇鍔$殑姒傚康錛屾墍浠ヤ笉鐢ㄥ畨瑁呮湇鍔°?
2銆?鍗歌澆鏈嶅姟
鍙互閫氳繃涓嬮潰鐨勫懡浠ゅ嵏杞組ySQL鏈嶅姟:mysql瀹夎鐩綍\bin\mysqld-nt –-remove銆?nbsp;
緇忚繃涓婇潰鐨勫畨瑁呭氨鍙互浣跨敤浜嗭紝鍙互鎶婃垜浠郴緇熺┖鐨勬暟鎹簱鍐呭緩鍒癿ySQL鏁版嵁鐩綍鍗沖彲錛岀己鐪佹暟鎹簱鐩綍鍦╥nstalldirmysqldata銆?nbsp;
3.銆?鍚姩鏈嶅姟
鍦╓indows2000涓嬶紝瀹夎鏈嶅姟鍚庡彲浠ュ惎鍔∕ySQL鏈嶅姟:net start mysql銆?nbsp;
鍦╓indows98涓嬶紝鍙互鐢ㄤ笅闈㈢殑鍛戒護(hù)鍚姩鏈嶅姟:c:\mysql\bin\mysqld錛屾湇鍔″惎鍔ㄥ悗鍦ㄥ悗鍙拌繍琛岋紝騫舵病鏈夌晫闈€?nbsp;
4.銆?鍋滄鏈嶅姟
鍦╓indows2000涓嬶紝鍙互閫氳繃涓嬮潰鐨勫懡浠ゅ仠姝ySQL鏈嶅姟:net stop mysql銆?nbsp;
鍦╓indows98涓嬶紝鍙互閫氳繃涓嬮潰鍛戒護(hù)鍋滄鏈嶅姟:C:> C:\mysql\bin\mysqladmin -u root shutdown
==========================================================================
1.鎶ラ敊:Can't find messagefile 'F:Program Filesmysqlshareenglisherrmsg.sys'
鍘熷洜:鍘熸潵鐨?.1鐗堟湰瀹夎鍦‵:Program Filesmysql鐩綍;鑰岀幇鍦ㄧ殑5.0鐗堟湰鍦‵:database鐩綍
瑙e喅鏂規(guī)硶:鍦╟:winnt鐩綍涓嬫壘鍒癿y.ini鏂囦歡錛屼慨鏀規(guī)垨鍒犻櫎涔?nbsp;
2.鎶ラ敊:ready for connections.
Version: '5.0.21-community-nt' socket: '' port: 3306 MySQL Community Edition (GPL)
鍘熷洜:socket涓虹┖錛屾病鏈夐厤緗甿ysql;鎴栬呯鍙e凡緇忓崰鐢?nbsp;
瑙e喅鏂規(guī)硶: mysqlbin鐩綍涓嬭繍琛孧ySQLInstanceConfig.exe閰嶇疆mysql瀹炰緥
3.濡備綍鏇存敼Win2000鏈嶅姟MySQL灞炴т腑鐨勫彲鎵ц鏂囦歡璺緞!
寮濮嬫椂鍦―鐩樿浜哅ySQL錛屽悗鏉ュ嵏杞藉悗錛屾牸寮忓寲D鐩橈紝鍐嶆瀹夎錛岃礬寰勪笌鍘熻礬寰勪笉鍚岋紝涓嶈兘閫氳繃“net start mysql”鍚姩銆傛煡鐪媤in2000鏈嶅姟涓璏Ysql鐨勫睘鎬э紝鍙墽琛屾枃浠惰礬寰勫湪浣嶄簬D鐩樸傜幇鍦ㄦ庝箞鏍鋒洿鏀癸紝鎴栧惎鍔∕ysql?
娉ㄥ唽琛ㄩ噷HKEY_LOCAL_MECHINE---SYSTEM ---CurrentControlSet閲?nbsp;
鍚姩MYSQL鏈嶅姟鏃跺嚭閿欑殑鍑犵瑙e喅鏂規(guī)硶
1.瀹夎MYSQL鍚庢洿鏀逛簡ROOT鐨勫瘑鐮佸悗鐢╪et startmysql鍚姩鏃舵垜灝遍亣鍒頒簡榪欐牱鐨勯棶棰?浣跨敤浠ヤ笅鍛戒護(hù)鍚巆:mysqlbinmysqladmin-u root -p shutdown鍐峮et start mysql灝辨病鏈夎繖涓敊璇彁紺轟簡!
2.MySQL鐨?067閿欒
Q:鎴戠殑Mysql紕板埌浜?1067 閿欒
閿欒淇℃伅涓?
A:鍦ㄦ垜鐨勬満涓婄殑瑙e喅鍔炴硶鏄?
淇敼%windir%my.ini錛屽鍔?nbsp;
3.宸茬粡寮勫ソ浜?!!
濂藉儚鏄繖鏍?#8230;…
mysql_install_db鑴氭湰鍙槸鍦ㄥ垵嬈″畨瑁呮椂鎵嶉渶瑕佽繍琛屼竴嬈?涔嬪悗灝變笉鐢ㄥ啀榪愯浜?涓嶇煡閬撴槸涓嶆槸榪欎箞鍥炰簨.鎴戞妸mysql.server鎷瘋礉鑷?etc/rc.d/init.d/涓?榪愯chkconfig mysql.server,鑷蟲mysql鏈嶅姟鍣ㄦ瘡嬈″紑鏈鴻嚜鍔ㄥ惎鍔?鍙璁劇疆濂絇ATH,鍦ㄥ懡浠よ涓婅緭鍏ysql灝變竴鍒囨悶瀹?
鍩轟簬鏈嶅姟妯″紡鐨勫弬鏁拌皟鏁?br />
鍩轟簬鏈嶅姟妯″紡淇敼tomcat\bin鐩綍涓嬬殑catalina.bat鏂囦歡錛岃皟鏁村弬鏁幫紙濡傦細(xì)鍐呭瓨錛夋槸涓嶈搗浣滅敤鐨勶紝鎴戜滑鍙互閲囩敤浠ヤ笅鏂瑰紡(浠omcat5涓轟緥)錛?br />
1銆佽繍琛宑md錛屼粠鎺у埗鍙拌繘鍏omcat鐨刡in鐩綍
2銆佽繍琛宼omcat5w //MS//鏈嶅姟鍚?/u>錛寃indows鐨勫彸涓嬭鍑虹幇鎵樼洏鍥炬爣
錛堟湇鍔″悕鏄叿浣撶殑tomcat鏈嶅姟錛?br />
3銆佽繘鍏ヨ皟鏁村弬鏁幫紝淇濆瓨
4銆侀噸鏂板惎鍔╰omcat鏈嶅姟
璇曞浘鍦╦sp欏甸潰閲屽寘鍚獳ction錛?/p>
<c:import url="/friendlink.do?method=list"></c:import>
<jsp:include flush="true" page="friendlink.do"></jsp:include>
緇撴灉鍑虹幇浠ヤ笂閿欒銆?/p>
鎯蟲兂鍏跺疄涔熷緢瀹規(guī)槗鐞嗚В錛孉ction鐨勮繃紼嬫湰韜氨鏄姹傝漿鍙戯紝鑰屾鏃跺鐞嗘湭瀹屾垚欏甸潰鍗村凡杈撳嚭銆?/p>
瑙e喅鍔炴硶涓錛氫嬌鐢╞ean:include
<bean:include id="friendlink" page="/friendlink.do?method=list"/>
<bean:write name="friendlink" filter="false"/>
鍙互榪欐牱鐞嗚В錛屽氨鏄疉ction澶勭悊鐨勭粨鏋滆淇濆瓨鍒癰ean閲屼簡錛岃繖閲屽彧鏄緭鍑篵ean閲屽寘鍚殑鍐呭錛屾病鏈夋秹鍙?qiáng)椤甸潰铦{鍙戝拰瀹氬悜闂錛屾墍浠ヤ笉浼?xì)鏈夊紓甯搞?/p>
瑙e喅鍔炴硶浜岋細(xì)浣跨敤tiles
tiles閲屽彲浠ョ洿鎺ュ寘鍚獳ction錛岄厤緗柟娉曞拰鍖呭惈jsp鏃朵竴鏍楓?/p>
瑙e喅鍔炴硶涓夛細(xì)浣跨敤Ajax
Ajax灝辨槸琚璁℃潵浠庡悗鍙板紓姝ュ彂閫佽姹傚拰鎺ユ敹澶勭悊緇撴灉錛屾墍浠ュ繀瀹氳兘婊¤凍榪欑闇姹傘?/p>
瑙e喅鍔炴硶鍥涳細(xì)浣跨敤TAG
鏍囩鐨勭敤娉曞氨涓嶇敤璇翠簡錛岀浉褰撲簬涓嶇敤Action鑰屽湪欏甸潰宓屽叆Java浠g爜銆?/p>
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/prufeng/archive/2009/05/24/4213218.aspx
JDOM 鏄竴縐嶄嬌鐢?XML 鐨勭嫭鐗?Java 宸ュ叿鍖咃紝鐢ㄤ簬蹇熷紑鍙?XML 搴旂敤紼嬪簭銆傚畠鐨勮璁″寘鍚?Java 璇█鐨勮娉曚箖鑷寵涔夈備絾鏄畠鏄惁姣旂幇鏈夌殑 -- 鏇存爣鍑嗙殑 -- XML APL 濂藉憿錛熷綋鎴戜滑鐪嬭繃涓浜涚ず渚嬪茍璇存槑榪欎釜嫻佽鐨勫紑鏀炬簮浠g爜欏圭洰鐨勮璁$洰鏍囧悗錛屾?zhèn)ㄨ嚜宸辨潵鍒ゆ柇鍚с傛渶榪戣繖涓紑鏀炬簮浠g爜欏圭洰宸茶姝e紡鎺ュ彈鎴愪負(fù) Java 瑙勮寖瑕佹眰銆?/blockquote>浣滀負(fù)寮鍙戜漢鍛橈紝鎮(zhèn)ㄥ彲鑳藉惉璇磋繃 80-20 瑙勫垯錛屽湪鍏跺畠棰嗗煙琚О涓?Pareto 娉曞垯錛氫竴縐嶈繃紼嬫垨鏂規(guī)硶鑳介傚簲鎵鏈夊彲鑳芥儏鍐電殑 80%錛屽彟澶栫殑 20% 鍒欓渶瑕佹牴鎹叿浣撴儏鍐墊潵澶勭悊銆傝蔣浠跺紑鍙戠殑蹇呯劧緇撴灉鏄細(xì)瀵逛簬寮鍙戜漢鍛樿岃█錛屾湁浜嗙粰瀹氱殑鎶鏈悗灝辮兘闈炲父瀹規(guī)槗鍦板畬鎴愬彲鑳借鍋氱殑宸ヤ綔鐨?80%銆?/p>
褰撶劧錛岃蔣浠朵駭鍝佸拰鏍囧噯騫朵笉鎬繪槸鏍規(guī)嵁 80-20 瑙勫垯鍙戝睍鐨勩傜壒鍒殑錛孞ava XML 鐨勭己闄峰氨鏄繖鏉¤鍒欑殑涓涓緥澶栥侸ava 鐨勭紪紼嬩笘鐣屾嫢鏈夊緢澶氱殑 API -- 涓浜涙槸鑷繁寮鍙戠殑錛屼竴浜涙槸鐢卞嚑涓ぇ鍏徃寮鍙戝茍琚埗瀹氫負(fù)鏍囧噯鐨?-- 浠栦滑鎻愪緵浜嗚В鍐崇壒孌?XML 浠誨姟鐨勬垚鐔熻В鍐蟲柟妗堛備綔涓?XML 鏅亶鎬х殑璇佹槑錛屾瘡涓柊浠誨姟閮藉瓨鍦ㄧ潃涓縐嶆柊鎶鏈紝浣嗗浣曞皢瀹冧滑緇撳悎鍦ㄤ竴璧鳳紝鍙堝浣曞鎵句竴縐嶅悎閫傜殑宸ュ叿鍘誨畬鎴愬繀欏婚噸澶嶅仛鐨勪換鍔′腑鐨?80% -- 鍒╃敤 Java 璇█鐨勭洿瑙傛槧璞$殑鍩烘湰 XML 鏍?wèi)鎿嶄綔锛烰DOM 姝eソ鏄敤鏉ヨВ鍐充笂榪伴棶棰樼殑涓涓?XML API銆?/p>
鍦ㄨ澶氭柟闈紝Java 璇█宸插彉鎴愪緵 XML 閫夋嫨鐨勪竴縐嶇紪紼嬭璦銆傜敱浜?Apache 杞歡鍩洪噾浼?xì)鍜?IBM alphaWorks 鎵鍋氱殑寮鍒涙у伐浣滐紝鐜板湪宸叉湁瀹屾暣鐨勫伐鍏烽摼鐢ㄤ簬鍒涘緩錛屾搷浣滐紝浼犻佹枃妗e拰瀵?XML 鏂囨。榪涜璇硶鍒嗘瀽銆?/p>
浣嗘槸錛岃櫧鐒惰澶?Java 寮鍙戜漢鍛樻瘡澶╅兘鍦ㄤ嬌鐢?XML錛孲un 鍗村湪灝?XML 鏁村悎榪?Java 騫沖彴鏂歸潰钀藉悗浜嗐傚洜涓哄湪 XML 鎴愪負(fù)浠庡晢瀹跺鍟嗗闆嗘垚鍒?Web 绔欑偣鍐呭嫻佹按鍖栫瓑鏂歸潰鐨勫叧閿妧鏈箣鍓嶏紝Java 2 騫沖彴灝卞凡緇忛潪甯告祦琛屼簡銆係un 宸茬粡浣跨敤 JSR 榪囩▼浣夸箣鎴愪負(fù)鐜板瓨 XML API 鐨勯薊紲栵紝榪欎竴鐐瑰凡琚箍娉涙帴鍙椼傜洰鍓嶆渶鏄捐憲鐨勬槸鍔犲叆浜?JAXP 錛堢敤浜?XML 璇硶鍒嗘瀽鐨?Java API錛夛紝鍏朵腑鍖呭惈浜嗕笁涓蔣浠跺寘錛?/p>
org.w3c.dom
錛學(xué)3C 鎺ㄨ崘鐨勭敤浜?XML 鏍囧噯瑙勫垝鏂囨。瀵硅薄妯″瀷鐨?Java 宸ュ叿org.xml.sax
錛岀敤浜庡 XML 榪涜璇硶鍒嗘瀽鐨勪簨浠墮┍鍔ㄧ殑綆鍗?APIjavax.xml.parsers
錛屽伐鍘傚寲宸ュ叿錛屽厑璁稿簲鐢ㄧ▼搴忓紑鍙戜漢鍛樿幏寰楀茍閰嶇疆鐗規(guī)畩鐨勮娉曞垎鏋愬櫒宸ュ叿灝界瀵逛簬 Java 寮鍙戜漢鍛樿岃█錛屾湁浜嗚繖浜涜蔣浠跺寘鏄歡濂戒簨錛屼絾瀹冧粎浠呬唬琛ㄨ幏寰椾簡鐜版湁 API 鏍囧噯鐨勬寮忚鍙屽凡錛屽茍娌℃湁鍦ㄦ彁渚涗竴嫻佺殑 Java-XML 浜掓搷浣滄ф柟闈㈠彇寰椾簡宸ㄥぇ椋炶穬銆傛牳蹇?Java 騫沖彴鎵緙轟箯鐨勬槸灝?XML 鏂囨。浣滀負(fù) Java 瀵硅薄鎿嶄綔鐨勭洿瑙傛帴鍙c?/p>
榪涘叆 JDOM銆侸DOM 鏄袱浣嶈憲鍚嶇殑 Java 寮鍙戜漢鍛樺吋浣滆咃紝Brett Mclaughlin 鍜?Jason Hunter 鐨勫垱浣滄垚鏋滐紝 2000 騫村垵鍦ㄧ被浼間簬 Apache 鍗忚鐨勮鍙笅錛孞DOM 浣滀負(fù)涓涓紑鏀炬簮浠g爜欏圭洰姝e紡寮濮嬬爺鍙戯紝JDOM 浣滀負(fù)涓涓紑鏀炬簮浠g爜欏圭洰姝e紡寮濮嬩簡銆傚畠宸叉垚闀夸負(fù)鍖呭惈鏉ヨ嚜騫挎硾鐨?Java 寮鍙戜漢鍛樼殑鎶曠ǹ銆侀泦涓弽棣堝強(qiáng)閿欒淇鐨勭郴緇燂紝騫惰嚧鍔涗簬寤虹珛涓涓畬鏁寸殑鍩轟簬 Java 騫沖彴鐨勮В鍐蟲柟妗堬紝閫氳繃 Java 浠g爜鏉ヨ闂佹搷浣滃茍杈撳嚭 XML 鏁版嵁銆?/p>
鍥為〉棣?/strong>
JDOM 鑳藉鏇挎崲
org.w3c.dom
杞歡鍖呮潵鏈夎鍒掑湴鎿嶄綔 XML 鏂囨。銆傚畠騫朵笉鏄竴涓畝鍗曠殑鏇夸唬鍝侊紝瀹為檯涓?JDOM 鍜?DOM 鑳藉鎰夊揩鍦板茍瀛樸傚彟澶栵紝灝界瀹冩彁渚涚殑綾葷殑灝佽浠庨厤緗拰榪愯鍒嗘瀽鍣ㄦ墽琛屼腑鍒嗘媴浜嗗ぇ閲忓伐浣滐紝浣嗗畠涓嶈礋璐f牴鎹枃鏈緭鍏ユ潵瀵?XML 榪涜璇硶鍒嗘瀽銆侸DOM 寤虹珛鍦ㄧ幇鏈夌殑 API 鐨勮兘鍔涗箣涓婏紝姝e欏圭洰緗戦〉鎵琛ㄨ堪鐨?#8220;涓涓洿濂界殑鎹曢紶鍣?#8221;銆?瑕佺悊瑙i渶瑕佸鐢?API 鐨勫師鍥狅紝灝辮鑰冭檻 W3C DOM 璁捐鐨勫眬闄愭э細(xì)
- 璇█鐙珛銆?/strong>DOM 騫朵笉鏄敤浜轟滑蹇冪洰涓殑 Java 璇█璁捐鐨勩傝櫧鐒惰繖縐嶆柟娉曚繚鐣欎簡鍦ㄤ笉鍚岃璦涓潪甯哥浉浼肩殑 API錛屽畠涔熶嬌閭d簺涔?fàn)鎯?Java 璇█鐨勭▼搴忓憳鎰熷埌鏇撮夯鐑︺備緥濡傦細(xì)Java 璇█鍐呭緩浜嗕竴縐?
String
綾伙紝鑰?DOM 鍒欒鑼冨畾涔変簡鑷繁鐨?Text
綾匯?
- 涓ユ牸鐨勫眰嬈$粨鏋勩?/strong>DOM API 鐩存帴娌胯浜?XML 瑙勮寖銆傚湪 XML 涓紝姣忎歡涓滆タ閮芥槸涓涓粨鐐癸紝鍥犳鎮(zhèn)ㄨ兘鍦?DOM 涓壘鍒頒竴涓嚑涔庢瘡浠朵笢瑗塊兘鍙互鎵╁睍鐨勫熀浜?
Node
鐨勬帴鍙e拰榪斿洖Node
鐨勪竴緋誨垪鏂規(guī)硶銆傚氨澶氭佹х殑瑙傜偣鏉ヨ錛屽畠鏄紭縐鐨勶紝浣嗛壌浜庡涓婅В閲婏紝瀹冨湪 Java 璇█涓殑搴旂敤鏄洶闅捐屼笖涓嶄究鐨勶紝鍏朵腑浠?Node
鍚戝彾綾誨瀷浣滄樉寮忎笅鎷変細(xì)瀵艱嚧浠g爜鐨勫啑闀垮拰闅句互鐞嗚В銆?
- 鎺ュ彛椹卞姩銆?/strong>鍏叡 DOM API 浠呯敱鎺ュ彛緇勬垚錛?
Exception
綾繪槸涓涓緥澶栵紝浣嗘伆鎭拌凍澶熶簡錛夈倃3c 瀵規(guī)彁渚涘疄鐜板茍涓嶆劅鍏磋叮錛屽畠鍙瀹氫箟鎺ュ彛錛堟瘮杈冩湁鎰忎箟錛夋劅鍏磋叮銆備絾瀹冧篃鎰忓懗鐫浣滀負(fù) Java 紼嬪簭鍛樹嬌鐢?API 鍦ㄥ垱寤?XML 瀵硅薄鏃跺鍔犱簡鍒嗘暎紼嬪害錛屽洜涓?w3c 鏍囧噯澶ч噺浣跨敤宸ュ巶鍖栫殑綾誨拰綾諱技鐨勭伒媧葷殑浣嗕笉鐩存帴鐨勬ā寮忋傚湪鏌愪簺搴旂敤涓紝XML 鏂囨。鏄粎鐢辮娉曞垎鏋愬櫒寤虹珛鐨勶紝鑰屼粠涓嶄細(xì)鐢卞簲鐢ㄧ▼搴忕駭浠g爜寤虹珛錛岃繖鏄笉鐩稿叧鐨勩備絾鏄紝闅忕潃 XML 鏇村箍娉涚殑浣跨敤錛屽茍涓嶆槸鎵鏈夐棶棰橀兘緇х畫闇瑕佺敱璇硶鍒嗘瀽鍣ㄦ潵椹卞姩銆傚簲鐢ㄧ▼搴忕殑寮鍙戜漢鍛橀渶瑕佷竴涓洿鏂逛究鐨勬柟娉曟湁璁″垝鍦版瀯閫?XML 瀵硅薄銆?瀵逛簬紼嬪簭鍛橈紝榪欎簺綰︽潫鎰忓懗鐫搴炲ぇ錛堝湪鍐呭瓨鍗犵敤鍜屾帴鍙eぇ灝忔柟闈級鐨勫拰闅炬帉鎻$殑 API錛屽涔?fàn)鍜屼娇鐢ㄩ兘寰堥毦銆傜浉鍙嶏紝JDOM 鏄綔涓轟竴縐嶈交閲忕駭 API 琚埗瀹氱殑錛屾渶涓昏鐨勬槸瀹冩槸浠?Java 涓轟腑蹇冪殑銆傚畠鍦ㄩ伒寰?DOM 涓昏瑙勫垯鐨勫熀紜涓婇櫎鍘諱簡涓婅堪緙虹偣錛?/p>
- JDOM 鏄?Java 騫沖彴涓撶敤鐨勩?/strong>鍙鏈夊彲鑳斤紝API 閮戒嬌鐢?Java 璇█鐨勫唴寤?
String
鏀寔錛屽洜姝ゆ枃鏈間篃閫傜敤浜?String
銆傚畠榪樺彲鍒╃敤 Java 2 騫沖彴鐨勭被闆嗭紝濡?List
鍜?Iterator
錛岀粰紼嬪簭鍛樻彁渚涗簡涓涓赴瀵岀殑騫朵笖鍜?Java 璇█綾諱技鐨勭幆澧冦?
- 娌℃湁灞傛鎬с?/strong>鍦?JDOM 涓紝XML 鍏冪礌灝辨槸
Element
鐨勫疄渚嬶紝XML 灞炴у氨鏄?Attribute
鐨勫疄渚嬶紝XML 鏂囨。鏈韓灝辨槸Document
鐨勫疄渚嬨傜敱浜庡湪 XML 涓墍鏈夎繖浜涢兘浠h〃浜嗕笉鍚岀殑姒傚康錛屽洜姝ゅ畠浠繪槸浣滀負(fù)鑷繁鐨勭被鍨嬭寮曠敤錛岃屼笉鏄綔涓轟竴涓惈緋婄殑“緇撶偣”銆?
- 綾婚┍鍔ㄣ?/strong>鍥犱負(fù) JDOM 瀵硅薄灝辨槸鍍?
Document
銆?Element
鍜?Attribute
榪欎簺綾葷殑鐩存帴瀹炰緥錛屽洜姝ゅ垱寤轟竴涓柊 JDOM 瀵硅薄灝卞鍦?Java 璇█涓嬌鐢?new
鎿嶄綔絎︿竴鏍峰鏄撱傚畠榪樻剰鍛崇潃涓嶉渶瑕佽繘琛屽伐鍘傚寲鎺ュ彛閰嶇疆 -- JDOM 鐨勪嬌鐢ㄦ槸鐩存埅浜嗗綋鐨勩?
鍥為〉棣?/strong>
鐪嬶紝娌℃湁
Node
錛氬緩绔嬪拰鎿嶄綔 JDOM 鏂囨。JDOM 浣跨敤鏍囧噯鐨?Java 緙栫爜妯″紡銆傚彧瑕佹湁鍙兘錛屽畠浣跨敤 Java
new
鎿嶄綔絎﹁屼笉鐢ㄥ鏉傜殑宸ュ巶鍖栨ā寮忥紝浣垮璞℃搷浣滃嵆渚垮浜庡垵瀛︾敤鎴蜂篃寰堟柟渚褲備緥濡傦紝璁╂垜浠湅涓涓嬪浣曢殢渚夸嬌鐢?JDOM 寤虹珛涓涓畝鍗曠殑 XML 鏂囨。銆傛垜浠皢瑕佸緩绔嬬殑緇撴瀯濡傛竻鍗?1 鎵紺恒傦紙浠?鍙傝冭祫鏂?/a>涓婂彲涓嬭澆鍏充簬鏈枃鐨勫畬鏁翠唬鐮侊級
娓呭崟 1. 寤虹珛 XML 鏂囨。鏍鋒湰
<?xml version="1.0" encoding="UTF-8"?> <car vin="123fhg5869705iop90"> <!--Description of a car--> <make>Toyota</make> <model>Celica</model> <year>1997</year> <color>green</color> <license state="CA">1ABC234</license> </car>
娉ㄦ剰錛氭垜浠皢寤虹珛 紺轟緥鏂囨。錛屽湪涓嬮潰鐨勬竻鍗?2 鍒版竻鍗?7 涓湁璇︾粏鎻忚堪銆?
寮濮嬶紝璁╂垜浠厛鍒涘緩涓涓牴鍏冪礌錛屽茍灝嗗叾娣誨姞鍒版枃妗d腑錛?/p>
娓呭崟 2. 鍒涘緩涓涓?Document
Element carElement = new Element("car"); Document myDocument = new Document(carElement);
榪欎竴姝ュ垱寤轟竴涓柊
org.jdom.Element
錛屽茍灝嗗叾浣滀負(fù)org.jdom.Document
myDocument
鐨勬牴鍏冪礌銆傦紙濡傛灉鎮(zhèn)ㄤ嬌鐢?鍙傝冭祫鏂?/a>涓彁渚涚殑鏍鋒湰浠g爜錛岃鍔″繀瀵煎叆org.jdom.*
銆傦級鍥犱負(fù)涓涓?XML 鏂囨。蹇呴』涓鐩存湁涓涓敮涓鐨勬牴鍏冪礌錛屾墍浠?Document
灝?Element
鏀懼湪瀹冪殑鏋勯犲櫒涓?涓嬩竴姝ワ紝娣誨姞
vin
灞炴э細(xì)
娓呭崟 3. 娣誨姞涓涓?Attribute
carElement.addAttribute(new Attribute("vin", "123fhg5869705iop90"));
娣誨姞鍏冪礌涔熸槸寰堢畝鍗曠殑銆傝繖閲屾垜浠坊鍔?
make
鍏冪礌錛?
娓呭崟 4. 鍏冪礌鍜屽瓙鍏冪礌
Element make = new Element("make"); make.addContent("Toyota"); carElement.addContent(make);
鐢變簬
Element
鐨?addContent
鏂規(guī)硶榪斿洖Element
錛屾垜浠篃鍙互榪欐牱鍐欙細(xì)
娓呭崟 5. 鐢ㄧ畝媧佸艦寮忔坊鍔犲厓绱?/strong>
carElement.addContent(new Element("make").addContent("Toyota"));
榪欎袱涓鍙ュ畬鎴愪簡鐩稿悓鐨勫伐浣溿傛湁浜涗漢璁や負(fù)絎竴涓ず渚嬪彲璇繪ф洿濂斤紝浣嗘槸濡傛灉鎮(zhèn)ㄤ竴嬈″緩绔嬭澶氬厓绱狅紝鎮(zhèn)ㄤ細(xì)瑙夊緱絎簩涓ず渚嬪彲璇繪ф洿濂姐傝瀹屾垚鏋勫緩鏂囨。錛?/p>
娓呭崟 6. 娣誨姞鍏朵綑鐨勫厓绱?/strong>
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"));
鎮(zhèn)ㄤ細(xì)娉ㄦ剰鍒板浜?
license
鍏冪礌錛屾垜浠笉浣嗘坊鍔犱簡鍏冪礌鐨勫唴瀹癸紝榪樹負(fù)鍏舵坊鍔犱簡涓涓睘鎬э紝琛ㄦ槑璁稿彲宸茶鍙戝嚭浜嗚繖涓姸鎬併傝繖鏄洜涓?Element
鐨?addContent
鏂規(guī)硶鎬繪槸榪斿洖Element
鏈韓錛岃屼笉鏄竴涓棤鏁堢殑澹版槑銆?鐢ㄥ悓鏍風(fēng)殑鏂規(guī)硶娣誨姞娉ㄩ噴閮ㄥ垎鎴栧叾瀹冩爣鍑?XML 綾誨瀷錛?/p>
娓呭崟 7. 娣誨姞涓鏉℃敞閲?/strong>
carElement.addContent(new Comment("Description of a car"));
鎿嶄綔鏂囨。涔熸槸鐢ㄧ被浼兼柟寮忋備緥濡傦紝瑕佸紩鐢?
year
鍏冪礌錛屾垜浠嬌鐢?Element
鐨?getChild
鏂規(guī)硶錛?
娓呭崟 8. 璁塊棶瀛愬厓绱?/strong>
Element yearElement = carElement.getChild("year");
璇ヨ鍙ュ疄闄呬笂灝嗚繑鍥炵涓涓厓绱犲悕涓?
year
鐨勫瓙Element
銆?濡傛灉娌℃湁year
鍏冪礌錛屽垯璋冪敤榪斿洖涓涓┖鍊箋傛敞鎰忥紝鎴戜滑涓嶅繀鍥炴函鏉ヨ嚜浠諱綍綾諱技浜?DOMNode
鎺ュ彛鐨勮繑鍥炲?--Element
鐨勫瓙鍏冪礌灝辨槸Element
銆傜敤綾諱技鐨勬柟寮忥紝鎴戜滑鍙妸year
鍏冪礌浠庢枃妗d腑闄ゅ幓錛?
娓呭崟 9. 闄ゅ幓瀛愬厓绱?/strong>
boolean removed = carElement.removeChild("year");
榪欐璋冪敤灝嗗彧闄ゅ幓
year
鍏冪礌錛涙枃妗g殑鍏朵綑閮ㄥ垎淇濇寔涓嶅彉銆?鍒扮洰鍓嶄負(fù)姝紝鎴戜滑宸茬粡娑電洊浜嗘枃妗g殑鐢熸垚鍜屾搷浣溿傝灝嗗畬鎴愮殑鏂囨。杈撳嚭鑷蟲帶鍒跺彴錛屽彲浣跨敤 JDOM 鐨?
XMLOutputter
綾伙細(xì)
娓呭崟 10. 灝?JDOM 杞寲涓?XML 鏂囨湰
try { XMLOutputter outputter = new XMLOutputter(" ", true); outputter.output(myDocument, System.out); } catch (java.io.IOException e) { e.printStackTrace(); }
XMLOutputter
鏈夊嚑涓牸寮忛夐」銆傝繖閲屾垜浠凡鎸囧畾甯屾湜瀛愬厓绱犱粠鐖跺厓绱犵緝榪涗袱涓┖鏍鹼紝騫朵笖甯屾湜鍏冪礌闂存湁絀鴻銆?XMLOutputter
鍙緭鍑哄埌Writer
鎴?OutputStream
銆備負(fù)杈撳嚭鍒版枃浠訛紝鎴戜滑鍙互綆鍗曞湴灝嗚緭鍑鴻綆鍖栦負(fù)錛?
娓呭崟 11. 浣跨敤FileWriter
杈撳嚭 XML
FileWriter writer = new FileWriter("/some/directory/myFile.xml"); outputter.output(myDocument, writer); writer.close();
鍥為〉棣?/strong>
涓庡叾瀹冩柟娉曡壇濂藉崗浣滐細(xì)鍜岀幇鏈夌殑 XML 宸ュ叿榪涜浜掓搷浣?/span>
JDOM 鐨勪竴涓湁瓚g壒寰佹槸鍜屽叾瀹?API 鏈変簰鎿嶄綔鎬с備嬌鐢?JDOM錛屼笉浠呰兘鎶婃枃妗h緭鍑哄埌
Stream
鎴?Reader
錛岃繕鍙皢鏂囨。浣滀負(fù) SAXEvent Stream
鎴栦綔涓?DOMDocument
銆傝繖縐嶇伒媧繪у厑璁?JDOM 鑳藉湪澶氱鐜涓嬩嬌鐢ㄦ垨琚坊鍔犲埌宸茬粡鍦ㄤ嬌鐢ㄥ彟涓縐嶆柟娉曞鐞?XML 鐨勭郴緇熶腑鍘匯傛濡傛垜浠湪鍚庨潰涓涓ず渚嬩腑鎵鐪嬪埌鐨勶紝瀹冭繕鍏佽 JDOM 浣跨敤鍏跺畠鐨勮繕涓嶈兘璇嗗埆 JDOM 鐨勬暟鎹粨鏋勭殑 XML 宸ュ叿銆?JDOM 鐨勫彟涓涓敤澶勬槸瀹冭兘澶熻鍙栧茍鎿嶄綔鐜版湁鐨?XML 鏁版嵁銆備嬌鐢?
org.jdom.input
涓殑涓涓被鍙互闃呰緇撴瀯寰堣鑼冪殑 XML 鏂囦歡銆傚湪榪欎釜紺轟緥涓垜浠嬌鐢?SAXBuilder
錛?
娓呭崟 12. 浣跨敤SAXBuilder
瀵?XML 鏂囦歡榪涜璇硶鍒嗘瀽
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(); }
鎮(zhèn)ㄥ彲浠ョ敤娓呭崟 2 鍒版竻鍗?7 涓樉紺虹殑鏂規(guī)硶鏉ユ搷浣滈氳繃榪欎釜榪囩▼寤虹珛鐨勬枃妗c?/p>
JDOM 鐨勫彟涓涓疄鐢ㄥ簲鐢ㄧ▼搴忓皢鍏朵笌 Apache 鐨?Xalan 浜у搧緇撳悎鍦ㄤ竴璧鳳紙璇峰弬闃?鍙傝冭祫鏂?/a>錛夈備嬌鐢ㄤ笂闈㈢殑姹借濺紺轟緥錛屾垜浠皢涓哄湪綰挎苯杞︾粡閿鍟嗗緩绔嬩竴涓?Web 欏甸潰錛屾樉紺虹壒瀹氭苯杞︾殑璇︾粏淇℃伅銆傞鍏堬紝鍋囪鎴戜滑涓婇潰寤虹珛鐨勬枃妗f樉紺烘垜浠噯澶囧憟鐜扮粰鐢ㄦ埛鐨勬苯杞︾殑淇℃伅銆備笅涓姝ワ紝鎴戜滑灝嗘妸榪欎釜 JDOM
Document
涓庝竴涓?XSL 鏍峰紡琛ㄧ粨鍚堣搗鏉ュ茍鎶?HTML 鏍煎紡鐨勭粨鏋滆緭鍑哄埌 servlet 鐨?OutputStream
涓婁互渚垮湪鐢ㄦ埛鐨勬祻瑙堝櫒涓樉紺恒?鍦ㄦ湰渚嬩腑錛屾垜浠噯澶囦嬌鐢ㄧ殑 XSL 鏍峰紡琛ㄨ縐頒負(fù)
car.xsl
錛?
娓呭崟 13. 鐢ㄤ簬灝嗘苯杞﹁褰曡漿鎹負(fù) HTML 鐨?XSL 鏂囨。
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/car"> <html> <head> <title><xsl:value-of select="make"/> <xsl:value-of select="model"/> </head> <body> <h1><xsl:value-of select="make"/></h1><br /> <h2><xsl:value-of select="model"/></h2><br /> <table border="0"> <tr><td>VIN:</td><td><xsl:value-of select="@vin"/></td></tr> <tr><td>Year:</td><td><xsl:value-of select="year"/></td></tr> <tr><td>Color:</td><td><xsl:value-of select="color"/></td></tr> </table> </body> </html> </xsl:template> </xsl:stylesheet>
鐜板湪鎴戜滑灝嗘妸
org.jdom.Document
杞崲涓?DOMDocument
錛屽茍灝嗗叾涓庢樉紺烘垜浠殑 XSL 鍜?OutputStream
鐨勬枃浠朵竴璧鋒彁渚涚粰 Xalan錛?OutputStream
鏄垜浠粠鎴戜滑鍋囧畾鐨勪嬌鐢?servlet錛堝娓呭崟 14 鎵紺猴級鐨勫簲鐢ㄦ湇鍔″櫒涓婅幏鍙栫殑銆?
娓呭崟 14. 浣跨敤 JDOM 鍜?Xalan 鍒涘緩 HTML 鏂囨。
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);
鍦ㄨ繖涓ず渚嬩腑錛岃緭鍑烘槸閫氳繃 Java servlet 鐨?
HTTPResponse
OutputStream
嫻佸嚭銆傜劧鑰岋紝杈撳嚭嫻佸彲浠ヨ薄鏃╂湡鐨勪嬌鐢?XMLOutputter
鐨勫疄渚嬩竴鏍風(fēng)畝鍗曠殑閫氳繃鏂囦歡嫻佽緭鍑恒傛垜浠嬌鐢?DOMOutputter
涓?Xalan 鐢熸垚 XML 婧愪唬鐮併備絾鏄垜浠彲浠ョ敓鎴愮浉鍚岀殑杈撳嚭錛屾柟娉曟槸浣跨敤XMLOutputter
灝嗘垜浠殑 XML 鏂囨。浣滀負(fù)String
杈撳嚭騫朵嬌鍏惰繘鍏?StreamSource
銆傝鍒扮伒媧繪э細(xì)JDOM 鍙皢瀹冪殑緇撴瀯浣滀負(fù)String
銆丼AXEvent Stream
鎴?DOMDocument
杈撳嚭銆傝繖鍏佽 JDOM 涓庤兘鎶婁換浣曡繖浜涙ā鍨嬩綔涓鴻緭鍏ョ殑宸ュ叿涓璧峰伐浣溿傦紙鍏充簬闄勫姞鍔熻兘錛岃璁塊棶 JDOM Web 绔欑偣鐨?contrib
鍖咃紝鍦ㄩ偅閲屾?zhèn)畣鍙戠庮C竴涓熀浜?JDOM 宸ュ叿鐨勫疂搴擄紝鍙彁渚涘熀浜?JDBC ResultSet 鐨勬瀯寤哄櫒銆乆PATH 瀹炵幇鏂規(guī)硶鍜屽叾瀹冩洿澶氬伐鍏楓傦級鍦ㄧ煭鐭嚑琛屼唬鐮佷腑錛孞DOM 鍚敤浜嗚澶氬姛鑳斤紝鎴戜滑宸茬粡鍦?XML 涓垎鏋愯繃騫舵湁璁″垝鍦板垱寤轟簡 XML 鏂囨。錛屾搷浣滀簡閭d簺鏂囨。錛屽茍浣跨敤瀹冧滑浜х敓 XML 椹卞姩鐨?Web 欏甸潰銆?/p>
helloworld2008 2009-10-12 22:09 鍙戣〃璇勮]]>
涓銆丣DOM 綆浠?/p>
JDOM鏄竴涓紑婧愰」鐩紝瀹冨熀浜庢爲(wèi)鍨嬬粨鏋勶紝鍒╃敤綰疛AVA鐨勬妧鏈XML鏂囨。瀹炵幇瑙f瀽銆佺敓鎴愩佸簭鍒楀寲浠ュ強(qiáng)澶氱鎿嶄綔銆?/p>
JDOM 鐩存帴涓篔AVA緙栫▼鏈嶅姟銆傚畠鍒╃敤鏇翠負(fù)寮烘湁鍔涚殑JAVA璇█鐨勮澶氱壒鎬э紙鏂規(guī)硶閲嶈澆銆侀泦鍚堟蹇典互鍙?qiáng)鏄牉畡锛夊Q屾妸SAX鍜孌OM鐨勫姛鑳芥湁鏁堝湴緇撳悎璧鋒潵銆?/p>
鍦ㄤ嬌鐢ㄨ璁′笂灝藉彲鑳藉湴闅愯棌鍘熸潵浣跨敤XML榪囩▼涓殑澶嶆潅鎬с傚埄鐢↗DOM澶勭悊XML鏂囨。灝嗘槸涓浠惰交鏉俱佺畝鍗曠殑浜嬨?/p>
JDOM 鍦?000騫寸殑鏄ュぉ琚獴rett McLaughlin鍜孞ason Hunter寮鍙戝嚭鏉ワ紝浠ュ譏琛OM鍙?qiáng)SAX鍦ㄥ疄闄呭簲鐢ㄥ綋涓殑涓嶈凍涔嬪銆?/p>
榪欎簺涓嶈凍涔嬪涓昏鍦ㄤ簬SAX娌℃湁鏂囨。淇敼銆侀殢鏈鴻闂互鍙?qiáng)杈撳嚭鐨勫姛鑳藉Q岃屽浜嶥OM鏉ヨ錛孞AVA紼嬪簭鍛樺湪浣跨敤鏃舵潵鐢ㄨ搗鏉ユ昏寰椾笉澶柟渚褲?/p>
DOM鐨勭己鐐逛富瑕佹槸鏉ヨ嚜浜庣敱浜嶥om鏄竴涓帴鍙e畾涔夎璦錛圛DL錛?瀹冪殑浠誨姟鏄湪涓嶅悓璇█瀹炵幇涓殑涓涓渶浣庣殑閫氱敤鏍囧噯錛屽茍涓嶆槸涓篔AVA鐗瑰埆璁捐鐨勩侸DOM鐨勬渶鏂扮増鏈負(fù)JDOM Beta 9銆傛渶榪慗DOM琚敹褰曞埌JSR-102鍐咃紝榪欐爣蹇楃潃JDOM鎴愪負(fù)浜咼AVA騫沖彴緇勬垚鐨勪竴閮ㄥ垎銆?/p>
浜屻丣DOM 鍖呮瑙?/p>
JDOM鏄敱浠ヤ笅鍑犱釜鍖呯粍鎴愮殑
org.jdom 鍖呭惈浜嗘墍鏈夌殑xml鏂囨。瑕佺礌鐨刯ava綾?/p>
org.jdom.adapters 鍖呭惈浜嗕笌dom閫傞厤鐨刯ava綾?/p>
org.jdom.filter 鍖呭惈浜唜ml鏂囨。鐨勮繃婊ゅ櫒綾?/p>
org.jdom.input 鍖呭惈浜嗚鍙杧ml鏂囨。鐨勭被
org.jdom.output 鍖呭惈浜嗗啓鍏ml鏂囨。鐨勭被
org.jdom.transform 鍖呭惈浜嗗皢jdom xml鏂囨。鎺ュ彛杞崲涓哄叾浠杧ml鏂囨。鎺ュ彛
org.jdom.xpath 鍖呭惈浜嗗xml鏂囨。xpath鎿嶄綔鐨勭被涓夈丣DOM 綾昏鏄?/p>
1銆乷rg.JDOM榪欎釜鍖呴噷鐨勭被鏄綘J瑙f瀽xml鏂囦歡鍚庢墍瑕佺敤鍒扮殑鎵鏈夋暟鎹被鍨嬨?/p>
Attribute
CDATA
Coment
DocType
Document
Element
EntityRef
Namespace
ProscessingInstruction
Text
2銆乷rg.JDOM.transform鍦ㄦ秹鍙?qiáng)xslt鏍煎紡杞崲鏃跺簲浣跨敤涓嬮潰鐨?涓被
JDOMSource
JDOMResult
org.JDOM.input
3銆佽緭鍏ョ被錛屼竴鑸敤浜庢枃妗g殑鍒涘緩宸ヤ綔
SAXBuilder
DOMBuilder
ResultSetBuilder
org.JDOM.output
4銆佽緭鍑虹被錛岀敤浜庢枃妗h漿鎹㈣緭鍑?/p>
XMLOutputter
SAXOutputter
DomOutputter
JTreeOutputter
浣跨敤鍓嶆敞鎰忎簨欏癸細(xì)
1.JDOM瀵逛簬JAXP 浠ュ強(qiáng) TRax 鐨勬敮鎸?/p>
JDOM 鏀寔JAXP1.1錛氫綘鍙互鍦ㄧ▼搴忎腑浣跨敤浠諱綍鐨刾arser宸ュ叿綾?榛樿鎯呭喌涓嬫槸JAXP鐨刾arser銆?/p>
鍒跺畾鐗瑰埆鐨刾arser鍙敤濡備笅褰㈠紡
SAXBuilder parser
= new SAXBuilder("org.apache.crimson.parser.XMLReaderImpl");
Document doc = parser.build("http://www.cafeconleche.org/");
// work with the document...
JDOM涔熸敮鎸乀RaX錛歑SLT鍙氳繃JDOMSource浠ュ強(qiáng)JDOMResult綾繪潵杞崲錛堝弬瑙佷互鍚庣珷鑺傦級
2.娉ㄦ剰鍦↗DOM閲屾枃妗o紙Document錛夌被鐢眔rg.JDOM.Document 鏉ヨ〃紺恒傝繖瑕佷笌org.w3c.dom涓殑Document鍖哄埆寮錛岃繖2縐嶆牸寮忓浣曡漿鎹㈠湪鍚庨潰浼?xì)璇存槑銆?/p>
浠ヤ笅濡傛棤鐗規(guī)寚鍧囨寚JDOM閲岀殑Document銆?/p>
鍥涖丣DOM涓昏浣跨敤鏂規(guī)硶
1.Ducument綾?/p>
(1)Document鐨勬搷浣滄柟娉曪細(xì)
Element root = new Element("GREETING");
Document doc = new Document(root);
root.setText("Hello JDOM!");
鎴栬呯畝鍗曠殑浣跨敤Document doc = new Document(new Element("GREETING").setText("Hello JDOM!t"));
榪欑偣鍜孌OM涓嶅悓銆侱om鍒欓渶瑕佹洿涓哄鏉傜殑浠g爜錛屽涓嬶細(xì)
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder =factory.newDocumentBuilder();
Document doc = builder.newDocument();
Element root =doc.createElement("root");
Text text = doc.createText("This is the root");
root.appendChild(text);
doc.appendChild(root);
娉ㄦ剰浜嬮」錛欽DOM涓嶅厑璁稿悓涓涓妭鐐瑰悓鏃惰2涓垨澶氫釜鏂囨。鐩稿叧鑱旓紝瑕佸湪絎?涓枃妗d腑浣跨敤鍘熸潵鑰佹枃妗d腑鐨勮妭鐐圭殑璇濄傞鍏堥渶瑕佷嬌鐢╠etach()鎶婅繖涓妭鐐瑰垎寮鏉ャ?/p>
(2)浠庢枃浠躲佹祦銆佺郴緇烮D銆乁RL寰楀埌Document瀵硅薄錛?/p>
DOMBuilder builder = new DOMBuilder();
Document doc = builder.build(new File("jdom_test.xml"));
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(url);
鍦ㄦ柊鐗堟湰涓璂OMBuilder 宸茬粡Deprecated鎺?DOMBuilder.builder(url)錛岀敤SAX鏁堢巼浼?xì)姣旇緝蹇?/p>
榪欓噷涓句竴涓皬渚嬪瓙錛屼負(fù)浜嗙畝鍗曡搗瑙侊紝浣跨敤String瀵硅薄鐩存帴浣滀負(fù)xml鏁版嵁婧愶細(xì)
public jdomTest() {
String textXml = null;
textXml = "<note>";
textXml = textXml +
"<to>aaa</to><from>bbb</from><heading>ccc</heading><body>ddd</body>";
textXml = textXml + "</note>";
SAXBuilder builder = new SAXBuilder();
Document doc = null;
Reader in= new StringReader(textXml);
try {
doc = builder.build(in);
Element root = doc.getRootElement();
List ls = root.getChildren();//娉ㄦ剰姝ゅ鍙栧嚭鐨勬槸root鑺傜偣涓嬮潰鐨勪竴灞傜殑Element闆嗗悎
for (Iterator iter = ls.iterator(); iter.hasNext(); ) {
Element el = (Element) iter.next();
if(el.getName().equals("to")){
System.out.println(el.getText());
}
}
}
catch (IOException ex) {
ex.printStackTrace();
}
catch (JDOMException ex) {
ex.printStackTrace();
}
}
(3)DOM鐨刣ocument鍜孞DOM鐨凞ocument涔嬮棿鐨勭浉浜掕漿鎹嬌鐢ㄦ柟娉曪紝綆鍗曪紒
DOMBuilder builder = new DOMBuilder();
org.jdom.Document jdomDocument = builder.build(domDocument);
DOMOutputter converter = new DOMOutputter();// work with the JDOM document…
org.w3c.dom.Document domDocument = converter.output(jdomDocument);
// work with the DOM document…
2.XML鏂囨。杈撳嚭
XMLOutPutter綾伙細(xì)
JDOM鐨勮緭鍑洪潪甯哥伒媧?鏀寔寰堝縐峣o鏍煎紡浠ュ強(qiáng)椋庢牸鐨勮緭鍑?/p>
Document doc = new Document(...);
XMLOutputter outp = new XMLOutputter();
outp.output(doc, fileOutputStream); // Raw output
outp.setTextTrim(true); // Compressed output
outp.output(doc, socket.getOutputStream());
outp.setIndent(" ");// Pretty output
outp.setNewlines(true);
outp.output(doc, System.out);
璇︾粏璇峰弬闃呮渶鏂扮殑JDOM API鎵嬪唽
3.Element 綾伙細(xì)
(1)嫻忚Element鏍?/p>
Element root = doc.getRootElement();//鑾峰緱鏍瑰厓绱爀lement
List allChildren = root.getChildren();// 鑾峰緱鎵鏈夊瓙鍏冪礌鐨勪竴涓猯ist
List namedChildren = root.getChildren("name");// 鑾峰緱鎸囧畾鍚嶇О瀛愬厓绱犵殑list
Element child = root.getChild("name");//鑾峰緱鎸囧畾鍚嶇О鐨勭涓涓瓙鍏冪礌
JDOM緇欎簡鎴戜滑寰堝寰堢伒媧葷殑浣跨敤鏂規(guī)硶鏉ョ鐞嗗瓙鍏冪礌錛堣繖閲岀殑List鏄痡ava.util.List錛?/p>
List allChildren = root.getChildren();
allChildren.remove(3); // 鍒犻櫎絎洓涓瓙鍏冪礌
allChildren.removeAll(root.getChildren("jack"));// 鍒犻櫎鍙?#8220;jack”鐨勫瓙鍏冪礌
root.removeChildren("jack"); // 渚挎嵎鍐欐硶
allChildren.add(new Element("jane"));// 鍔犲叆
root.addContent(new Element("jane")); // 渚挎嵎鍐欐硶
allChildren.add(0, new Element("first"));
(2)縐誨姩Elements:
鍦↗DOM閲屽緢綆鍗?/p>
Element movable = new Element("movable");
parent1.addContent(movable); // place
parent1.removeContent(movable); // remove
parent2.addContent(movable); // add
鍦―om閲?/p>
Element movable = doc1.createElement("movable");
parent1.appendChild(movable); // place
parent1.removeChild(movable); // remove
parent2.appendChild(movable); // 鍑洪敊!
琛ュ厖錛氱籂閿欐?/p>
JDOM鐨凟lement鏋勯犲嚱鏁幫紙浠ュ強(qiáng)瀹冪殑鍏朵粬鍑芥暟錛変細(xì)媯鏌lement鏄惁鍚堟硶銆?/p>
鑰屽畠鐨刟dd/remove鏂規(guī)硶浼?xì)妫鏌ユ爲(wèi)緇撴瀯錛屾鏌ュ唴瀹瑰涓嬶細(xì)
1.鍦ㄤ換浣曟爲(wèi)涓槸鍚︽湁鍥炵幆鑺傜偣
2.鏄惁鍙湁涓涓牴鑺傜偣
3.鏄惁鏈変竴鑷寸殑鍛藉悕絀洪棿錛圢amespaces錛?/p>
(3)Element鐨則ext鍐呭璇誨彇
<description>
A cool demo
</description>
// The text is directly available
// Returns "\n A cool demo\n"
String desc = element.getText();
// There's a convenient shortcut
// Returns "A cool demo"
String desc = element.getTextTrim();
(4)Elment鍐呭淇敼
element.setText("A new description");
3.鍙紜В閲婄壒孌婂瓧絎?/p>
element.setText("<xml> content");
4.CDATA鐨勬暟鎹啓鍏ャ佽鍑?/p>
element.addContent(new CDATA("<xml> content"));
String noDifference = element.getText();
娣峰悎鍐呭
element鍙兘鍖呭惈寰堝縐嶅唴瀹癸紝姣斿璇?/p>
<table>
<!-- Some comment -->
Some text
<tr>Some child element</tr>
</table>
鍙杢able鐨勫瓙鍏冪礌tr
String text = table.getTextTrim();
Element tr = table.getChild("tr");
涔熷彲浣跨敤鍙﹀涓涓瘮杈冪畝鍗曠殑鏂規(guī)硶
List mixedCo = table.getContent();
Iterator itr = mixedCo.iterator();
while (itr.hasNext()) {
Object o = i.next();
if (o instanceof Comment) {...}
// 榪欓噷鍙互鍐欐垚Comment, Element, Text, CDATA,ProcessingInstruction, 鎴栬呮槸EntityRef鐨勭被鍨?/p>
}
// 鐜板湪縐婚櫎Comment,娉ㄦ剰榪欓噷娓告爣搴斾負(fù)1銆傝繖鏄敱浜庡洖杞﹂敭涔熻瑙f瀽鎴怲ext綾葷殑緙樻晠,鎵浠omment欏瑰簲涓?銆?/p>
mixedCo.remove(1);
4.Attribute綾?/p>
<table width="100%" border="0"> </table>
String width = table.getAttributeValue("width");//鑾峰緱attribute
int border = table.getAttribute("width").getIntValue();
table.setAttribute("vspace", "0");//璁劇疆a(chǎn)ttribute
table.removeAttribute("vspace");// 鍒犻櫎涓涓垨鍏ㄩ儴attribute
table.getAttributes().clear();
5.澶勭悊鎸囦護(hù)(Processing Instructions)鎿嶄綔
涓涓狿ls鐨勪緥瀛?/p>
<?br?>
<?cocoon-process type="xslt"?>
| |
| |
鐩爣 鏁版嵁
澶勭悊鐩爣鍚嶇О(Target)
String target = pi.getTarget();
鑾峰緱鎵鏈夋暟鎹紙data錛夛紝鍦ㄧ洰鏍囷紙target錛変互鍚庣殑鎵鏈夋暟鎹兘浼?xì)琚珮q斿洖銆?/p>
String data = pi.getData();
String type = pi.getValue("type");鑾峰緱鎸囧畾灞炴х殑鏁版嵁
List ls = pi.getNames();鑾峰緱鎵鏈夊睘鎬х殑鍚嶇О
6.鍛藉悕絀洪棿鎿嶄綔
<xhtml:html
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xhtml:title>Home Page</xhtml:title>
</xhtml:html>
Namespace xhtml = Namespace.getNamespace("xhtml", "http://www.w3.org/1999/xhtml");
List kids = html.getChildren("title", xhtml);
Element kid = html.getChild("title", xhtml);
kid.addContent(new Element("table", xhtml));
7.XSLT鏍煎紡杞崲
浣跨敤浠ヤ笅鍑芥暟鍙XSLT杞崲
鏈鍚庡鏋滀綘闇瑕佷嬌鐢╳3c鐨凞ocument鍒欓渶瑕佽漿鎹竴涓嬨?/p>
public static Document transform(String stylesheet錛孌ocument in)
throws JDOMException {
try {
Transformer transformer = TransformerFactory.newInstance()
.newTransformer(new StreamSource(stylesheet));
JDOMResult out = new JDOMResult();
transformer.transform(new JDOMSource(in), out);
return out.getDeocument();
}
catch (TransformerException e) {
throw new JDOMException("XSLT Trandformation failed", e);
}
}
浜斻佺敤渚?
1銆佺敓鎴恱ml鏂囨。錛?/p>
public class WriteXML{
public void BuildXML() throws Exception {
Element root,student,number,name,age;
root = new Element("student-info"); //鐢熸垚鏍瑰厓绱狅細(xì)student-info
student = new Element("student"); //鐢熸垚鍏冪礌錛歴tudent(number,name,age)
number = new Element("number");
name = new Element("name");
age = new Element("age");
Document doc = new Document(root); //灝嗘牴鍏冪礌妞嶅叆鏂囨。doc涓?/p>
number.setText("001");
name.setText("lnman");
age.setText("24");
student.addContent(number);
student.addContent(name);
student.addContent(age);
root.addContent(student);
Format format = Format.getCompactFormat();
format.setEncoding("gb2312"); //璁劇疆xml鏂囦歡鐨勫瓧絎︿負(fù)gb2312
format.setIndent(" "); //璁劇疆xml鏂囦歡鐨勭緝榪涗負(fù)4涓┖鏍?/p>
XMLOutputter XMLOut = new XMLOutputter(format);//鍏冪礌鍚庢崲琛屼竴灞傚厓绱犵緝鍥涙牸
XMLOut.output(doc, new FileOutputStream("studentinfo.xml"));
}
public static void main(String[] args) throws Exception {
WriteXML w = new WriteXML();
System.out.println("Now we build an XML document .....");
w.BuildXML();
System.out.println("finished!");
}
}
鐢熸垚鐨剎ml鏂囨。涓猴細(xì)
<?xml version="1.0" encoding="gb2312"?>
<student-info>
<student>
<number>001</number>
<name>lnman</name>
<age>24</age>
</student>
</student-info>
鍒涘緩XML鏂囨。2錛?/p>
public class CreateXML {
public void Create() {
try {
Document doc = new Document();
ProcessingInstruction pi=new ProcessingInstruction("xml-stylesheet","type="text/xsl" href="test.xsl"");
doc.addContent(pi);
Namespace ns = Namespace.getNamespace("http://www.bromon.org" );
Namespace ns2 = Namespace.getNamespace("other", "http://www.w3c.org" );
Element root = new Element("鏍瑰厓绱?, ns);
root.addNamespaceDeclaration(ns2);
doc.setRootElement(root);
Element el1 = new Element("鍏冪礌涓");
el1.setAttribute("灞炴?, "灞炴т竴");
Text text1=new Text("鍏冪礌鍊?);
Element em = new Element("鍏冪礌浜?).addContent("絎簩涓厓绱?);
el1.addContent(text1);
el1.addContent(em);
Element el2 = new Element("鍏冪礌涓?).addContent("絎笁涓厓绱?);
root.addContent(el1);
root.addContent(el2);
//緙╄繘鍥涗釜絀烘牸,鑷姩鎹㈣,gb2312緙栫爜
XMLOutputter outputter = new XMLOutputter(" ", true,"GB2312");
outputter.output(doc, new FileWriter("test.xml"));
}catch(Exception e) {
System.out.println(e);
}
}
public static void main(String args[]) {
new CreateXML().Create();
}
}
2銆佽鍙杧ml鏂囨。鐨勪緥瀛愶細(xì)
import org.jdom.output.*;
import org.jdom.input.*;
import org.jdom.*;
import java.io.*;
import java.util.*;
public class ReadXML{
public static void main(String[] args) throws Exception {
SAXBuilder builder = new SAXBuilder();
Document read_doc = builder.build("studentinfo.xml");
Element stu = read_doc.getRootElement();
List list = stu.getChildren("student");
for(int i = 0;i < list.size();i++) {
Element e = (Element)list.get(i);
String str_number = e.getChildText("number");
String str_name = e.getChildText("name");
String str_age = e.getChildText("age");
System.out.println("---------STUDENT--------------");
System.out.println("NUMBER:" + str_number);
System.out.println("NAME:" + str_name);
System.out.println("AGE:" + str_age);
System.out.println("------------------------------");
System.out.println();
}
}
}
3銆丏TD楠岃瘉鐨勶細(xì)
public class XMLWithDTD {
public void validate() {
try {
SAXBuilder builder = new SAXBuilder(true);
builder.setFeature("http://xml.org/sax/features/validation";,true);
Document doc = builder.build(new FileReader("author.xml"));
System.out.println("鎼炴巶");
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc, System.out);
}catch(Exception e) {
System.out.println(e);
}
}
public static void main(String args[]) {
new XMLWithDTD().validate();
}
}
銆銆闇瑕佽鏄庣殑鏄紝榪欎釜紼嬪簭娌℃湁鎸囨槑浣跨敤鍝釜DTD鏂囦歡銆侱TD鏂囦歡鐨勪綅緗槸鍦╔ML涓寚瀹氱殑錛岃屼笖DTD涓嶆敮鎸佸懡鍚嶇┖闂達(dá)紝涓涓猉ML鍙兘寮曠敤涓涓狣TD錛屾墍浠ョ▼搴忕洿鎺ヨ鍙朮ML涓寚瀹氱殑DTD錛岀▼搴忔湰韜笉鐢ㄦ寚瀹氥備笉榪囪繖鏍蜂竴鏉ワ紝濂借薄灝卞彧鑳戒嬌鐢ㄥ閮ㄥ紡鐨凞TD寮曠敤鏂瑰紡浜嗭紵楂樹漢鎸囩偣銆?/p>
4銆乆ML Schema楠岃瘉鐨勶細(xì)
public class XMLWithSchema {
String xml="test.xml";
String schema="test-schema.xml";
public void validate() {
try {
SAXBuilder builder = new SAXBuilder(true);
//鎸囧畾綰︽潫鏂瑰紡涓篨ML schema
builder.setFeature("http://apache.org/xml/features/validation/schema";, true);
//瀵煎叆schema鏂囦歡
builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";,schema);
Document doc = builder.build(new FileReader(xml));
System.out.println("鎼炴巶");
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc, System.out);
}catch(Exception e) {
System.out.println("楠岃瘉澶辮觸:"+e);
}
}
}
涓婇潰鐨勭▼搴忓氨鎸囧嚭浜嗚寮曞叆鐨刋ML Schema鏂囦歡鐨勪綅緗?/p>
緋葷粺榛樿杈撳嚭鏄疷TF-8錛岃繖鏈夊彲鑳藉鑷村嚭鐜頒貢鐮併?/p>
5銆乆path渚嬪瓙錛?/p>
JDOM鐨勫叧浜嶺PATH鐨刟pi鍦╫rg.jdom.xpath榪欎釜鍖呴噷銆傝繖涓寘涓嬶紝鏈変竴涓娊璞$被XPath.java鍜屽疄鐜扮被JaxenXPath.java錛?浣跨敤鏃跺厛鐢╔Path綾葷殑闈欐佹柟娉昻ewInstance(String xpath)寰楀埌XPath瀵硅薄錛岀劧鍚庤皟鐢ㄥ畠鐨剆electNodes(Object context)鏂規(guī)硶鎴杝electSingleNode(Object context)鏂規(guī)硶錛屽墠鑰呮牴鎹畑path璇彞榪斿洖涓緇勮妭鐐?List瀵硅薄)錛涘悗鑰呮牴鎹竴涓獂path璇彞榪斿洖絎﹀悎鏉′歡鐨勭涓涓妭鐐?Object綾誨瀷)銆傝鐪媕dom-1.0鑷甫鐨勮寖渚嬬▼搴忥細(xì)
瀹冨垎鏋愬湪web.xml鏂囦歡涓殑娉ㄥ唽鐨剆ervlet鐨勪釜鏁板強(qiáng)鍙傛暟涓暟錛屽茍杈撳嚭瑙掕壊鍚嶃?/p>
web.xml鏂囦歡錛?/p>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
-->
<web-app>
<servlet>
<servlet-name>snoop</servlet-name>
<servlet-class>SnoopServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>file </servlet-name>
<servlet-class>ViewFile</servlet-class>
<init-param>
<param-name>initial</param-name>
<param-value>1000</param-value>
<description>The initial value for the counter <!-- optional --></description>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>mv</servlet-name>
<url-pattern>*.wm</url-pattern>
</servlet-mapping>
<distributed/>
<security-role>
<role-name>manager</role-name>
<role-name>director</role-name>
<role-name>president</role-name>
</security-role>
</web-app>
澶勭悊紼嬪簭錛?/p>
import java.io.*;
import java.util.*;
public class XPathReader {
public static void main(String[] args) throws IOException, JDOMException {
if (args.length != 1) {
System.err.println("Usage: java XPathReader web.xml");
return;
}
String filename = args[0];//浠庡懡浠よ杈撳叆web.xml
PrintStream out = System.out;
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File(filename));//寰楀埌Document瀵硅薄
// Print servlet information
XPath servletPath = XPath.newInstance("http://servlet");//,閫夋嫨浠繪剰璺緞涓媠ervlet鍏冪礌
List servlets = servletPath.selectNodes(doc);//榪斿洖鎵鏈夌殑servlet鍏冪礌銆?/p>
out.println("This WAR has "+ servlets.size() +" registered servlets:");
Iterator i = servlets.iterator();
while (i.hasNext()) {//杈撳嚭servlet淇℃伅
Element servlet = (Element) i.next();
out.print("\t" + servlet.getChild("servlet-name")
.getTextTrim() +
" for " + servlet.getChild("servlet-class")
.getTextTrim());
List initParams = servlet.getChildren("init-param");
out.println(" (it has " + initParams.size() + " init params)");
}
// Print security role information
XPath rolePath = XPath.newInstance("http://security-role/role-name/text()");
List roleNames = rolePath.selectNodes(doc);//寰楀埌鎵鏈夌殑瑙掕壊鍚?/p>
if (roleNames.size() == 0) {
out.println("This WAR contains no roles");
} else {
out.println("This WAR contains " + roleNames.size() + " roles:");
i = roleNames.iterator();
while (i.hasNext()) {//杈撳嚭瑙掕壊鍚?/p>
out.println("\t" + ((Text)i.next()).getTextTrim());
}
}
}
}
杈撳嚭緇撴灉:
C:\java>java XPathReader web.xml
This WAR has 2 registered servlets:
snoop for SnoopServlet (it has 0 init params)
file for ViewFile (it has 1 init params)
This WAR contains 3 roles:
manager
director
president
6銆佹暟鎹緭鍏ヨ鐢ㄥ埌XML鏂囨。瑕侀氳繃org.jdom.input鍖咃紝鍙嶈繃鏉ラ渶瑕乷rg.jdom.output銆傚鍓嶉潰鎵璇達(dá)紝鍏蟲槸鐪婣PI鏂囨。灝辮兘澶熶嬌鐢ㄣ?/p>
鎴戜滑鐨勪緥瀛愯鍏ML鏂囦歡exampleA.xml錛屽姞鍏ヤ竴鏉″鐞嗘寚浠わ紝淇敼絎竴鏈功鐨勪環(huán)鏍煎拰浣滆咃紝騫舵坊鍔犱竴鏉″睘鎬э紝鐒跺悗鍐欏叆鏂囦歡exampleB.xml錛?/p>
//exampleA.xml
<?xml version="1.0" encoding="GBK"?>
<bookList>
<book>
<name>Java緙栫▼鍏ラ棬</name>
<author>寮犱笁</author>
<publishDate>2002-6-6</publishDate>
<price>35.0</price>
</book>
<book>
<name>XML鍦↗ava涓殑搴旂敤</name>
<author>鏉庡洓</author>
<publishDate>2002-9-16</publishDate>
<price>92.0</price>
</book>
</bookList>
//testJDOM.java
import org.jdom.*;
import org.jdom.output.*;
import org.jdom.input.*;
import java.io.*;
public class TestJDOM{
public static void main(String args[])throws Exception{
SAXBuilder sb = new SAXBuilder();
//浠庢枃浠舵瀯閫犱竴涓狣ocument錛屽洜涓篨ML鏂囦歡涓凡緇忔寚瀹氫簡緙栫爜錛屾墍浠ヨ繖閲屼笉蹇呬簡
Document doc = sb.build(new FileInputStream("exampleA.xml"));
ProcessingInstruction pi = new ProcessingInstruction//鍔犲叆涓鏉″鐞嗘寚浠?/p>
("xml-stylesheet","href=\"bookList.html.xsl\" type=\"text/xsl\"");
doc.addContent(pi);
Element root = doc.getRootElement(); //寰楀埌鏍瑰厓绱?/p>
java.util.List books = root.getChildren(); //寰楀埌鏍瑰厓绱犳墍鏈夊瓙鍏冪礌鐨勯泦鍚?/p>
Element book = (Element)books.get(0); //寰楀埌絎竴涓猙ook鍏冪礌
//涓虹涓鏈功娣誨姞涓鏉″睘鎬?/p>
Attribute a = new Attribute("hot","true");
book.setAttribute(a);
Element author = book.getChild("author"); //寰楀埌鎸囧畾鐨勫瓧鍏冪礌
author.setText("鐜嬩簲"); //灝嗕綔鑰呮敼涓虹帇浜?/p>
//鎴?Text t = new Text("鐜嬩簲");book.addContent(t);
Element price = book.getChild("price"); //寰楀埌鎸囧畾鐨勫瓧鍏冪礌
//淇敼浠鋒牸錛屾瘮杈冮儊闂風(fēng)殑鏄垜浠繀欏昏嚜宸辮漿鎹㈡暟鎹被鍨嬶紝鑰岃繖姝f槸JAXB鐨勪紭鍔?/p>
author.setText(Float.toString(50.0f));
String indent = " ";
boolean newLines = true;
XMLOutputter outp = new XMLOutputter(indent,newLines,"GBK");
outp.output(doc, new FileOutputStream("exampleB.xml"));
}
};
鎵ц緇撴灉exampleB.xml錛?/p>
<?xml version="1.0" encoding="GBK"?>
<bookList>
<book hot=”true”>
<name>Java緙栫▼鍏ラ棬</name>
<author>50.0</author>
<publishDate>2002-6-6</publishDate>
<price>35.0</price>
</book>
<book>
<name>XML鍦↗ava涓殑搴旂敤</name>
<author>鏉庡洓</author>
<publishDate>2002-9-16</publishDate>
<price>92.0</price>
</book>
</bookList>
<?xml-stylesheet href="bookList.html.xsl" type="text/xsl"?>
鍦ㄩ粯璁ゆ儏鍐典笅錛孞DOM鐨凟lement綾葷殑getText()榪欑被鐨勬柟娉曚笉浼?xì)杩囨护绌虹櫧瀛椊W︼紝濡傛灉浣犻渶瑕佽繃婊わ紝鐢╯etTextTrim() 銆?/p>
java.util.Map.Entry銆傝繖鏃秜ar=entry鐨勮瘽錛岀敤琛ㄨ揪寮?{entry.key}鍙栧緱閿悕銆?/p>
銆 鐢ㄨ〃杈懼紡${entry.value}寰楀埌姣忎釜entry鐨勫箋傝繖鏄洜涓簀ava.util.Map.Entry瀵硅薄鏈塯etKey鍜実etValue鏂?/p>
銆娉曪紝琛ㄨ揪寮忚璦閬靛畧JavaBean鐨勫懡鍚嶇害瀹氥傘example:
<c:forEach items="${map}" var="entry">
<c:out value="${entry.key}" />
<c:out value="${entry.value}" />
</c:forEach>
2銆佹牴鎹甼ey鍙橀噺姹傚?br />
濡傛灉浜嬪厛鐭ラ亾key閭d箞寰堝鏄撴牴鎹?{map.key鍊紏灝卞彲浠ュ緱鍒板煎璞★紝浣嗘槸濡傛灉key鏄竴涓彉閲忓憿錛?/p>
鏈変竴涓棶棰?濡傛灉緇欏畾涓涓猭ey鐨勫彉閲忓浣曚嬌鐢‥L寰楀埌瀵硅薄鍛?榪欓噷闇瑕佷嬌鐢‥L琛ㄨ揪寮忎腑鐨刐]鏉ヨВ鍐?
瑙e喅鏂規(guī)硶濡傜ず渚?
<c:out value="${map[key]}" />
<!-- 榪欓噷鐨刴ap灝辨槸 java.util.Map瀵瑰儚錛宬ey鏄繖涓猰ap閲岀殑涓涓猭ey -->
eval_body_include錛氬憡璇夋湇鍔″櫒姝f枃鐨勫唴瀹癸紝騫舵妸榪欎簺鍐呭閫佸叆杈撳嚭嫻?
skip_body錛氬憡璇夋湇鍔″櫒涓嶈澶勭悊姝f枃鍐呭
eval_page錛氳鏈嶅姟鍣ㄧ戶緇墽琛岄〉闈?
skip_page錛氳鏈嶅姟鍣ㄤ笉瑕佸鐞嗗墿浣欑殑欏甸潰
eval_body_again錛氳鏈嶅姟鍣ㄧ戶緇鐞嗘鏂囧唴瀹癸紝鍙湁doafterbody鏂規(guī)硶鍙互榪斿洖
eval_body_buffered錛歜odytag鎺ュ彛鐨勫瓧孌碉紝鍦╠ostarttag()榪斿洖
鍗歌澆鏃跺氨鍑虹幇榪欎釜闂,閲嶈浜咼DK鍜宮yeclipse緇撴灉闂榪樻槸涓鏍?
瑙e喅鍔炴硶錛氳繖涓棶棰樻槸鐢變簬JDK鏇存柊閫犳垚鐨?
鎵懼埌MyEclipse鐨勫畨瑁呯洰褰曪紝涓嬮潰浼?xì)鏈変竴涓悕瀛楃被浼糢ninstall MyEclipse 5.5.0GA.lax鐨勬枃浠訛紝鎵撳紑錛屽彲浠ユ壘鍒?br />
lax.nl.current.vm=
榪欓」錛屽皢鍚庨潰鐨勫兼洿鏂版垚鏈夋晥鐨刯re鐨勫煎氨鍙互浜嗭紝濡備笅鎵紺猴細(xì)
# LAX.NL.CURRENT.VM
# -----------------
# the VM to use for the next launch
lax.nl.current.vm=C:\\Program Files\\Java\\jre1.5.0_11\\bin\\java.exe
{
final int ACCOUNTANT = 1;
final int PAYROLL_CLERK = 2;
final int MANAGER = 3;
int jobID = ACCOUNTANT;
}濡傛灉浣犲皢涓涓瓧孌靛0鏄庝負(fù)volatile錛屽垯澶氱嚎紼嬪皢鑳借闂瀛楁錛岃岀壒瀹氱殑緙栬瘧鍣ㄥ皢闃叉鏈浼樺寲浠ヤ嬌璇ュ瓧孌佃兘琚傚綋鐨勮闂傚鏋滀綘灝嗕竴涓瓧孌靛畾涔変負(fù)static錛屽垯鎵鏈夊璞¢兘灝嗗叡浜瀛楁鐨勪竴浠芥嫹璐濄傚綋浣犲皢涓涓柊鍊艱祴緇欒繖涓瓧孌墊椂錛屾墍鏈夊璞¢兘灝嗗緱鍒拌繖涓柊鍊箋傚鏋滄病鏈夋寚瀹氫負(fù)static錛屽垯榪欎釜瀛楁灝嗘槸涓涓疄渚嬪瓧孌碉紝姣忎釜瀵硅薄閮戒嬌鐢ㄤ粬浠嚜宸辯殑涓浠芥嫹璐濄?br />
瀹氫箟涓簍ransient鐨勫瓧孌靛煎湪瀵硅薄涓茶鍖栬繃紼嬩腑灝嗕笉琚繚瀛樸傚疄渚嬪瓧孌?br />
“瀹炰緥瀛楁”灝辨槸娌℃湁浣跨敤static淇敼鏍囪瘑絎﹀畾涔夌殑瀛楁銆傚疄渚嬪瓧孌靛拰瀵硅薄绱у瘑鐩歌繛鈥斺旇屼笉鏄拰綾匯傚綋鍦ㄤ竴涓璞′唬鐮侀噷淇敼鏃訛紝浠呬粎榪欎釜鐩稿叧鐨勭被瀹炰緥鈥斺斿璞♀斺斿彲浠ュ緱鍒拌繖涓敼鍙樸傚疄渚嬪瓧孌甸殢瀵硅薄鐨勫垱寤鴻屽垱寤猴紝闅忓璞$殑閲婃斁鑰岄噴鏀俱傜被瀛楁
綾誨瓧孌墊槸鐢╯tatic鍏抽敭瀛楀畾涔夌殑瀛楁銆傜被瀛楁鍜岀被鑱旂郴鈥斺旇屼笉鏄璞°傚綋鍦ㄤ竴涓被浠g爜涓慨鏀規(guī)椂錛岃繖涓被錛堜互鍙?qiáng)鎵鏈夊垱寤虹殑瀵硅薄錛夐兘鑳芥劅鐭ヨ繖涓彉鍖栥傜被瀛楁闅忕被鐨勫姞杞借屽垱寤猴紝闅忕被鐨勫嵏杞借岄噴鏀懼父閲?br />
“甯擱噺”鏄竴縐嶅彧璇誨彉閲忥紱褰揓VM鍒濆鍖栬繖縐嶅彉閲忓悗錛屽彉閲忕殑鍊煎氨涓嶈兘鏀瑰彉浜嗐?br />
浣跨敤final鍏抽敭瀛楁潵瀹氫箟甯擱噺銆傛濡傛湁涓ょ瀛楁鈥斺斿疄渚嬪拰綾誨瓧孌碉紝甯擱噺涔熸湁涓ょ鈥斺斿疄渚嬪父閲忓拰綾誨父閲忋備負(fù)浜嗘彁楂樻晥鐜囷紝搴斿綋鍒涘緩綾誨父閲忥紝鎴栬呰鏄痜inal static瀛楁銆俢lass Constants
{
final int FIRST = 1;
final static int SECOND = 2;
public static void main(String[] args)
{
int iteration = SECOND;
if (iteration == FIRST)//緙栬瘧閿欒
System.out.println(“first iteration”);
else
if (iteration == SECOND)
System.out.println(“second iteration”);
}
}
涓婁緥涓殑Constants綾誨畾涔変簡涓瀵瑰父閲忊斺擣IRST鍜孲ECOND銆侳IRST鏄疄渚嬪父閲忥紝鍥犱負(fù)JVM緇欐瘡涓狢onstants瀵硅薄鍒嗛厤涓浠紽IRST鐨勬嫹璐濄傜浉鍙嶇殑錛屽洜涓篔VM鍦ㄥ姞杞紺onstants綾誨悗鍙垱寤轟簡涓浠絊ECOND鎷瘋礉錛屾墍浠ECOND鏄被甯擱噺銆?br />
娉ㄦ剰錛氬綋浣犲皾璇曞湪main()涓洿鎺ヨ闂瓼IRST鏃朵細(xì)瀵艱嚧涓涓紪璇戦敊璇傚父閲廎IRST鐩村埌涓涓璞″垱寤烘椂鎵嶅瓨鍦紝鎵浠IRST浠呬粎鍙兘琚繖涓璞℃墍璁塊棶鈥斺旇屼笉鏄被銆?