7. ÓÃJavaXPCOMÀ´×Ô¶¯ä¯ÀÀÍøÒ³
ÔÚÕâÒ»½ÚÀïÎÒÃǽ«½â¾öһЩ×Ô¶¯ä¯ÀÀÍøÒ³ÖеÄһЩÎÊÌ⣬³¢ÊÔ°ÑÒ»ÏÂͨÓõÄÈÎÎñ³éÏó³ÉÈËÀà¿É¶ÁµÄ·½·¨£¬Òò´ËÄã¿ÉÒÔÇáÒ×µÄÔĶÁ
´úÂë²¢ÖªµÀËüµÄ¹¦ÄÜ¡£ÎÒÃǽ«¹¹½¨Ò»¸öWeb BrowserÀ´¼ÓÔØÍøÒ³£¬µã»÷°´Å¥»òÕß³¬Á´½Ó£¬Ê¹ÓÃXPathÀ´³éȡһÏÂÓÐÓõÄÐÅÏ¢¡£ÔÚÿһ¸ö
С½ÚÀïÃæ£¬ÎÒÃǶ¼½«ÔÚÎÒÃǵÄä¯ÀÀÆ÷ÀïÔö¼ÓÐµĹ¦ÄÜ£¬Òò´ËÔÚ×îºó£¬ÎÒÃǽ«ÓÐÒ»¸öWeb Browser£¬ËüÄܹ»ÊµÏÖÍøÒ³µÄ×Ô¶¯
ä¯ÀÀ¡£
7.1 ʹÓÃÎÒÃǵÄä¯ÀÀÆ÷À´¼ÓÔØÍøÒ³
ÔÚÀý×Ó SimpleBrowserÀÎÒÃÇʹÓ÷½·¨ public boolean setUrl(String url) À´ÈÃä¯ÀÀÆ÷¼ÓÔØÒ»¸öurl¡£Õâ¸ö·½·¨µÄÎÊÌâÊÇËü
¿ÉÒÔÈÃä¯ÀÀÆ÷¿ªÊ¼¼ÓÔØÒ»¸öÒ³Ãæ£¬µ«ÊDz»»áµÈ´ýä¯ÀÀÆ÷¼ÓÔØÒ³ÃæÍê³É¡£ÎÒÃÇдÁËÒ»¸ö·½·¨½Ð×ögoÀ´ÊµÏÖÕâ¸ö¹¦ÄÜ£¬Òò´ËºóÃæÎÒÃǽ«Ê¹
ÓÃÕâÖÖ·½·¨À´°²È«µÄ¼ÓÔØÒ»¸öÒ³Ãæ£¬×èÈûסִÐÐÁ÷³ÌÖ±µ½Ò³Ãæ¼ÓÔØ³É¹¦»òÕß³¬Ê±¡£
×¢£ºÊµÏֵķ½·¨ÊÇÔÚsetUrlµÄʱºò¶¨ÒåÒ»¸öCountDownLatch£¬È»ºó¼àÌýbrowser.addProgressListener£¬µÈÒ³ÃæÍê³Éºó°ÑÕâ¸ö
CountDownLatch countDownһϡ£µ÷ÓÃsetUrlºóʹÓÃCountDownLatchµÄawait·½·¨µÈ´ý¼ÓÔØÍê³É»òÕß³¬Ê±¡£×¢Òâµ÷ÓÃsetUrlʱҪÆô¶¯
Ò»¸öSW ......
7.3 µã»÷ElementºÍÌîд±íµ¥
ÎÒÃÇ¿ÉÒÔ°²È«µÄ¼ÓÔØÒ³Ãæ£¬³éÈ¡ÐÅÏ¢£¬µ«ÊÇÓÐʱä¯ÀÀÍøÒ³ÊÇÐèÒªÌîд±íµ¥²¢Ìá½»»òÕßµã»÷ij¸öÔªËØÀ´´¥·¢onclickÒÔ±ãÖ´ÐÐÒ»¶Î
JavaScript´úÂë¡£
àÅ£¬ÒªÏëµã»÷Ò»¸öelementÐèÒª»ñµÃÕâ¸öelement(Ç°ÃæµÄxpathNodesÒ²Ðí¿ÉÒÔ°ïÎÒÃÇ×öµ½Õâµã)£¬Èç¹ûÊÇinput element£¬ÎÒÃÇÐè
Òªµ÷ÓÃËüµÄsubmit·½·¨£¬Èç¹ûÊÇanchorµÄ»°£¬ÎÒÃǼÒÐèÒª·ÃÎÊËüµÄhrefÀïµÄurl¡£Èç¹ûÕâ¸öÔªËØÓÐonclickÊôÐÔ£¬Õâ¶Î½Å±¾±ØÐèÊ×Ïȱ»
Ö´ÐС£
Ìîдtext field£¬ÐèÒªÐÞ¸ÄDOM tree£¬ÉèÖÃÊôÐÔµÄÖµ(±ÈÈçHTMLInputElement)»òÕß²åÈëÒ»¸öÎı¾×Ó½Úµã(±ÈÈç
HTMLTextAreaElement)¡£¿´¿´ÏÂÃæµÄÀý×ӾͻᷢÏÖÕâ²¢²»À§ÄÑ¡£
Òë×¢£ºÖ÷ÒªÓÐ2¸ö·½·¨ enter ºÍ click¡£
enter¸øtextºÍtextAreaÉèÖÃÖµ£¬textÖ±½ÓÉèÖÃvalueÊôÐÔ¾ÍÐÐÁË£¬¶øtextAreaÏÈҪɾ³ýËùÓÐ×ӽڵ㣬ȻºóÔö¼ÓÒ»¸öеÄtext
nodeÀ´°üº¬ÎÒÃÇÏëÒªÊäÈëµÄÄÚÈÝ¡£
clickµã»÷Ò»¸öÔªËØ£¬±ÈÈçelement, anchor submit°´Å¥µÈµÈ¡£
package es.ladyr.javaxpcom.browser;
import java.util.ArrayList;
import java.util.List;
impor ......
¿ÉÒÔÓÃ×öcsdn±¸·Ý£¬Õâ¸ö·½·¨À©³äÒÔºó×ö¸öcsdn±¸·Ý¹¤¾ßµ¹ÊDz»´í
package com.tag;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
import org.htmlparser.Pa ......
BorderLayout
FlowLayout
GridLayout
GridBagLayout
CardLayout
BoxLayout
< type="text/javascript">
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + "\r\n\n±¾ÎÄÀ´×ÔCSDN²©¿Í£¬×ªÔØÇë±êÃ÷³ö´¦£º" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
BorderLayout
FlowLayout
GridLayout
GridBagLayout
CardLayout
BoxLayout
1.BorderLayout
java.lang.Object
--java.awt.BorderLayout
......
http://www.cnblogs.com/anran_guojianjun/archive/2009/04/14/1435278.html
wait(),notify(),notifyAll()²»ÊôÓÚThreadÀà,¶øÊÇÊôÓÚObject»ù´¡Àà,Ò²¾ÍÊÇ˵ÿ¸ö¶ÔÏñ¶¼ÓÐ
wait(),notify(),notifyAll()
µÄ¹¦ÄÜ.ÒòΪ¶¼¸ö¶ÔÏñ¶¼ÓÐËø,ËøÊÇÿ¸ö¶ÔÏñµÄ»ù´¡,µ±È»²Ù×÷ËøµÄ·½·¨Ò²ÊÇ×î»ù´¡ÁË.
ÏÈ¿´java docÔõô˵:
waitµ¼Öµ±Ç°µÄÏ̵߳ȴý£¬Ö±µ½ÆäËûÏ̵߳÷Óô˶ÔÏóµÄ notify() ·½·¨»ò notifyAll()
·½·¨¡£µ±Ç°µÄÏ̱߳ØÐëÓµÓд˶ÔÏó¼àÊÓÆ÷¡£¸ÃÏ̷߳¢²¼¶Ô´Ë¼àÊÓÆ÷µÄËùÓÐȨ²¢µÈ´ý£¬Ö±µ½ÆäËûÏß³Ìͨ¹ýµ÷Óà notify ·½·¨£¬»ò notifyAll
·½·¨Í¨ÖªÔڴ˶ÔÏóµÄ¼àÊÓÆ÷ÉϵȴýµÄÏß³ÌÐÑÀ´¡£È»ºó¸ÃÏ߳̽«µÈµ½ÖØÐ»ñµÃ¶Ô¼àÊÓÆ÷µÄËùÓÐȨºó²ÅÄܼÌÐøÖ´ÐÐ.
notify»½ÐÑÔڴ˶ÔÏó¼àÊÓÆ÷ÉϵȴýµÄµ¥¸öÏ̡߳£Èç¹ûËùÓÐÏ̶߳¼Ôڴ˶ÔÏóÉϵȴý£¬Ôò»áÑ¡Ôñ»½ÐÑÆäÖÐÒ»¸öÏ̡߳£Ö±µ½µ±Ç°µÄÏß³Ì·ÅÆú´Ë¶ÔÏóÉϵÄËø
¶¨£¬²ÅÄܼÌÐøÖ´Ðб»»½ÐѵÄÏ̡߳£´Ë·½·¨Ö»Ó¦ÓÉ×÷Ϊ´Ë¶ÔÏó¼àÊÓÆ÷µÄËùÓÐÕßµÄÏß³ÌÀ´µ÷ÓÃ.
"µ±Ç°µÄÏ̱߳ØÐëÓµÓд˶ÔÏó¼àÊÓÆ÷"Óë"´Ë·½·¨Ö»Ó¦ÓÉ×÷Ϊ´Ë¶ÔÏó¼àÊÓÆ÷µÄËùÓÐÕßµÄÏß³ÌÀ´µ÷ÓÃ"˵Ã÷wait·½·¨Óënotify·½·¨±ØÐëÔÚͬ²½¿éÄÚÖ´
ÐÐ,¼´synchronized(objÖ®ÄÚ).
µ÷ÓöÔÏñwait·½·¨º ......
ÕâÆªÎÄÕ±»×ªÔصĴÎÊý×î¶à£¬Æäʵ´úÂë¼òªµÃÎÒ×Ô¼º¶¼¿´²»ÏÂÈ¥¡£Ö»²»¹ý·¢±íÕâÆªÎÄÕÂʱºÜ¶àÈËÐèÒªÕâ¸ö¹¦ÄÜ¡£
Õ⼸Ììд¸öÊý¾Ý¿â²éѯ·ÖÎöÆ÷£¬ÒªÓõ½XML¼Ç¼Óû§×¢²áµÄÊý¾Ý¿âÁ¬½ÓµØÖ·¡¢¶Ë¿ÚµÈÐÅÏ¢£¬×ʼÏëÓÃjavaµÄpropertieÀàÀ´Íê³É¡£µ«propertie²»Ö§³Ö[С½áÃû--¼üÖµÃû--¼üÖµ]ÕâÖֽṹ£¬Èç¹ûÒª¼Ç¼Óû§×¢²áµÄ¶à¸öÊý¾Ý¿âÐÅÏ¢µÄ»°£¬propertieÖоͱØÐëÓÃ[С½áÃû.¼üÖµÃû=¼üÖµ]ÕâÖÖ¸ñʽ½øÐмǼ£¬ºóÀ´Óõ½xml£¬Íê³ÉÁËÀàËÆiniÎļþ¶ÁÈ¡ºÍ±£´æµÄ¹¦ÄÜ£¬É¾³ý¹¦ÄÜĿǰ»¹Ã»×ö£¬ÒªÊµÏֺܼòµ¥£¬ËùÒÔ¾Íû°üº¬ÔÚ´úÂëÀïÃæÁË¡£
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SERVER>
<CRM>
<IP>162.105.167.4</IP>
<PORT>5000</PORT>
<CHARSET>cp850</CHARSET>
<DBTYPE>Sybase</DBTYPE>
<DBNAME>BB_CRM</DBNAME>
</CRM>
<JYGS>
<IP>162.105.16 ......
ÕâÆªÎÄÕ±»×ªÔصĴÎÊý×î¶à£¬Æäʵ´úÂë¼òªµÃÎÒ×Ô¼º¶¼¿´²»ÏÂÈ¥¡£Ö»²»¹ý·¢±íÕâÆªÎÄÕÂʱºÜ¶àÈËÐèÒªÕâ¸ö¹¦ÄÜ¡£
Õ⼸Ììд¸öÊý¾Ý¿â²éѯ·ÖÎöÆ÷£¬ÒªÓõ½XML¼Ç¼Óû§×¢²áµÄÊý¾Ý¿âÁ¬½ÓµØÖ·¡¢¶Ë¿ÚµÈÐÅÏ¢£¬×ʼÏëÓÃjavaµÄpropertieÀàÀ´Íê³É¡£µ«propertie²»Ö§³Ö[С½áÃû--¼üÖµÃû--¼üÖµ]ÕâÖֽṹ£¬Èç¹ûÒª¼Ç¼Óû§×¢²áµÄ¶à¸öÊý¾Ý¿âÐÅÏ¢µÄ»°£¬propertieÖоͱØÐëÓÃ[С½áÃû.¼üÖµÃû=¼üÖµ]ÕâÖÖ¸ñʽ½øÐмǼ£¬ºóÀ´Óõ½xml£¬Íê³ÉÁËÀàËÆiniÎļþ¶ÁÈ¡ºÍ±£´æµÄ¹¦ÄÜ£¬É¾³ý¹¦ÄÜĿǰ»¹Ã»×ö£¬ÒªÊµÏֺܼòµ¥£¬ËùÒÔ¾Íû°üº¬ÔÚ´úÂëÀïÃæÁË¡£
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SERVER>
<CRM>
<IP>162.105.167.4</IP>
<PORT>5000</PORT>
<CHARSET>cp850</CHARSET>
<DBTYPE>Sybase</DBTYPE>
<DBNAME>BB_CRM</DBNAME>
</CRM>
<JYGS>
<IP>162.105.16 ......