<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
	<channel>
		<title>½ðÂóÍøÂç</title>
		<link>http://www.kingmx.com</link>
		<copyright>Copyright (C) 2006 ½ðÂóÍøÂç-Kingmx.com All Rights Reserved.</copyright>
		<item>
			<title>JspÍêÈ«¹¥ÂÔË÷Òý¼°µç×ÓÊéÏÂÔØ</title>
			<link>http://www.kingmx.com/article.php?id=14672</link>
			<pubDate>2006-12-12</pubDate>
			<description><![CDATA[JSPµÄÓ¢ÎÄÈ«³ÆÊÇJava Server Page,ÖÐÎÄÈ«³ÆÊÇJava·þÎñÆ÷¶ËÓïÑÔ¡£×ÔJSPÍÆ³öºó£¬ÖÚ¶à´ó¹«Ë¾¶¼Ö§³ÖJSP¼¼ÊõµÄ·þÎñÆ÷£¬ÈçIBM¡¢Oracle¡¢Bea¹«Ë¾µÈ£¬ËùÒÔJSPÑ¸ËÙ³ÉÎªÉÌÒµÓ¦ÓÃµÄ·þÎñÆ÷¶ËÓïÑÔ¡£ËüÓÐ5´óÓÅÊÆ£º£¨1£©JSP·½±ãÓëHTML»ìºÏ£»£¨2£©JSPÔËÐÐËÙ¶È¸ü¿ì£»£¨3£©JSP¼¼ÊõÓÐÖÚ¶à´óÈí¼þ¹«Ë¾Ö§³Ö£»£¨4£©JSP¼¼ÊõÓÐÖÚ¶à¿ª·ÅÐÔ´úÂë×éÖ¯Ö§³Ö£»£¨5£©¿ÉÒÔ¿çÆ½Ì¨ÔËÐÐ¡£
Jsp°²×°ÅäÖÃ
Java³õÑ§Õß£ºJsp¿ª·¢»·¾³ÅäÖÃÈ«¹ý³Ì 
http://www.chinaitlab.com/www/news/article_show.asp?id=34267
windowsÏÂjspÔËÐÐ»·¾³µÄÅäÖÃ·½°¸
http://www.chinaitlab.com/www/news/article_show.asp?id=36162
Freebsd+Resin³É¹¦½¨Á¢Ö§³ÖjspÆ½Ì¨
http://www.chinaitlab.com/www/news/article_show.asp?id=36096
Eclipse+MyEclipse+LombozÍ¼½â°²×°JSP
http://www.chinaitlab.com/www/news/article_show.asp?id=35302
Java³õÑ§Õß£ºJsp¿ª·¢»·¾³ÅäÖÃÈ«¹ý³Ì
http://www.chinaitlab.com/www/news/article_show.asp?id=34267
LinuxÏÂjsp»·¾³£ºapache,tomcatÅäÖÃ 
http://www.chinaitlab.com/www/news/article_show.asp?id=34186
LinuxÏÂJSPÔËÐÐ¡¢¿ª·¢»·¾³µÄ½¨Á¢
http://www.chinaitlab.com/www/news/article_show.asp?id=33466
Tomcat+JSP¾­µäÅäÖÃÊµÀý
http://www.chinaitlab.com/www/news/article_show.asp?id=33170
ÐÂÊÖÈëÃÅÖ®WindowsÏÂJSP°²×°È«Í¼½â
http://www.chinaitlab.com/www/news/article_show.asp?id=33352
ÅäÖÃEclpise+tomcatÓëÊµÏÖJSP²¿Êð
http://www.chinaitlab.com/www/news/article_show.asp?id=32894
ÈçºÎÉèÖÃJSP¿ª·¢¼°ÔËÐÐ»·¾³
http://www.chinaitlab.com/www/news/article_show.asp?id=31020
Ò»²½Ò»²½¸úÎÒÑ§LinuxÆ½Ì¨ÏÂ´î½¨Jsp»·¾³
http://www.chinaitlab.com/www/news/article_show.asp?id=31522
ÔÚWindows 2000ÏÂ´î½¨JSP»·¾³
http://www.chinaitlab.com/www/news/article_show.asp?id=30850
Eclipse 3.0 ÉÏÅäÖÃJSP¿ª·¢»·¾³
http://www.chinaitlab.com/www/news/article_show.asp?id=30056
Ö§³ÖJSPµÄWEBÈÝÆ÷Tomcat»·¾³ÅäÖÃ
http://www.chinaitlab.com/www/news/article_show.asp?id=26471
Jsp»ù´¡Ñ§Ï°
JavaºÍJSP±à³ÌÓ¦¸Ã×¢ÒâµÄÁù¸ö³£¼ûÎÊÌâ
http://www.chinaitlab.com/www/news/article_show.asp?id=35870
JSPÓëASP.NetÖ®¼äµÄSessionÖµ¹²Ïí
http://www.chinaitlab.com/www/news/article_show.asp?id=35624
Java°®ºÃÕß²ËÔ°ÅàÑµ£ºJSP¼°Óï·¨¸ÅÒª
http://www.chinaitlab.com/www/news/article_show.asp?id=34972
¹ØÓÚJSPÓï·¨´óÈ«¼°ÊµÀý½âÎö
http://www.chinaitlab.com/www/news/article_show.asp?id=32941
JSP¿ª·¢µÄ°²È«±à³ÌÊµÀýÏêÏ¸½âÎö
http://www.chinaitlab.com/www/news/article_show.asp?id=32762
JBuilder2005ÊµÕ½JSPÖ®³ÌÐò¹¦ÄÜ½éÉÜ
http://www.chinaitlab.com/www/news/article_show.asp?id=31769
³õÑ§ÕßÈçºÎ¿ìËÙÈëÃÅJSPÊµÀý·ÖÎö
http://www.chinaitlab.com/www/news/article_show.asp?id=31015
JSP¼òÃ÷½Ì³Ì£ºÁîÈËÐË·ÜµÄ½Å±¾±à³Ì
http://www.chinaitlab.com/www/news/article_show.asp?id=30851
JSP¼òÃ÷½Ì³Ì£ºÐÐÎª±êÇ©ÓëÊµÀý
http://www.chinaitlab.com/www/news/article_show.asp?id=30849
JavaºÍJSP±à³ÌÖÐÓ¦¸Ã×¢ÒâµÄ¼¸¸öÎÊÌâ
http://www.chinaitlab.com/www/news/article_show.asp?id=29989
JSPÐÂÊÖÈëÃÅ³õ¼¶½Ì³ÌÖ®JSP¸ÅÊö
http://www.chinaitlab.com/www/news/article_show.asp?id=29745
JSP±ÜÃâFormÖØ¸´Ìá½»µÄÈýÖÖ·½°¸
http://www.chinaitlab.com/www/news/article_show.asp?id=29744
JSPÈëÃÅ³õ¼¶½Ì³ÌÖ®Ô¤¶¨Òå±äÁ¿µÄÊ¹ÓÃ
http://www.chinaitlab.com/www/news/article_show.asp?id=28478
JSPÈëÃÅ³õ¼¶½Ì³ÌÖ®ActionsµÄÊ¹ÓÃ
http://www.chinaitlab.com/www/news/article_show.asp?id=28479
JSPÈëÃÅ³õ¼¶½Ì³ÌÖ®JSPÖ¸Áî
http://www.chinaitlab.com/www/news/article_show.asp?id=28477
JSPÈëÃÅ³õ¼¶½Ì³ÌÖ®ÊµÏÖÒ³ÃæÌø×ª
http://www.chinaitlab.com/www/news/article_show.asp?id=28480 
ServletÓëApplet
JSP/ServletÓ¦ÓÃ³ÌÐòÓÅ»¯°Ë·¨
http://www.chinaitlab.com/www/news/article_show.asp?id=33256
Servlet¼°JSPÖÐµÄ¶àÏß³ÌÍ¬²½ÎÊÌâ
http://www.chinaitlab.com/www/news/article_show.asp?id=33087
±à³ÌÕßÈëÃÅ£ºÌ¸Servlet/JSPµÄÅäÖÃÏê½â
http://www.chinaitlab.com/www/news/article_show.asp?id=32474
ServletºÍJSP ÐÔÄÜµ÷Õû¼¼Êõ
http://www.chinaitlab.com/www/news/article_show.asp?id=31112
ServletsºÍJSP Pages×î¼ÑÊµ¼ù
http://www.chinaitlab.com/www/news/article_show.asp?id=30854
ÉîÈëÀí½âºÍ¸Ä½øJSP/Servlet»á»°¹ÜÀí»úÖÆ
http://www.chinaitlab.com/www/news/article_show.asp?id=30678
ÔÚJSP-Servlet¿ª·¢ÖÐµ¼ÈëÊÂ¼þÇý¶¯¼¼Êõ
http://www.chinaitlab.com/www/news/article_show.asp?id=30565
JSP/ServletµÄÖØ¶¨Ïò¼¼Êõ×ÛÊö
http://www.chinaitlab.com/www/news/article_show.asp?id=30394
JSP/Servlet¹¹½¨Èý²ã¹ÜÀíÐÅÏ¢ÏµÍ³
http://www.chinaitlab.com/www/news/article_show.asp?id=27779
ÉîÈëÆÊÎöJSPºÍServlet¶ÔÖÐÎÄµÄ´¦Àí
http://www.chinaitlab.com/www/news/article_show.asp?id=27329
ÔÚJspÖÐÓÃBeanºÍServletÁªºÏÊµÏÖÓÃ»§×¢²á
http://www.chinaitlab.com/www/news/article_show.asp?id=26175
Java Servlet APIËµÃ÷ÎÄµµ£¨2.1a°æ£© 
http://www.chinaitlab.com/www/news/article_show.asp?id=27970
¸ßÐÔÄÜ¡¢¸ßµ¯ÐÔµÄJSPºÍServletµÄÐÔÄÜÓÅ»¯ 
http://www.chinaitlab.com/www/news/article_show.asp?id=21803
¹ØÓÚJava Servlet±à³ÌÓ¦ÓÃ»ù´¡·ÖÎö 
http://www.chinaitlab.com/www/news/article_show.asp?id=36795
ServletºÍJavaServerPagesµÄ¼¯³ÉÓ¦ÓÃ 
http://www.chinaitlab.com/www/news/article_show.asp?id=34761 
JspÊý¾Ý¿â
JSPÊ¹ÓÃÁ¬½Ó³ØÁ¬½ÓÊý¾Ý¿âµÄÎÊÌâ
http://www.chinaitlab.com/www/news/article_show.asp?id=35985
JSPÖÐÁ¬½ÓSQL 2000Êý¾Ý¿âµÄÎÊÌâ×Ü½á
http://www.chinaitlab.com/www/news/article_show.asp?id=34790
¼Ó¿ìJDBCÉè¼ÆÖÐJSP·ÃÎÊÊý¾Ý¿â
http://www.chinaitlab.com/www/news/article_show.asp?id=33258
JSPÁ¬½ÓMySQLÊý¾Ý¿â¹¥ÂÔ
http://www.chinaitlab.com/www/news/article_show.asp?id=32891
ÂÛJSPÊý¾Ý¿âÁ¬½Ó³ØµÄ±ØÒªÐÔ
http://www.chinaitlab.com/www/news/article_show.asp?id=32078
JBuilder2005ÊµÕ½JSPÖ®´´½¨Êý¾Ý¿â±í
http://www.chinaitlab.com/www/news/article_show.asp?id=31796
ÓÃJSPµ¼³öORACLEµÄÊý¾Ý±íDDL
http://www.chinaitlab.com/www/news/article_show.asp?id=30812
JSPÁ¬½ÓSQL Server 2000ÏµÍ³ÅäÖÃ
http://www.chinaitlab.com/www/news/article_show.asp?id=30404
JSPÊý¾Ý¿â»ù´¡ÖªÊ¶ Óï·¨Ïê½â
http://www.chinaitlab.com/www/news/article_show.asp?id=29746
JSPÖÐµ÷ÓÃOracle´æ´¢¹ý³ÌµÄÐ¡Àý×Ó
http://www.chinaitlab.com/www/news/article_show.asp?id=28000
JSPÁ¬½ÓÊý¾Ý¿â·½·¨´óÈ«
http://www.chinaitlab.com/www/news/article_show.asp?id=27994
´´½¨·ÃÎÊDB2 EveryplaceµÄJSPÓ¦ÓÃ³ÌÐò
http://www.chinaitlab.com/www/news/article_show.asp?id=27904
Servlet¿ª·¢ÖÐJDBCµÄ¸ß¼¶Ó¦ÓÃ 
http://www.chinaitlab.com/www/news/article_show.asp?id=32127
¼Ó¿ìJDBCÉè¼ÆÖÐJSP·ÃÎÊÊý¾Ý¿â 
http://www.chinaitlab.com/www/news/article_show.asp?id=33258
JBuilder2005ÊµÕ½JSPÖ®´´½¨Êý¾Ý¿â±í 
http://www.chinaitlab.com/www/news/article_show.asp?id=31796
Jsp¾­µäÊµÀý
JSP±¨±í´òÓ¡µÄÒ»ÖÖ¼òµ¥½â¾ö·½°¸
http://www.chinaitlab.com/www/news/article_show.asp?id=37025
Ïê½âÈçºÎÀûÓÃiTextÔÚJSPÖÐÉú³ÉPDF±¨±í
http://www.chinaitlab.com/www/news/article_show.asp?id=33082
JBuilder2005ÊµÕ½JSPÖ®ÌØÊâÒ³Ãæ
http://www.chinaitlab.com/www/news/article_show.asp?id=31967
JBuilder2005ÊµÕ½JSPÖ®´íÎó´¦Àí
http://www.chinaitlab.com/www/news/article_show.asp?id=31966
ÏêÏ¸½âÎöJSP±à³ÌÖÐ½ø¶ÈÌõµÄÉè¼ÆÊµÀý
http://www.chinaitlab.com/www/news/article_show.asp?id=31616
¿ª·¢ÊµÀý£ºJSPÖÐÊµÏÖÈ«ÎÄ¼ìË÷
http://www.chinaitlab.com/www/news/article_show.asp?id=31017
JSPºÍIISµÄ×î¼Ñ½â¾ö·½°¸ÊµÀý·ÖÎö
http://www.chinaitlab.com/www/news/article_show.asp?id=30718
ÔÚJSPÖÐÊ¹ÓÃJavaMailÓÊ¼þ·¢ËÍÊÕÈ¡(1)
http://www.chinaitlab.com/www/news/article_show.asp?id=27679
ÔÚJSPÖÐÊ¹ÓÃJavaMailÓÊ¼þ·¢ËÍÊÕÈ¡(2)
http://www.chinaitlab.com/www/news/article_show.asp?id=27680
ÓÃjsp¶¯Ì¬Êä³öexcelÎÄµµºÍÖÐÎÄÂÒÂëÎÊÌâµÄ½â¾ö
http://www.chinaitlab.com/www/news/article_show.asp?id=26128
Jspµç×Ó½Ì³Ì
JSPÓï·¨ 
http://www.chinaitlab.com/www/news/article_show.asp?id=37149
JSPÑ§Ï°Ö¸ÄÏ 
http://www.chinaitlab.com/www/news/article_show.asp?id=37148
JSPÍøÒ³±à³Ì(PPT) 
http://www.chinaitlab.com/www/news/article_show.asp?id=37146
JSPÍøÂç±à³Ì¼¼Êõ 
http://www.chinaitlab.com/www/news/article_show.asp?id=37145
JSPËÙ³É½Ì³Ì 
http://www.chinaitlab.com/www/news/article_show.asp?id=37143
JSPÈëÃÅÓëÌá¸ß 
http://www.chinaitlab.com/www/news/article_show.asp?id=37142
JSP¿ìËÙÈëÃÅ 
http://www.chinaitlab.com/www/news/article_show.asp?id=37141
JSPºËÐÄ¼¼ÊõºÍµç×ÓÉÌÎñÓ¦ÓÃÊµÀýÔ´´úÂë·ÖÎö 
http://www.chinaitlab.com/www/news/article_show.asp?id=37140
JSP¸ß¼¶±à³Ì5 
http://www.chinaitlab.com/www/news/article_show.asp?id=37139
JSP¸ß¼¶±à³Ì4 
http://www.chinaitlab.com/www/news/article_show.asp?id=37138
JSP¸ß¼¶±à³Ì3 
http://www.chinaitlab.com/www/news/article_show.asp?id=37137
JSP¸ß¼¶±à³Ì2 
http://www.chinaitlab.com/www/news/article_show.asp?id=37136
JSP¸ß¼¶±à³Ì1 
http://www.chinaitlab.com/www/news/article_show.asp?id=37134
JSP³ÌÐòÉè¼ÆÖ¸ÄÏ 
http://www.chinaitlab.com/www/news/article_show.asp?id=37133
JSP ÊµÓÃ½Ì³Ì 
http://www.chinaitlab.com/www/news/article_show.asp?id=37132
JSP ¶¯Ì¬ÍøÕ¾¼¼ÊõÈëÃÅÓëÌá¸ß 
http://www.chinaitlab.com/www/news/article_show.asp?id=37131
JSP and XML 
http://www.chinaitlab.com/www/news/article_show.asp?id=37130
Java¿ª·¢Ö¸ÄÏ--ServletsºÍJSPÆª 
http://www.chinaitlab.com/www/news/article_show.asp?id=37129
JavaServerPages»ù´¡ 
http://www.chinaitlab.com/www/news/article_show.asp?id=37128
JavaServer Pages Second Edition 
http://www.chinaitlab.com/www/news/article_show.asp?id=37127
JavaServer Pages 3rd Edition 
http://www.chinaitlab.com/www/news/article_show.asp?id=37126&nbsp;&nbsp; ]]></description>
		</item>
		<item>
			<title>TOMCATÓÃhttpsÌæ»»httpµÄ·½·¨</title>
			<link>http://www.kingmx.com/article.php?id=14364</link>
			<pubDate>2006-11-23</pubDate>
			<description><![CDATA[
TOMCAT ÓÃhttpsÌæ»»httpµÄ·½·¨

1.Ê×ÏÈÓÃjdk×Ô´øµÄ¹¤¾ßkeytoolÉú³ÉÒ»¸öÖ¤Êékeystore

JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/my/keystore

2.Èç¹ûÊÇJDK1.3ÒÔÏÂÔòÐèÒªÏÂÔØJava Secure Socket Extensions (JSSE) package, version 1.0.2 or later£¬ÇÒ½«jcert.jar, jnet.jar, jsse.jar¿½±´µ½$JAVA_HOME/jre/lib/ext 
Èç¹ûÊÇJDK1.4.xÔòÒÑ¾­ÓÐÕâÐ©°ü¡£

3.ÐÞ¸ÄtomcatÄ¿Â¼ÏÂµÄserver.xmlÎÄ¼þ£¬Ôö¼Ó 
&amp;Lt;Connector className="org.apache.catalina.connector.http.HttpConnector" 
port="8443" minProcessors="5" maxProcessors="75" 
enableLookups="true" 
acceptCount="10" debug="0" scheme="https" secure="true"&gt; 
&amp;Lt;Factory className="org.apache.catalina.net.SSLServerSocketFactory" 
clientAuth="false" keystoreFile="/path/to/my/keystore" keystorePass="runway" protocol="TLS"/&gt; 
&amp;Lt;/Connector&gt;

ÆäÖÐkeystorePassµÄÖµÎªÉú³ÉkeystoreÊ±ÊäÈëµÄÃÜÂë¡£ 

ÖØÐÂÆô¶¯tomcat£¬¾Í¿ÉÒÔÊ¹ÓÃhttpsÁË
]]></description>
		</item>
		<item>
			<title>ÔËÓÃ¼ÓÃÜ¼¼Êõ±£»¤JavaÔ´´úÂë</title>
			<link>http://www.kingmx.com/article.php?id=13043</link>
			<pubDate>2006-10-26</pubDate>
			<description><![CDATA[
Java³ÌÐòµÄÔ´´úÂëºÜÈÝÒ×±»±ðÈËÍµ¿´¡£Ö»ÒªÓÐÒ»¸ö·´±àÒëÆ÷£¬ÈÎºÎÈË¶¼¿ÉÒÔ·ÖÎö±ðÈËµÄ´úÂë¡£±¾ÎÄÌÖÂÛÈçºÎÔÚ²»ÐÞ¸ÄÔ­ÓÐ³ÌÐòµÄÇé¿öÏÂ£¬Í¨¹ý¼ÓÃÜ¼¼Êõ±£»¤Ô´´úÂë¡£
¡¡¡¡Ò»¡¢ÎªÊ²Ã´Òª¼ÓÃÜ£¿
¡¡¡¡¶ÔÓÚ´«Í³µÄC»òC++Ö®ÀàµÄÓïÑÔÀ´Ëµ£¬ÒªÔÚWebÉÏ±£»¤Ô´´úÂëÊÇºÜÈÝÒ×µÄ£¬Ö»Òª²»·¢²¼Ëü¾Í¿ÉÒÔ¡£ÒÅº¶µÄÊÇ£¬Java³ÌÐòµÄÔ´´úÂëºÜÈÝÒ×±»±ðÈËÍµ¿´¡£Ö»ÒªÓÐÒ»¸ö·´±àÒëÆ÷£¬ÈÎºÎÈË¶¼¿ÉÒÔ·ÖÎö±ðÈËµÄ´úÂë¡£JavaµÄÁé»îÐÔÊ¹µÃÔ´´úÂëºÜÈÝÒ×±»ÇÔÈ¡£¬µ«Óë´ËÍ¬Ê±£¬ËüÒ²Ê¹Í¨¹ý¼ÓÃÜ±£»¤´úÂë±äµÃÏà¶ÔÈÝÒ×£¬ÎÒÃÇÎ¨Ò»ÐèÒªÁË½âµÄ¾ÍÊÇJavaµÄClassLoader¶ÔÏó¡£µ±È»£¬ÔÚ¼ÓÃÜ¹ý³ÌÖÐ£¬ÓÐ¹ØJava Cryptography Extension£¨JCE£©µÄÖªÊ¶Ò²ÊÇ±Ø²»¿ÉÉÙµÄ¡£ 
¡¡¡¡ÓÐ¼¸ÖÖ¼¼Êõ¿ÉÒÔ¡°Ä£ºý¡±JavaÀàÎÄ¼þ£¬Ê¹µÃ·´±àÒëÆ÷´¦ÀíÀàÎÄ¼þµÄÐ§¹û´ó´òÕÛ¿Û¡£È»¶ø£¬ÐÞ¸Ä·´±àÒëÆ÷Ê¹Ö®ÄÜ¹»´¦ÀíÕâÐ©¾­¹ýÄ£ºý´¦ÀíµÄÀàÎÄ¼þ²¢²»ÊÇÊ²Ã´ÄÑÊÂ£¬ËùÒÔ²»ÄÜ¼òµ¥µØÒÀÀµÄ£ºý¼¼ÊõÀ´±£Ö¤Ô´´úÂëµÄ°²È«¡£
¡¡¡¡ÎÒÃÇ¿ÉÒÔÓÃÁ÷ÐÐµÄ¼ÓÃÜ¹¤¾ß¼ÓÃÜÓ¦ÓÃ£¬±ÈÈçPGP£¨Pretty Good Privacy£©»òGPG£¨GNU Privacy Guard£©¡£ÕâÊ±£¬×îÖÕÓÃ»§ÔÚÔËÐÐÓ¦ÓÃÖ®Ç°±ØÐëÏÈ½øÐÐ½âÃÜ¡£µ«½âÃÜÖ®ºó£¬×îÖÕÓÃ»§¾ÍÓÐÁËÒ»·Ý²»¼ÓÃÜµÄÀàÎÄ¼þ£¬ÕâºÍÊÂÏÈ²»½øÐÐ¼ÓÃÜÃ»ÓÐÊ²Ã´²î±ð¡£
¡¡¡¡JavaÔËÐÐÊ±×°Èë×Ö½ÚÂëµÄ»úÖÆÒþº¬µØÒâÎ¶×Å¿ÉÒÔ¶Ô×Ö½ÚÂë½øÐÐÐÞ¸Ä¡£JVMÃ¿´Î×°ÈëÀàÎÄ¼þÊ±¶¼ÐèÒªÒ»¸ö³ÆÎªClassLoaderµÄ¶ÔÏó£¬Õâ¸ö¶ÔÏó¸ºÔð°ÑÐÂµÄÀà×°ÈëÕýÔÚÔËÐÐµÄJVM¡£JVM¸øClassLoaderÒ»¸ö°üº¬ÁË´ý×°ÈëÀà£¨±ÈÈçjava.lang.Object£©Ãû×ÖµÄ×Ö·û´®£¬È»ºóÓÉClassLoader¸ºÔðÕÒµ½ÀàÎÄ¼þ£¬×°ÈëÔ­Ê¼Êý¾Ý£¬²¢°ÑËü×ª»»³ÉÒ»¸öClass¶ÔÏó¡£
¡¡¡¡ÎÒÃÇ¿ÉÒÔÍ¨¹ý¶¨ÖÆClassLoader£¬ÔÚÀàÎÄ¼þÖ´ÐÐÖ®Ç°ÐÞ¸ÄËü¡£ÕâÖÖ¼¼ÊõµÄÓ¦ÓÃ·Ç³£¹ã·º??ÔÚÕâÀï£¬ËüµÄÓÃÍ¾ÊÇÔÚÀàÎÄ¼þ×°ÈëÖ®Ê±½øÐÐ½âÃÜ£¬Òò´Ë¿ÉÒÔ¿´³ÉÊÇÒ»ÖÖ¼´Ê±½âÃÜÆ÷¡£ÓÉÓÚ½âÃÜºóµÄ×Ö½ÚÂëÎÄ¼þÓÀÔ¶²»»á±£´æµ½ÎÄ¼þÏµÍ³£¬ËùÒÔÇÔÃÜÕßºÜÄÑµÃµ½½âÃÜºóµÄ´úÂë¡£
¡¡¡¡ÓÉÓÚ°ÑÔ­Ê¼×Ö½ÚÂë×ª»»³ÉClass¶ÔÏóµÄ¹ý³ÌÍêÈ«ÓÉÏµÍ³¸ºÔð£¬ËùÒÔ´´½¨¶¨ÖÆClassLoader¶ÔÏóÆäÊµ²¢²»À§ÄÑ£¬Ö»ÐèÏÈ»ñµÃÔ­Ê¼Êý¾Ý£¬½Ó×Å¾Í¿ÉÒÔ½øÐÐ°üº¬½âÃÜÔÚÄÚµÄÈÎºÎ×ª»»¡£
¡¡¡¡Java 2ÔÚÒ»¶¨³Ì¶ÈÉÏ¼ò»¯ÁË¶¨ÖÆClassLoaderµÄ¹¹½¨¡£ÔÚJava 2ÖÐ£¬loadClassµÄÈ±Ê¡ÊµÏÖÈÔ¾É¸ºÔð´¦ÀíËùÓÐ±ØÐèµÄ²½Öè£¬µ«ÎªÁË¹Ë¼°¸÷ÖÖ¶¨ÖÆµÄÀà×°Èë¹ý³Ì£¬Ëü»¹µ÷ÓÃÒ»¸öÐÂµÄfindClass·½·¨¡£
¡¡¡¡ÕâÎªÎÒÃÇ±àÐ´¶¨ÖÆµÄClassLoaderÌá¹©ÁËÒ»Ìõ½Ý¾¶£¬¼õÉÙÁËÂé·³£ºÖ»Ðè¸²¸ÇfindClass£¬¶ø²»ÊÇ¸²¸ÇloadClass¡£ÕâÖÖ·½·¨±ÜÃâÁËÖØ¸´ËùÓÐ×°ÈëÆ÷±ØÐèÖ´ÐÐµÄ¹«¹²²½Öè£¬ÒòÎªÕâÒ»ÇÐÓÉloadClass¸ºÔð¡£
¡¡¡¡²»¹ý£¬±¾ÎÄµÄ¶¨ÖÆClassLoader²¢²»Ê¹ÓÃÕâÖÖ·½·¨¡£Ô­ÒòºÜ¼òµ¥¡£Èç¹ûÓÉÄ¬ÈÏµÄClassLoaderÏÈÑ°ÕÒ¾­¹ý¼ÓÃÜµÄÀàÎÄ¼þ£¬Ëü¿ÉÒÔÕÒµ½£»µ«ÓÉÓÚÀàÎÄ¼þÒÑ¾­¼ÓÃÜ£¬ËùÒÔËü²»»áÈÏ¿ÉÕâ¸öÀàÎÄ¼þ£¬×°Èë¹ý³Ì½«Ê§°Ü¡£Òò´Ë£¬ÎÒÃÇ±ØÐë×Ô¼ºÊµÏÖloadClass£¬ÉÔÎ¢Ôö¼ÓÁËÒ»Ð©¹¤×÷Á¿¡£
¡¡¡¡¶þ¡¢¶¨ÖÆÀà×°ÈëÆ÷
¡¡¡¡Ã¿Ò»¸öÔËÐÐ×ÅµÄJVMÒÑ¾­ÓµÓÐÒ»¸öClassLoader¡£Õâ¸öÄ¬ÈÏµÄClassLoader¸ù¾ÝCLASSPATH»·¾³±äÁ¿µÄÖµ£¬ÔÚ±¾µØÎÄ¼þÏµÍ³ÖÐÑ°ÕÒºÏÊÊµÄ×Ö½ÚÂëÎÄ¼þ¡£
¡¡¡¡Ó¦ÓÃ¶¨ÖÆClassLoaderÒªÇó¶ÔÕâ¸ö¹ý³ÌÓÐ½ÏÎªÉîÈëµÄÈÏÊ¶¡£ÎÒÃÇÊ×ÏÈ±ØÐë´´½¨Ò»¸ö¶¨ÖÆClassLoaderÀàµÄÊµÀý£¬È»ºóÏÔÊ½µØÒªÇóËü×°ÈëÁíÍâÒ»¸öÀà¡£Õâ¾ÍÇ¿ÖÆJVM°Ñ¸ÃÀàÒÔ¼°ËùÓÐËüËùÐèÒªµÄÀà¹ØÁªµ½¶¨ÖÆµÄClassLoader¡£Listing 1ÏÔÊ¾ÁËÈçºÎÓÃ¶¨ÖÆClassLoader×°ÈëÀàÎÄ¼þ¡£
¡¡¡¡¡¾Listing 1£ºÀûÓÃ¶¨ÖÆµÄClassLoader×°ÈëÀàÎÄ¼þ¡¿




// Ê×ÏÈ´´½¨Ò»¸öClassLoader¶ÔÏó
ClassLoader myClassLoader = new myClassLoader();
// ÀûÓÃ¶¨ÖÆClassLoader¶ÔÏó×°ÈëÀàÎÄ¼þ
// ²¢°ÑËü×ª»»³ÉClass¶ÔÏó
Class myClass = myClassLoader.loadClass( "mypackage.MyClass" );
// ×îºó£¬´´½¨¸ÃÀàµÄÒ»¸öÊµÀý
Object newInstance = myClass.newInstance();
// ×¢Òâ£¬MyClassËùÐèÒªµÄËùÓÐÆäËûÀà£¬¶¼½«Í¨¹ý
// ¶¨ÖÆµÄClassLoader×Ô¶¯×°Èë

¡¡¡¡ÈçÇ°ËùÊö£¬¶¨ÖÆClassLoaderÖ»ÐèÏÈ»ñÈ¡ÀàÎÄ¼þµÄÊý¾Ý£¬È»ºó°Ñ×Ö½ÚÂë´«µÝ¸øÔËÐÐÊ±ÏµÍ³£¬ÓÉºóÕßÍê³ÉÓàÏÂµÄÈÎÎñ¡£
¡¡¡¡ClassLoaderÓÐ¼¸¸öÖØÒªµÄ·½·¨¡£´´½¨¶¨ÖÆµÄClassLoaderÊ±£¬ÎÒÃÇÖ»Ðè¸²¸ÇÆäÖÐµÄÒ»¸ö£¬¼´loadClass£¬Ìá¹©»ñÈ¡Ô­Ê¼ÀàÎÄ¼þÊý¾ÝµÄ´úÂë¡£Õâ¸ö·½·¨ÓÐÁ½¸ö²ÎÊý£ºÀàµÄÃû×Ö£¬ÒÔ¼°Ò»¸ö±íÊ¾JVMÊÇ·ñÒªÇó½âÎöÀàÃû×ÖµÄ±ê¼Ç£¨¼´ÊÇ·ñÍ¬Ê±×°ÈëÓÐÒÀÀµ¹ØÏµµÄÀà£©¡£Èç¹ûÕâ¸ö±ê¼ÇÊÇtrue£¬ÎÒÃÇÖ»ÐèÔÚ·µ»ØJVMÖ®Ç°µ÷ÓÃresolveClass¡£
¡¡¡¡¡¾Listing 2£ºClassLoader.loadClass()µÄÒ»¸ö¼òµ¥ÊµÏÖ¡¿




public Class loadClass( String name, boolean resolve )
throws ClassNotFoundException ...{
¡¡try ...{
¡¡¡¡// ÎÒÃÇÒª´´½¨µÄClass¶ÔÏó
¡¡¡¡Class clasz = null;
¡¡¡¡// ±ØÐèµÄ²½Öè1£ºÈç¹ûÀàÒÑ¾­ÔÚÏµÍ³»º³åÖ®ÖÐ£¬
¡¡¡¡// ÎÒÃÇ²»±ØÔÙ´Î×°ÈëËü
¡¡¡¡clasz = findLoadedClass( name );
¡¡¡¡if (clasz != null)
¡¡¡¡¡¡return clasz;
¡¡¡¡// ÏÂÃæÊÇ¶¨ÖÆ²¿·Ö
¡¡¡¡byte classData[] = /**//* Í¨¹ýÄ³ÖÖ·½·¨»ñÈ¡×Ö½ÚÂëÊý¾Ý */;
¡¡¡¡if (classData != null) ...{
¡¡¡¡¡¡// ³É¹¦¶ÁÈ¡×Ö½ÚÂëÊý¾Ý£¬ÏÖÔÚ°ÑËü×ª»»³ÉÒ»¸öClass¶ÔÏó
¡¡¡¡¡¡clasz = defineClass( name, classData, 0, classData.length );
¡¡¡¡}
¡¡¡¡// ±ØÐèµÄ²½Öè2£ºÈç¹ûÉÏÃæÃ»ÓÐ³É¹¦£¬
¡¡¡¡// ÎÒÃÇ³¢ÊÔÓÃÄ¬ÈÏµÄClassLoader×°ÈëËü 
¡¡¡¡if (clasz == null)
¡¡¡¡¡¡clasz = findSystemClass( name );
¡¡¡¡// ±ØÐèµÄ²½Öè3£ºÈçÓÐ±ØÒª£¬Ôò×°ÈëÏà¹ØµÄÀà
¡¡¡¡if (resolve &amp;&amp; clasz != null)
¡¡¡¡¡¡resolveClass( clasz );
¡¡¡¡// °ÑÀà·µ»Ø¸øµ÷ÓÃÕß
¡¡¡¡return clasz;
¡¡} catch( IOException ie ) ...{
¡¡¡¡throw new ClassNotFoundException( ie.toString() );
¡¡} catch( GeneralSecurityException gse ) ...{
¡¡¡¡throw new ClassNotFoundException( gse.toString() );
¡¡}
}

¡¡¡¡Listing 2ÏÔÊ¾ÁËÒ»¸ö¼òµ¥µÄloadClassÊµÏÖ¡£´úÂëÖÐµÄ´ó²¿·Ö¶ÔËùÓÐClassLoader¶ÔÏóÀ´Ëµ¶¼Ò»Ñù£¬µ«ÓÐÒ»Ð¡²¿·Ö£¨ÒÑÍ¨¹ý×¢ÊÍ±ê¼Ç£©ÊÇÌØÓÐµÄ¡£ÔÚ´¦Àí¹ý³ÌÖÐ£¬ClassLoader¶ÔÏóÒªÓÃµ½ÆäËû¼¸¸ö¸¨Öú·½·¨£º
¡¡¡¡findLoadedClass£ºÓÃÀ´½øÐÐ¼ì²é£¬ÒÔ±ãÈ·ÈÏ±»ÇëÇóµÄÀàµ±Ç°»¹²»´æÔÚ¡£loadClass·½·¨Ó¦¸ÃÊ×ÏÈµ÷ÓÃËü¡£ 
¡¡¡¡defineClass£º»ñµÃÔ­Ê¼ÀàÎÄ¼þ×Ö½ÚÂëÊý¾ÝÖ®ºó£¬µ÷ÓÃdefineClass°ÑËü×ª»»³ÉÒ»¸öClass¶ÔÏó¡£ÈÎºÎloadClassÊµÏÖ¶¼±ØÐëµ÷ÓÃÕâ¸ö·½·¨¡£ 
¡¡¡¡findSystemClass£ºÌá¹©Ä¬ÈÏClassLoaderµÄÖ§³Ö¡£Èç¹ûÓÃÀ´Ñ°ÕÒÀàµÄ¶¨ÖÆ·½·¨²»ÄÜÕÒµ½Ö¸¶¨µÄÀà£¨»òÕßÓÐÒâµØ²»ÓÃ¶¨ÖÆ·½·¨£©£¬Ôò¿ÉÒÔµ÷ÓÃ¸Ã·½·¨³¢ÊÔÄ¬ÈÏµÄ×°Èë·½Ê½¡£ÕâÊÇºÜÓÐÓÃµÄ£¬ÌØ±ðÊÇ´ÓÆÕÍ¨µÄJARÎÄ¼þ×°Èë±ê×¼JavaÀàÊ±¡£ 
¡¡¡¡resolveClass£ºµ±JVMÏëÒª×°ÈëµÄ²»½ö°üÀ¨Ö¸¶¨µÄÀà£¬¶øÇÒ»¹°üÀ¨¸ÃÀàÒýÓÃµÄËùÓÐÆäËûÀàÊ±£¬Ëü»á°ÑloadClassµÄresolve²ÎÊýÉèÖÃ³Étrue¡£ÕâÊ±£¬ÎÒÃÇ±ØÐëÔÚ·µ»Ø¸Õ¸Õ×°ÈëµÄClass¶ÔÏó¸øµ÷ÓÃÕßÖ®Ç°µ÷ÓÃresolveClass¡£ 

Èý¡¢¼ÓÃÜ¡¢½âÃÜ
¡¡¡¡Java¼ÓÃÜÀ©Õ¹¼´Java Cryptography Extension£¬¼ò³ÆJCE¡£ËüÊÇSunµÄ¼ÓÃÜ·þÎñÈí¼þ£¬°üº¬ÁË¼ÓÃÜºÍÃÜ³×Éú³É¹¦ÄÜ¡£JCEÊÇJCA£¨Java Cryptography Architecture£©µÄÒ»ÖÖÀ©Õ¹¡£
¡¡¡¡JCEÃ»ÓÐ¹æ¶¨¾ßÌåµÄ¼ÓÃÜËã·¨£¬µ«Ìá¹©ÁËÒ»¸ö¿ò¼Ü£¬¼ÓÃÜËã·¨µÄ¾ßÌåÊµÏÖ¿ÉÒÔ×÷Îª·þÎñÌá¹©Õß¼ÓÈë¡£³ýÁËJCE¿ò¼ÜÖ®Íâ£¬JCEÈí¼þ°ü»¹°üº¬ÁËSunJCE·þÎñÌá¹©Õß£¬ÆäÖÐ°üÀ¨Ðí¶àÓÐÓÃµÄ¼ÓÃÜËã·¨£¬±ÈÈçDES£¨Data Encryption Standard£©ºÍBlowfish¡£
¡¡¡¡Îª¼òµ¥¼Æ£¬ÔÚ±¾ÎÄÖÐÎÒÃÇ½«ÓÃDESËã·¨¼ÓÃÜºÍ½âÃÜ×Ö½ÚÂë¡£ÏÂÃæÊÇÓÃJCE¼ÓÃÜºÍ½âÃÜÊý¾Ý±ØÐë×ñÑ­µÄ»ù±¾²½Öè£º
¡¡¡¡²½Öè1£ºÉú³ÉÒ»¸ö°²È«ÃÜ³×¡£ÔÚ¼ÓÃÜ»ò½âÃÜÈÎºÎÊý¾ÝÖ®Ç°ÐèÒªÓÐÒ»¸öÃÜ³×¡£ÃÜ³×ÊÇËæÍ¬±»¼ÓÃÜµÄÓ¦ÓÃÒ»Æð·¢²¼µÄÒ»Ð¡¶ÎÊý¾Ý£¬Listing 3ÏÔÊ¾ÁËÈçºÎÉú³ÉÒ»¸öÃÜ³×¡£ ¡¾Listing 3£ºÉú³ÉÒ»¸öÃÜ³×¡¿




// DESËã·¨ÒªÇóÓÐÒ»¸ö¿ÉÐÅÈÎµÄËæ»úÊýÔ´
SecureRandom sr = new SecureRandom();
// ÎªÎÒÃÇÑ¡ÔñµÄDESËã·¨Éú³ÉÒ»¸öKeyGenerator¶ÔÏó
KeyGenerator kg = KeyGenerator.getInstance( "DES" );
kg.init( sr );
// Éú³ÉÃÜ³×
SecretKey key = kg.generateKey();
// »ñÈ¡ÃÜ³×Êý¾Ý
byte rawKeyData[] = key.getEncoded();
/**//* ½ÓÏÂÀ´¾Í¿ÉÒÔÓÃÃÜ³×½øÐÐ¼ÓÃÜ»ò½âÃÜ£¬»òÕß°ÑËü±£´æ
ÎªÎÄ¼þ¹©ÒÔºóÊ¹ÓÃ */
doSomething( rawKeyData );

¡¡¡¡²½Öè2£º¼ÓÃÜÊý¾Ý¡£µÃµ½ÃÜ³×Ö®ºó£¬½ÓÏÂÀ´¾Í¿ÉÒÔÓÃËü¼ÓÃÜÊý¾Ý¡£³ýÁË½âÃÜµÄClassLoaderÖ®Íâ£¬Ò»°ã»¹ÒªÓÐÒ»¸ö¼ÓÃÜ´ý·¢²¼Ó¦ÓÃµÄ¶ÀÁ¢³ÌÐò£¨¼ûListing 4£©¡£
¡¡¡¡¡¾Listing 4£ºÓÃÃÜ³×¼ÓÃÜÔ­Ê¼Êý¾Ý¡¿




// DESËã·¨ÒªÇóÓÐÒ»¸ö¿ÉÐÅÈÎµÄËæ»úÊýÔ´
SecureRandom sr = new SecureRandom();
byte rawKeyData[] = /**//* ÓÃÄ³ÖÖ·½·¨»ñµÃÃÜ³×Êý¾Ý */;
// ´ÓÔ­Ê¼ÃÜ³×Êý¾Ý´´½¨DESKeySpec¶ÔÏó
DESKeySpec dks = new DESKeySpec( rawKeyData );
// ´´½¨Ò»¸öÃÜ³×¹¤³§£¬È»ºóÓÃËü°ÑDESKeySpec×ª»»³É
// Ò»¸öSecretKey¶ÔÏó
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
SecretKey key = keyFactory.generateSecret( dks );
// Cipher¶ÔÏóÊµ¼ÊÍê³É¼ÓÃÜ²Ù×÷
Cipher cipher = Cipher.getInstance( "DES" );
// ÓÃÃÜ³×³õÊ¼»¯Cipher¶ÔÏó
cipher.init( Cipher.ENCRYPT_MODE, key, sr );
// ÏÖÔÚ£¬»ñÈ¡Êý¾Ý²¢¼ÓÃÜ
byte data[] = /**//* ÓÃÄ³ÖÖ·½·¨»ñÈ¡Êý¾Ý */
// ÕýÊ½Ö´ÐÐ¼ÓÃÜ²Ù×÷
byte encryptedData[] = cipher.doFinal( data );
// ½øÒ»²½´¦Àí¼ÓÃÜºóµÄÊý¾Ý
doSomething( encryptedData );

¡¡¡¡²½Öè3£º½âÃÜÊý¾Ý¡£ÔËÐÐ¾­¹ý¼ÓÃÜµÄÓ¦ÓÃÊ±£¬ClassLoader·ÖÎö²¢½âÃÜÀàÎÄ¼þ¡£²Ù×÷²½ÖèÈçListing 5ËùÊ¾¡£ 
¡¡¡¡¡¾Listing 5£ºÓÃÃÜ³×½âÃÜÊý¾Ý¡¿




// DESËã·¨ÒªÇóÓÐÒ»¸ö¿ÉÐÅÈÎµÄËæ»úÊýÔ´
SecureRandom sr = new SecureRandom();
byte rawKeyData[] = /**//* ÓÃÄ³ÖÖ·½·¨»ñÈ¡Ô­Ê¼ÃÜ³×Êý¾Ý */;
// ´ÓÔ­Ê¼ÃÜ³×Êý¾Ý´´½¨Ò»¸öDESKeySpec¶ÔÏó
DESKeySpec dks = new DESKeySpec( rawKeyData );
// ´´½¨Ò»¸öÃÜ³×¹¤³§£¬È»ºóÓÃËü°ÑDESKeySpec¶ÔÏó×ª»»³É
// Ò»¸öSecretKey¶ÔÏó
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
SecretKey key = keyFactory.generateSecret( dks );
// Cipher¶ÔÏóÊµ¼ÊÍê³É½âÃÜ²Ù×÷
Cipher cipher = Cipher.getInstance( "DES" );
// ÓÃÃÜ³×³õÊ¼»¯Cipher¶ÔÏó
cipher.init( Cipher.DECRYPT_MODE, key, sr );
// ÏÖÔÚ£¬»ñÈ¡Êý¾Ý²¢½âÃÜ
byte encryptedData[] = /**//* »ñµÃ¾­¹ý¼ÓÃÜµÄÊý¾Ý */
// ÕýÊ½Ö´ÐÐ½âÃÜ²Ù×÷
byte decryptedData[] = cipher.doFinal( encryptedData );
// ½øÒ»²½´¦Àí½âÃÜºóµÄÊý¾Ý
doSomething( decryptedData );


ËÄ¡¢Ó¦ÓÃÊµÀý
¡¡¡¡Ç°Ãæ½éÉÜÁËÈçºÎ¼ÓÃÜºÍ½âÃÜÊý¾Ý¡£Òª²¿ÊðÒ»¸ö¾­¹ý¼ÓÃÜµÄÓ¦ÓÃ£¬²½ÖèÈçÏÂ£º
¡¡¡¡²½Öè1£º´´½¨Ó¦ÓÃ¡£ÎÒÃÇµÄÀý×Ó°üº¬Ò»¸öAppÖ÷Àà£¬Á½¸ö¸¨ÖúÀà£¨·Ö±ð³ÆÎªFooºÍBar£©¡£Õâ¸öÓ¦ÓÃÃ»ÓÐÊ²Ã´Êµ¼Ê¹¦ÓÃ£¬µ«Ö»ÒªÎÒÃÇÄÜ¹»¼ÓÃÜÕâ¸öÓ¦ÓÃ£¬¼ÓÃÜÆäËûÓ¦ÓÃÒ²¾Í²»ÔÚ»°ÏÂ¡£ 
¡¡¡¡²½Öè2£ºÉú³ÉÒ»¸ö°²È«ÃÜ³×¡£ÔÚÃüÁîÐÐ£¬ÀûÓÃGenerateKey¹¤¾ß£¨²Î¼ûGenerateKey.java£©°ÑÃÜ³×Ð´ÈëÒ»¸öÎÄ¼þ£º % java GenerateKey key.data
¡¡¡¡²½Öè3£º¼ÓÃÜÓ¦ÓÃ¡£ÔÚÃüÁîÐÐ£¬ÀûÓÃEncryptClasses¹¤¾ß£¨²Î¼ûEncryptClasses.java£©¼ÓÃÜÓ¦ÓÃµÄÀà£º % java EncryptClasses key.data App.class Foo.class Bar.class
¡¡¡¡¸ÃÃüÁî°ÑÃ¿Ò»¸ö.classÎÄ¼þÌæ»»³ÉËüÃÇ¸÷×ÔµÄ¼ÓÃÜ°æ±¾¡£ 
¡¡¡¡²½Öè4£ºÔËÐÐ¾­¹ý¼ÓÃÜµÄÓ¦ÓÃ¡£ÓÃ»§Í¨¹ýÒ»¸öDecryptStart³ÌÐòÔËÐÐ¾­¹ý¼ÓÃÜµÄÓ¦ÓÃ¡£DecryptStart³ÌÐòÈçListing 6ËùÊ¾¡£ 
¡¡¡¡¡¾Listing 6£ºDecryptStart.java£¬Æô¶¯±»¼ÓÃÜÓ¦ÓÃµÄ³ÌÐò¡¿




import java.io.*;
import java.security.*;
import java.lang.reflect.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class DecryptStart extends ClassLoader
...{
¡¡// ÕâÐ©¶ÔÏóÔÚ¹¹Ôìº¯ÊýÖÐÉèÖÃ£¬
¡¡// ÒÔºóloadClass()·½·¨½«ÀûÓÃËüÃÇ½âÃÜÀà
¡¡private SecretKey key;
¡¡private Cipher cipher;
¡¡// ¹¹Ôìº¯Êý£ºÉèÖÃ½âÃÜËùÐèÒªµÄ¶ÔÏó
¡¡public DecryptStart( SecretKey key ) throws GeneralSecurityException,IOException ...{
¡¡¡¡this.key = key;
¡¡¡¡String algorithm = "DES";
¡¡¡¡SecureRandom sr = new SecureRandom();
¡¡¡¡System.err.println( "[DecryptStart: creating cipher]" );
¡¡¡¡cipher = Cipher.getInstance( algorithm );
¡¡¡¡cipher.init( Cipher.DECRYPT_MODE, key, sr );
¡¡}
¡¡// main¹ý³Ì£ºÎÒÃÇÒªÔÚÕâÀï¶ÁÈëÃÜ³×£¬´´½¨DecryptStartµÄ
¡¡// ÊµÀý£¬Ëü¾ÍÊÇÎÒÃÇµÄ¶¨ÖÆClassLoader¡£
¡¡// ÉèÖÃºÃClassLoaderÒÔºó£¬ÎÒÃÇÓÃËü×°ÈëÓ¦ÓÃÊµÀý£¬
¡¡// ×îºó£¬ÎÒÃÇÍ¨¹ýJava Reflection APIµ÷ÓÃÓ¦ÓÃÊµÀýµÄmain·½·¨
¡¡static public void main( String args[] ) throws Exception ...{
¡¡¡¡String keyFilename = args[0];
¡¡¡¡String appName = args[1];
¡¡¡¡// ÕâÐ©ÊÇ´«µÝ¸øÓ¦ÓÃ±¾ÉíµÄ²ÎÊý
¡¡¡¡String realArgs[] = new String[args.length-2];
¡¡¡¡System.arraycopy( args, 2, realArgs, 0, args.length-2 );
¡¡¡¡// ¶ÁÈ¡ÃÜ³×
¡¡¡¡System.err.println( "[DecryptStart: reading key]" );
¡¡¡¡byte rawKey[] = Util.readFile( keyFilename );
¡¡¡¡DESKeySpec dks = new DESKeySpec( rawKey );
¡¡¡¡SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
¡¡¡¡SecretKey key = keyFactory.generateSecret( dks );
¡¡¡¡// ´´½¨½âÃÜµÄClassLoader
¡¡¡¡DecryptStart dr = new DecryptStart( key );
¡¡¡¡// ´´½¨Ó¦ÓÃÖ÷ÀàµÄÒ»¸öÊµÀý
¡¡¡¡// Í¨¹ýClassLoader×°ÈëËü
¡¡¡¡System.err.println( "[DecryptStart: loading "+appName+"]" );
¡¡¡¡Class clasz = dr.loadClass( appName );
¡¡¡¡// ×îºó£¬Í¨¹ýReflection APIµ÷ÓÃÓ¦ÓÃÊµÀý
¡¡¡¡// µÄmain()·½·¨
¡¡¡¡// »ñÈ¡Ò»¸ö¶Ômain()µÄÒýÓÃ
¡¡¡¡String proto[] = new String[1];
¡¡¡¡Class mainArgs[] = ...{ (new String[1]).getClass() };
¡¡¡¡Method main = clasz.getMethod( "main", mainArgs );
¡¡¡¡// ´´½¨Ò»¸ö°üº¬main()·½·¨²ÎÊýµÄÊý×é
¡¡¡¡Object argsArray[] = ...{ realArgs };
¡¡¡¡System.err.println( "[DecryptStart: running "+appName+".main()]" );
¡¡¡¡// µ÷ÓÃmain()
¡¡¡¡main.invoke( null, argsArray );
¡¡}
¡¡public Class loadClass( String name, boolean resolve )
¡¡throws ClassNotFoundException ...{
¡¡¡¡try ...{
¡¡¡¡¡¡// ÎÒÃÇÒª´´½¨µÄClass¶ÔÏó
¡¡¡¡¡¡Class clasz = null;
¡¡¡¡¡¡// ±ØÐèµÄ²½Öè1£ºÈç¹ûÀàÒÑ¾­ÔÚÏµÍ³»º³åÖ®ÖÐ 
¡¡¡¡¡¡// ÎÒÃÇ²»±ØÔÙ´Î×°ÈëËü
¡¡¡¡¡¡clasz = findLoadedClass( name );
¡¡¡¡¡¡if (clasz != null)
¡¡¡¡¡¡¡¡return clasz;
¡¡¡¡¡¡// ÏÂÃæÊÇ¶¨ÖÆ²¿·Ö
¡¡¡¡¡¡try ...{
¡¡¡¡¡¡¡¡// ¶ÁÈ¡¾­¹ý¼ÓÃÜµÄÀàÎÄ¼þ
¡¡¡¡¡¡¡¡byte classData[] = Util.readFile( name+".class" );
¡¡¡¡¡¡¡¡if (classData != null) ...{
¡¡¡¡¡¡¡¡¡¡// ½âÃÜ...
¡¡¡¡¡¡¡¡¡¡byte decryptedClassData[] = cipher.doFinal( classData );
¡¡¡¡¡¡¡¡¡¡// ... ÔÙ°ÑËü×ª»»³ÉÒ»¸öÀà
¡¡¡¡¡¡¡¡¡¡clasz = defineClass( name, decryptedClassData,0, decryptedClassData.length );
¡¡¡¡¡¡¡¡¡¡System.err.println( "[DecryptStart: decrypting class "+name+"]" );
¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡} catch( FileNotFoundException fnfe ) ...{}
¡¡¡¡¡¡// ±ØÐèµÄ²½Öè2£ºÈç¹ûÉÏÃæÃ»ÓÐ³É¹¦
¡¡¡¡¡¡// ÎÒÃÇ³¢ÊÔÓÃÄ¬ÈÏµÄClassLoader×°ÈëËü
¡¡¡¡¡¡if (clasz == null)
¡¡¡¡¡¡¡¡clasz = findSystemClass( name );
¡¡¡¡¡¡// ±ØÐèµÄ²½Öè3£ºÈçÓÐ±ØÒª£¬Ôò×°ÈëÏà¹ØµÄÀà
¡¡¡¡¡¡if (resolve &amp;&amp; clasz != null)
¡¡¡¡¡¡¡¡resolveClass( clasz );
¡¡¡¡¡¡// °ÑÀà·µ»Ø¸øµ÷ÓÃÕß
¡¡¡¡¡¡return clasz;
¡¡¡¡} catch( IOException ie ) ...{
¡¡¡¡¡¡throw new ClassNotFoundException( ie.toString()
¡¡¡¡);
¡¡} catch( GeneralSecurityException gse ) ...{
¡¡¡¡throw new ClassNotFoundException( gse.toString()
¡¡);
}
}
}

¡¡¡¡¶ÔÓÚÎ´¾­¼ÓÃÜµÄÓ¦ÓÃ£¬Õý³£Ö´ÐÐ·½Ê½ÈçÏÂ£º % java App arg0 arg1 arg2
¡¡¡¡¶ÔÓÚ¾­¹ý¼ÓÃÜµÄÓ¦ÓÃ£¬ÔòÏàÓ¦µÄÔËÐÐ·½Ê½Îª£º % java DecryptStart key.data App arg0 arg1 arg2
¡¡¡¡DecryptStartÓÐÁ½¸öÄ¿µÄ¡£Ò»¸öDecryptStartµÄÊµÀý¾ÍÊÇÒ»¸öÊµÊ©¼´Ê±½âÃÜ²Ù×÷µÄ¶¨ÖÆClassLoader£»Í¬Ê±£¬DecryptStart»¹°üº¬Ò»¸ömain¹ý³Ì£¬Ëü´´½¨½âÃÜÆ÷ÊµÀý²¢ÓÃËü×°ÈëºÍÔËÐÐÓ¦ÓÃ¡£Ê¾ÀýÓ¦ÓÃAppµÄ´úÂë°üº¬ÔÚApp.java¡¢Foo.javaºÍBar.javaÄÚ¡£Util.javaÊÇÒ»¸öÎÄ¼þI/O¹¤¾ß£¬±¾ÎÄÊ¾Àý¶à´¦ÓÃµ½ÁËËü¡£ÍêÕûµÄ´úÂëÇë´Ó±¾ÎÄ×îºóÏÂÔØ¡£
¡¡¡¡Îå¡¢×¢ÒâÊÂÏî
¡¡¡¡ÎÒÃÇ¿´µ½£¬ÒªÔÚ²»ÐÞ¸ÄÔ´´úÂëµÄÇé¿öÏÂ¼ÓÃÜÒ»¸öJavaÓ¦ÓÃÊÇºÜÈÝÒ×µÄ¡£²»¹ý£¬ÊÀÉÏÃ»ÓÐÍêÈ«°²È«µÄÏµÍ³¡£±¾ÎÄµÄ¼ÓÃÜ·½Ê½Ìá¹©ÁËÒ»¶¨³Ì¶ÈµÄÔ´´úÂë±£»¤£¬µ«¶ÔÄ³Ð©¹¥»÷À´ËµËüÊÇ´àÈõµÄ¡£ ËäÈ»Ó¦ÓÃ±¾Éí¾­¹ýÁË¼ÓÃÜ£¬µ«Æô¶¯³ÌÐòDecryptStartÃ»ÓÐ¼ÓÃÜ¡£¹¥»÷Õß¿ÉÒÔ·´±àÒëÆô¶¯³ÌÐò²¢ÐÞ¸ÄËü£¬°Ñ½âÃÜºóµÄÀàÎÄ¼þ±£´æµ½´ÅÅÌ¡£½µµÍÕâÖÖ·çÏÕµÄ°ì·¨Ö®Ò»ÊÇ¶ÔÆô¶¯³ÌÐò½øÐÐ¸ßÖÊÁ¿µÄÄ£ºý´¦Àí¡£»òÕß£¬Æô¶¯³ÌÐòÒ²¿ÉÒÔ²ÉÓÃÖ±½Ó±àÒë³É»úÆ÷ÓïÑÔµÄ´úÂë£¬Ê¹µÃÆô¶¯³ÌÐò¾ßÓÐ´«Í³Ö´ÐÐÎÄ¼þ¸ñÊ½µÄ°²È«ÐÔ¡£
¡¡¡¡ÁíÍâ»¹Òª¼Ç×¡µÄÊÇ£¬´ó¶àÊýJVM±¾Éí²¢²»°²È«¡£½Æ»«µÄºÚ¿Í¿ÉÄÜ»áÐÞ¸ÄJVM£¬´ÓClassLoaderÖ®Íâ»ñÈ¡½âÃÜºóµÄ´úÂë²¢±£´æµ½´ÅÅÌ£¬´Ó¶øÈÆ¹ý±¾ÎÄµÄ¼ÓÃÜ¼¼Êõ¡£JavaÃ»ÓÐÎª´ËÌá¹©ÕæÕýÓÐÐ§µÄ²¹¾È´ëÊ©¡£
¡¡¡¡²»¹ýÓ¦¸ÃÖ¸³öµÄÊÇ£¬ËùÓÐÕâÐ©¿ÉÄÜµÄ¹¥»÷¶¼ÓÐÒ»¸öÇ°Ìá£¬Õâ¾ÍÊÇ¹¥»÷Õß¿ÉÒÔµÃµ½ÃÜ³×¡£Èç¹ûÃ»ÓÐÃÜ³×£¬Ó¦ÓÃµÄ°²È«ÐÔ¾ÍÍêÈ«È¡¾öÓÚ¼ÓÃÜËã·¨µÄ°²È«ÐÔ¡£ËäÈ»ÕâÖÖ±£»¤´úÂëµÄ·½·¨³Æ²»ÉÏÊ®È«Ê®ÃÀ£¬µ«ËüÈÔ²»Ê§ÎªÒ»ÖÖ±£»¤ÖªÊ¶²úÈ¨ºÍÃô¸ÐÓÃÍ¾µÄ´úÂëÒ»ÖÖ·½·¨¡£

]]></description>
		</item>
		<item>
			<title>JSP¸ß·ÃÎÊÁ¿ÏÂµÄ¼ÆÊý³ÌÐò</title>
			<link>http://www.kingmx.com/article.php?id=13019</link>
			<pubDate>2006-10-25</pubDate>
			<description><![CDATA[

ÓÐÊ±ÒªÎªÃ¿Ò»ÆªÎÄÕÂÍ³¼ÆÆäµã»÷´ÎÊý£¬Èç¹ûÃ¿Ò»´Îä¯ÀÀ¶¼Òª¸üÐÂÒ»´Î¿âµÄ»°£¬ÄÇÐÔÄÜÔÚ·ÃÎÊÁ¿ºÜ´óµÄÇé¿öÏÂ£¬·þÎñÆ÷µÄÑ¹Á¦¾Í»áºÜ´óÁË£¬±È½ÏºÃÒ»µãµÄ·½·¨¾ÍÊÇÏÈ½«Òª¸üÐÂµÄÊý¾Ý»º´æÆðÀ´£¬È»ºóÃ¿¸ôÒ»¶ÎÊ±¼äÔÙÀûÓÃÊý¾Ý¿âµÄÅúÁ¿´¦Àí£¬ÅúÁ¿¸üÐÂ¿â¡£Ô´ÂëÈçÏÂ£º 
¡¡¡¡CountBean.java

/*
* CountData.java
*
* Created on 2006Äê10ÔÂ18ÈÕ, ÏÂÎç4:44
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/ 

¡¡¡¡package com.tot.count;

/**
*
* @author http://www.tot.name
*/
public class CountBean {
¡¡private String countType;
¡¡int countId;
¡¡/** Creates a new instance of CountData */
¡¡public CountBean() {}
¡¡public void setCountType(String countTypes){
¡¡¡¡this.countType=countTypes;
¡¡}
¡¡public void setCountId(int countIds){
¡¡¡¡this.countId=countIds;
¡¡}
¡¡public String getCountType(){
¡¡¡¡return countType;
¡¡}
¡¡public int getCountId(){
¡¡¡¡return countId;
¡¡}
} 

¡¡¡¡CountCache.java

/*
* CountCache.java
*
* Created on 2006Äê10ÔÂ18ÈÕ, ÏÂÎç5:01
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/

package com.tot.count;
import java.util.*;
/**
*
* @author http://www.tot.name
*/
public class CountCache {
¡¡public static LinkedList list=new LinkedList(); 
¡¡/** Creates a new instance of CountCache */
¡¡public CountCache() {}
¡¡public static void add(CountBean cb){
¡¡¡¡if(cb!=null){
¡¡¡¡¡¡list.add(cb);
¡¡¡¡}
¡¡}
}

¡¡CountControl.java

¡¡/*
¡¡* CountThread.java
¡¡*
¡¡* Created on 2006Äê10ÔÂ18ÈÕ, ÏÂÎç4:57
¡¡*
¡¡* To change this template, choose Tools | Options and locate the template under
¡¡* the Source Creation and Management node. Right-click the template and choose
¡¡* Open. You can then make changes to the template in the Source Editor.
¡¡*/

package com.tot.count;
import tot.db.DBUtils;
import java.sql.*;
/**
*
* @author http://www.tot.name
*/
public class CountControl{ 
¡¡private static long lastExecuteTime=0;//ÉÏ´Î¸üÐÂÊ±¼ä¡¡
¡¡private static long executeSep=60000;//¶¨Òå¸üÐÂ¼ä¸ôÊ±¼ä£¬µ¥Î»ºÁÃë
¡¡/** Creates a new instance of CountThread */
¡¡public CountControl() {}
¡¡public synchronized void executeUpdate(){
¡¡¡¡Connection conn=null;
¡¡¡¡PreparedStatement ps=null;
¡¡¡¡try{
¡¡¡¡¡¡conn = DBUtils.getConnection(); 
¡¡¡¡¡¡conn.setAutoCommit(false);
¡¡¡¡¡¡ps=conn.prepareStatement("update t_news set hits=hits+1 where id=?");
¡¡¡¡¡¡for(int i=0;i£¼CountCache.list.size();i++){
¡¡¡¡¡¡¡¡CountBean cb=(CountBean)CountCache.list.getFirst();
¡¡¡¡¡¡¡¡CountCache.list.removeFirst(); 
¡¡¡¡¡¡¡¡ps.setInt(1, cb.getCountId());
¡¡¡¡¡¡¡¡ps.executeUpdate();¢Å
¡¡¡¡¡¡¡¡//ps.addBatch();¢Æ
¡¡¡¡¡¡}
¡¡¡¡¡¡//int [] counts = ps.executeBatch();¢Ç
¡¡¡¡¡¡conn.commit();
¡¡¡¡}catch(Exception e){
¡¡¡¡¡¡e.printStackTrace();
¡¡¡¡} finally{
¡¡¡¡try{
¡¡¡¡¡¡if(ps!=null) {
¡¡¡¡¡¡¡¡ps.clearParameters();
ps.close();
ps=null;
¡¡¡¡}
¡¡}catch(SQLException e){}
¡¡DBUtils.closeConnection(conn);
¡¡}
}
public long getLast(){
¡¡return lastExecuteTime;
}
public void run(){
¡¡long now = System.currentTimeMillis();
¡¡if ((now - lastExecuteTime) £¾ executeSep) {
¡¡¡¡//System.out.print("lastExecuteTime:"+lastExecuteTime);
¡¡¡¡//System.out.print(" now:"+now+"n");
¡¡¡¡// System.out.print(" sep="+(now - lastExecuteTime)+"n");
¡¡¡¡lastExecuteTime=now;
¡¡¡¡executeUpdate();
¡¡}
¡¡else{
¡¡¡¡//System.out.print("wait for "+(now - lastExecuteTime)+" seconds:"+"n");
¡¡}
}
}
//×¢£ºÈç¹ûÄãµÄÊý¾Ý¿âÇý¶¯Ö§³ÖÅú´¦Àí£¬ÄÇÃ´¿ÉÒÔ½«¢Æ,¢Ç±ê¼ÇµÄ´úÂëÇ°µÄ×¢ÊÍÈ¥µô£¬Í¬Ê±ÔÚ´úÂë¢ÅÇ°¼ÓÉÏ×¢ÊÍ 

¡¡¡¡ÀàÐ´ºÃÁË£¬ÏÂÃæÊÇÔÚJSPÖÐÈçÏÂµ÷ÓÃ¡£

£¼%
CountBean cb=new CountBean();
cb.setCountId(Integer.parseInt(request.getParameter("cid")));
CountCache.add(cb);
out.print(CountCache.list.size()+"£¼br£¾");
CountControl c=new CountControl();
c.run();
out.print(CountCache.list.size()+"£¼br£¾");
%£¾ 

]]></description>
		</item>
		<item>
			<title>JavaÈëÃÅÐèÕÆÎÕµÄ30¸ö»ù±¾¸ÅÄî</title>
			<link>http://www.kingmx.com/article.php?id=12901</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[¡¡¡¡JavaµÄ°×Æ¤ÊéÎªÎÒÃÇÌá³öÁËJavaÓïÑÔµÄ11¸ö¹Ø¼üÌØÐÔ¡£
¡¡¡¡(1)Easy:JavaµÄÓï·¨±ÈC++µÄÏà¶Ô¼òµ¥£¬ÁíÒ»¸ö·½Ãæ¾ÍÊÇJavaÄÜÊ¹Èí¼þÔÚºÜÐ¡µÄ»úÆ÷ÉÏÔËÐÐ£¬»ù´¡½âÊÍÆäºÍÀà¿âµÄÖ§³ÖµÄ´óÐ¡Ô¼Îª40kb£¬Ôö¼Ó»ù±¾µÄ±ê×¼¿âºÍÏß³ÌÖ§³ÖµÄÄÚ´æÐèÒªÔö¼Ó125kb¡£
¡¡¡¡(2)·Ö²¼Ê½:Java´øÓÐºÜÇ¿´óµÄTCP/IPÐ­Òé×åµÄÀý³Ì¿â£¬JavaÓ¦ÓÃ³ÌÐòÄÜ¹»Í¨¹ýURLÀ´´©¹ýÍøÂçÀ´·ÃÎÊÔ¶³Ì¶ÔÏó£¬ÓÉÓÚservlet»úÖÆµÄ³öÏÖ£¬Ê¹Java±à³Ì·Ç³£µÄ¸ßÐ§£¬ÏÖÔÚÐí¶àµÄ´óµÄweb server¶¼Ö§³Öservlet¡£
¡¡¡¡(3)OO:ÃæÏò¶ÔÏóÉè¼ÆÊÇ°ÑÖØµã·ÅÔÚ¶ÔÏó¼°¶ÔÏóµÄ½Ó¿ÚÉÏµÄÒ»¸ö±à³Ì¼¼Êõ.ÆäÃæÏò¶ÔÏóºÍC++ÓÐºÜ¶à²»Í¬£¬ÔÚÓë¶àÖØ¼Ì³ÐµÄ´¦Àí¼°JavaµÄÔ­ÀàÄ£ÐÍ¡£
¡¡¡¡(4)½¡×³ÌØÐÔ:Java²ÉÈ¡ÁËÒ»¸ö°²È«Ö¸ÕëÄ£ÐÍ£¬ÄÜ¼õÐ¡ÖØÐ´ÄÚ´æºÍÊý¾Ý±ÀÀ£µÄ¿ÉÄÜÐÍ¡£
¡¡¡¡(5)°²È«:JavaÓÃÀ´Éè¼ÆÍøÂ·ºÍ·Ö²¼ÏµÍ³£¬Õâ´øÀ´ÁËÐÂµÄ°²È«ÎÊÌâ£¬Java¿ÉÒÔÓÃÀ´¹¹½¨·À²¡¶¾ºÍ·À¹¥»÷µÄSystem.ÊÂÊµÖ¤Ã÷JavaÔÚ·À¶¾ÕâÒ»·½Ãæ×öµÄ±È½ÏºÃ¡£
¡¡¡¡(6)ÖÐÁ¢ÌåÏµ½á¹¹:Java±àÒëÆäÉú³ÉÌåÏµ½á¹¹ÖÐÁ¢µÄÄ¿±êÎÄ¼þ¸ñÊ½¿ÉÒÔÔÚºÜ¶à´¦ÀíÆ÷ÉÏÖ´ÐÐ£¬±àÒëÆ÷²úÉúµÄÖ¸Áî×Ö½ÚÂë(Javabytecode)ÊµÏÖ´ËÌØÐÔ£¬´Ë×Ö½ÚÂë¿ÉÒÔÔÚÈÎºÎ»úÆ÷ÉÏ½âÊÍÖ´ÐÐ¡£
¡¡¡¡(7)¿ÉÒÆÖ²ÐÔ:JavaÖÐ¶Ô»ù±¾Êý¾Ý½á¹¹ÀàÐÍµÄ´óÐ¡ºÍËã·¨¶¼ÓÐÑÏ¸ñµÄ¹æ¶¨ËùÒÔ¿ÉÒÆÖ²ÐÔºÜºÃ¡£
¡¡¡¡(8)¶àÏß³Ì:Java´¦Àí¶àÏß³ÌµÄ¹ý³ÌºÜ¼òµ¥£¬Java°Ñ¶àÏß³ÌÊµÏÖ½»¸øµ×ÏÂ²Ù×÷ÏµÍ³»òÏß³Ì³ÌÐòÍê³É.ËùÒÔ¶àÏß³ÌÊÇJava×÷Îª·þÎñÆ÷¶Ë¿ª·¢ÓïÑÔµÄÁ÷ÐÐÔ­ÒòÖ®Ò»¡£
¡¡¡¡(9)AppletºÍservlet:ÄÜ¹»ÔÚÍøÒ³ÉÏÖ´ÐÐµÄ³ÌÐò½ÐApplet£¬ÐèÒªÖ§³ÖJavaµÄä¯ÀÀÆ÷ºÜ¶à£¬¶øappletÖ§³Ö¶¯Ì¬µÄÍøÒ³£¬ÕâÊÇºÜ¶àÆäËûÓïÑÔËù²»ÄÜ×öµ½µÄ¡£
¡¡¡¡»ù±¾¸ÅÄî
¡¡¡¡1.OOPÖÐÎ¨Ò»¹ØÏµµÄÊÇ¶ÔÏóµÄ½Ó¿ÚÊÇÊ²Ã´£¬¾ÍÏñ¼ÆËã»úµÄÏúÊÛÉÌËý²»¹ÜµçÔ´ÄÚ²¿½á¹¹ÊÇÔõÑùµÄ£¬ËûÖ»¹ØÏµÄÜ·ñ¸øÄãÌá¹©µç¾ÍÐÐÁË£¬Ò²¾ÍÊÇÖ»ÒªÖªµÀcan or not¶ø²»ÊÇhow and why.ËùÓÐµÄ³ÌÐòÊÇÓÉÒ»¶¨µÄÊôÐÔºÍÐÐÎª¶ÔÏó×é³ÉµÄ£¬²»Í¬µÄ¶ÔÏóµÄ·ÃÎÊÍ¨¹ýº¯Êýµ÷ÓÃÀ´Íê³É£¬¶ÔÏó¼äËùÓÐµÄ½»Á÷¶¼ÊÇÍ¨¹ý·½·¨µ÷ÓÃ£¬Í¨¹ý¶Ô·â×°¶ÔÏóÊý¾Ý£¬ºÜ´óÏÞ¶ÈÉÏÌá¸ß¸´ÓÃÂÊ¡£
¡¡¡¡2.OOPÖÐ×îÖØÒªµÄË¼ÏëÊÇÀà£¬ÀàÊÇÄ£°åÊÇÀ¶Í¼£¬´ÓÀàÖÐ¹¹ÔìÒ»¸ö¶ÔÏó£¬¼´´´½¨ÁËÕâ¸öÀàµÄÒ»¸öÊµÀý(instance)¡£
¡¡¡¡3.·â×°:¾ÍÊÇ°ÑÊý¾ÝºÍÐÐÎª½áºÏÆðÔÚÒ»¸ö°üÖÐ)²¢¶Ô¶ÔÏóÊ¹ÓÃÕßÒþ²ØÊý¾ÝµÄÊµÏÖ¹ý³Ì£¬Ò»¸ö¶ÔÏóÖÐµÄÊý¾Ý½ÐËûµÄÊµÀý×Ö¶Î(instance field)¡£
¡¡¡¡4.Í¨¹ýÀ©Õ¹Ò»¸öÀàÀ´»ñµÃÒ»¸öÐÂÀà½Ð¼Ì³Ð(inheritance)£¬¶øËùÓÐµÄÀà¶¼ÊÇÓÉObject¸ù³¬ÀàÀ©Õ¹¶øµÃ£¬¸ù³¬ÀàÏÂÎÄ»á×ö½éÉÜ¡£
¡¡¡¡5.¶ÔÏóµÄ3¸öÖ÷ÒªÌØÐÔ 
¡¡¡¡behavior---ËµÃ÷Õâ¸ö¶ÔÏóÄÜ×öÊ²Ã´.
¡¡¡¡state---µ±¶ÔÏóÊ©¼Ó·½·¨Ê±¶ÔÏóµÄ·´Ó³.
¡¡¡¡identity---ÓëÆäËûÏàËÆÐÐÎª¶ÔÏóµÄÇø·Ö±êÖ¾.
¡¡¡¡Ã¿¸ö¶ÔÏóÓÐÎ¨Ò»µÄindentity ¶øÕâ3ÕßÖ®¼äÏà»¥Ó°Ïì.
¡¡¡¡6.ÀàÖ®¼äµÄ¹ØÏµ:
¡¡¡¡use-a :ÒÀÀµ¹ØÏµ
¡¡¡¡has-a :¾ÛºÏ¹ØÏµ
¡¡¡¡is-a :¼Ì³Ð¹ØÏµ--Àý:AÀà¼Ì³ÐÁËBÀà£¬´ËÊ±AÀà²»½öÓÐÁËBÀàµÄ·½·¨£¬»¹ÓÐÆä×Ô¼ºµÄ·½·¨.(¸öÐÔ´æÔÚÓÚ¹²ÐÔÖÐ)
¡¡¡¡7.¹¹Ôì¶ÔÏóÊ¹ÓÃ¹¹ÔìÆ÷:¹¹ÔìÆ÷µÄÌá³ö£¬¹¹ÔìÆ÷ÊÇÒ»ÖÖÌØÊâµÄ·½·¨£¬¹¹Ôì¶ÔÏó²¢¶ÔÆä³õÊ¼»¯¡£
¡¡¡¡Àý:DataÀàµÄ¹¹ÔìÆ÷½ÐData
¡¡¡¡new Data()---¹¹ÔìÒ»¸öÐÂ¶ÔÏó£¬ÇÒ³õÊ¼»¯µ±Ç°Ê±¼ä.
¡¡¡¡Data happyday=new Data()---°ÑÒ»¸ö¶ÔÏó¸³Öµ¸øÒ»¸ö±äÁ¿happyday£¬´Ó¶øÊ¹¸Ã¶ÔÏóÄÜ¹»¶à´ÎÊ¹ÓÃ£¬´Ë´¦ÒªÉùÃ÷µÄÊ¹±äÁ¿Óë¶ÔÏó±äÁ¿¶þÕßÊÇ²»Í¬µÄ.new·µ»ØµÄÖµÊÇÒ»¸öÒýÓÃ¡£
¡¡¡¡¹¹ÔìÆ÷ÌØµã:¹¹ÔìÆ÷¿ÉÒÔÓÐ0¸ö£¬Ò»¸ö»ò¶à¸ö²ÎÊý
¡¡¡¡¹¹ÔìÆ÷ºÍÀàÓÐÏàÍ¬µÄÃû×Ö
¡¡¡¡Ò»¸öÀà¿ÉÒÔÓÐ¶à¸ö¹¹ÔìÆ÷
¡¡¡¡¹¹ÔìÆ÷Ã»ÓÐ·µ»ØÖµ
¡¡¡¡¹¹ÔìÆ÷×ÜÊÇºÍnewÔËËã·ûÒ»ÆðÊ¹ÓÃ.
¡¡¡¡8.ÖØÔØ:µ±¶à¸ö·½·¨¾ßÓÐÏàÍ¬µÄÃû×Ö¶øº¬ÓÐ²»Í¬µÄ²ÎÊýÊ±£¬±ã·¢ÉúÖØÔØ.±àÒëÆ÷±ØÐëÌôÑ¡³öµ÷ÓÃÄÄ¸ö·½·¨¡£
¡¡¡¡9.°ü(package)JavaÔÊÐí°ÑÒ»¸ö»ò¶à¸öÀàÊÕ¼¯ÔÚÒ»Æð³ÉÎªÒ»×é£¬³Æ×÷°ü£¬ÒÔ±ãÓÚ×éÖ¯ÈÎÎñ£¬±ê×¼Java¿â·ÖÎªÐí¶à°ü.java.lang java.util java£¬netµÈ£¬°üÊÇ·Ö²ã´ÎµÄËùÓÐµÄjava°ü¶¼ÔÚjavaºÍjavax°ü²ã´ÎÄÚ¡£
¡¡¡¡10.¼Ì³ÐË¼Ïë:ÔÊÐíÔÚÒÑ¾­´æÔÚµÄÀàµÄ»ù´¡ÉÏ¹¹½¨ÐÂµÄÀà£¬µ±Äã¼Ì³ÐÒ»¸öÒÑ¾­´æÔÚµÄÀàÊ±£¬ÄÇÃ´Äã¾Í¸´ÓÃÁËÕâ¸öÀàµÄ·½·¨ºÍ×Ö¶Î£¬Í¬Ê±Äã¿ÉÒÔÔÚÐÂÀàÖÐÌí¼ÓÐÂµÄ·½·¨ºÍ×Ö¶Î¡£
¡¡¡¡11.À©Õ¹Àà:À©Õ¹Àà³ä·ÖÌåÏÖÁËis-aµÄ¼Ì³Ð¹ØÏµ. ÐÎÊ½Îª:class (×ÓÀà) extends (»ùÀà)¡£
¡¡¡¡12.¶àÌ¬:ÔÚjavaÖÐ£¬¶ÔÏó±äÁ¿ÊÇ¶àÌ¬µÄ.¶øjavaÖÐ²»Ö§³Ö¶àÖØ¼Ì³Ð¡£
¡¡¡¡13.¶¯Ì¬°ó¶¨:µ÷ÓÃ¶ÔÏó·½·¨µÄ»úÖÆ¡£
¡¡¡¡(1)±àÒëÆ÷¼ì²é¶ÔÏóÉùÃ÷µÄÀàÐÍºÍ·½·¨Ãû¡£
¡¡¡¡(2)±àÒëÆ÷¼ì²é·½·¨µ÷ÓÃµÄ²ÎÊýÀàÐÍ¡£
¡¡¡¡(3)¾²Ì¬°ó¶¨:Èô·½·¨ÀàÐÍÎªpriavte static final ±àÒëÆ÷»á×¼È·ÖªµÀ¸Ãµ÷ÓÃÄÄ¸ö·½·¨¡£
¡¡¡¡(4)µ±³ÌÐòÔËÐÐ²¢ÇÒÊ¹ÓÃ¶¯Ì¬°ó¶¨À´µ÷ÓÃÒ»¸ö·½·¨Ê±£¬ÄÇÃ´ÐéÄâ»ú±ØÐëµ÷ÓÃxËùÖ¸ÏòµÄ¶ÔÏóµÄÊµ¼ÊÀàÐÍÏàÆ¥ÅäµÄ·½·¨°æ±¾¡£
¡¡¡¡(5)¶¯Ì¬°ó¶¨:ÊÇºÜÖØÒªµÄÌØÐÔ£¬ËüÄÜÊ¹³ÌÐò±äµÃ¿ÉÀ©Õ¹¶ø²»ÐèÒªÖØ±àÒëÒÑ´æ´úÂë¡£
¡¡¡¡14.finalÀà:Îª·ÀÖ¹ËûÈË´ÓÄãµÄÀàÉÏÅÉÉúÐÂÀà£¬´ËÀàÊÇ²»¿ÉÀ©Õ¹µÄ¡£
¡¡¡¡15.¶¯Ì¬µ÷ÓÃ±È¾²Ì¬µ÷ÓÃ»¨·ÑµÄÊ±¼äÒª³¤¡£
¡¡¡¡16.³éÏóÀà:¹æ¶¨Ò»¸ö»ò¶à¸ö³éÏó·½·¨µÄÀà±¾Éí±ØÐë¶¨ÒåÎªabstract¡£
¡¡¡¡Àý: public abstract string getDescripition
¡¡¡¡17.JavaÖÐµÄÃ¿Ò»¸öÀà¶¼ÊÇ´ÓObjectÀàÀ©Õ¹¶øÀ´µÄ¡£
¡¡¡¡18.objectÀàÖÐµÄequalºÍtoString·½·¨¡£
¡¡¡¡equalÓÃÓÚ²âÊÔÒ»¸ö¶ÔÏóÊÇ·ñÍ¬ÁíÒ»¸ö¶ÔÏóÏàµÈ¡£
¡¡¡¡toString·µ»ØÒ»¸ö´ú±í¸Ã¶ÔÏóµÄ×Ö·û´®£¬¼¸ºõÃ¿Ò»¸öÀà¶¼»áÖØÔØ¸Ã·½·¨£¬ÒÔ±ã·µ»Øµ±Ç°×´Ì¬µÄÕýÈ·±íÊ¾.
¡¡¡¡(toString ·½·¨ÊÇÒ»¸öºÜÖØÒªµÄ·½·¨)
¡¡¡¡19.Í¨ÓÃ±à³Ì:ÈÎºÎÀàÀàÐÍµÄËùÓÐÖµ¶¼¿ÉÒÔÍ¬objectÀàÐÔµÄ±äÁ¿À´´úÌæ¡£
¡¡¡¡20.Êý×éÁÐ±í:ArrayList¶¯Ì¬Êý×éÁÐ±í£¬ÊÇÒ»¸öÀà¿â£¬¶¨ÒåÔÚjava.uitl°üÖÐ£¬¿É×Ô¶¯µ÷½ÚÊý×éµÄ´óÐ¡¡£
¡¡¡¡21.classÀà objectÀàÖÐµÄgetclass·½·¨·µ»ØckassÀàÐÍµÄÒ»¸öÊµÀý£¬³ÌÐòÆô¶¯Ê±°üº¬ÔÚmain·½·¨µÄÀà»á±»¼ÓÔØ£¬ÐéÄâ»úÒª¼ÓÔØËûÐèÒªµÄËùÓÐÀà£¬Ã¿Ò»¸ö¼ÓÔØµÄÀà¶¼Òª¼ÓÔØËüÐèÒªµÄÀà¡£
¡¡¡¡22.classÀàÎª±àÐ´¿É¶¯Ì¬²Ù×Ýjava´úÂëµÄ³ÌÐòÌá¹©ÁËÇ¿´óµÄ¹¦ÄÜ·´Éä£¬ÕâÏî¹¦ÄÜÎªJavaBeansÌØ±ðÓÐÓÃ£¬Ê¹ÓÃ·´ÉäJavaÄÜÖ§³ÖVB³ÌÐòÔ±Ï°¹ßÊ¹ÓÃµÄ¹¤¾ß¡£
¡¡¡¡ÄÜ¹»·ÖÎöÀàÄÜÁ¦µÄ³ÌÐò½Ð·´ÉäÆ÷£¬JavaÖÐÌá¹©´Ë¹¦ÄÜµÄ°ü½ÐJava.lang.reflect·´Éä»úÖÆÊ®·ÖÇ¿´ó.
¡¡¡¡1.ÔÚÔËÐÐÊ±·ÖÎöÀàµÄÄÜÁ¦¡£
¡¡¡¡2.ÔÚÔËÐÐÊ±Ì½²ìÀàµÄ¶ÔÏó¡£
¡¡¡¡3.ÊµÏÖÍ¨ÓÃÊý×é²Ù×Ý´úÂë¡£
¡¡¡¡4.Ìá¹©·½·¨¶ÔÏó¡£
¡¡¡¡¶ø´Ë»úÖÆÖ÷ÒªÕë¶ÔÊÇ¹¤¾ßÕß¶ø²»ÊÇÓ¦ÓÃ¼°³ÌÐò¡£
¡¡¡¡·´Éä»úÖÆÖÐµÄ×îÖØÒªµÄ²¿·ÖÊÇÔÊÐíÄã¼ì²éÀàµÄ½á¹¹.ÓÃµ½µÄAPIÓÐ:
¡¡¡¡java.lang.reflect.Field ·µ»Ø×Ö¶Î.
¡¡¡¡java.reflect.Method ·µ»Ø·½·¨.
¡¡¡¡java.lang.reflect.Constructor ·µ»Ø²ÎÊý.
¡¡¡¡·½·¨Ö¸Õë:javaÃ»ÓÐ·½·¨Ö¸Õë£¬°ÑÒ»¸ö·½·¨µÄµØÖ·´«¸øÁíÒ»¸ö·½·¨£¬¿ÉÒÔÔÚºóÃæµ÷ÓÃËü£¬¶ø½Ó¿ÚÊÇ¸üºÃµÄ½â¾ö·½°¸¡£
¡¡¡¡23.½Ó¿Ú(Interface)ËµÃ÷Àà¸Ã×öÊ²Ã´¶ø²»Ö¸¶¨ÈçºÎÈ¥×ö£¬Ò»¸öÀà¿ÉÒÔÊµÏÖÒ»¸ö»ò¶à¸öinterface¡£
¡¡¡¡24.½Ó¿Ú²»ÊÇÒ»¸öÀà£¬¶øÊÇ¶Ô·ûºÏ½Ó¿ÚÒªÇóµÄÀàµÄÒ»Ì×¹æ·¶¡£
¡¡¡¡ÈôÊµÏÖÒ»¸ö½Ó¿ÚÐèÒª2¸ö²½Öè:¡¡
¡¡¡¡1.ÉùÃ÷ÀàÐèÒªÊµÏÖµÄÖ¸¶¨½Ó¿Ú¡£
¡¡¡¡2.Ìá¹©½Ó¿ÚÖÐµÄËùÓÐ·½·¨µÄ¶¨Òå¡£
¡¡¡¡ÉùÃ÷Ò»¸öÀàÊµÏÖÒ»¸ö½Ó¿ÚÐèÒªÊ¹ÓÃimplements ¹Ø¼ü×Ö
¡¡¡¡class actionB implements Comparable ÆäactionbÐèÒªÌá¹©CompareTo·½·¨£¬½Ó¿Ú²»ÊÇÀà£¬²»ÄÜÓÃnewÊµÀý»¯Ò»¸ö½Ó¿Ú.
¡¡¡¡25.Ò»¸öÀàÖ»ÓÐÒ»¸ö³¬Àà£¬µ«Ò»¸öÀàÄÜÊµÏÖ¶à¸ö½Ó¿Ú¡£JavaÖÐµÄÒ»¸öÖØÒª½Ó¿Ú£ºCloneable
¡¡¡¡26.½Ó¿ÚºÍ»Øµ÷.±à³ÌÒ»¸ö³£ÓÃµÄÄ£Ê½ÊÇ»Øµ÷Ä£Ê½£¬ÔÚÕâÖÖÄ£Ê½ÖÐÄã¿ÉÒÔÖ¸¶¨µ±Ò»¸öÌØ¶¨Ê±¼ä·¢ÉúÊ±»Øµ÷¶ÔÏóÉÏµÄ·½·¨¡£
¡¡¡¡Àý:ActionListener ½Ó¿Ú¼àÌý.
¡¡¡¡ÀàËÆµÄAPIÓÐ:java.swing.JOptionPane
¡¡¡¡java.swing.Timer
¡¡¡¡java.awt.Tookit
¡¡¡¡27.¶ÔÏóclone:clone·½·¨ÊÇobjectÒ»¸ö±£»¤·½·¨£¬ÕâÒâÎ¶×ÅÄãµÄ´úÂë²»ÄÜ¼òµ¥µÄµ÷ÓÃËü¡£
¡¡¡¡28.ÄÚ²¿Àà:Ò»¸öÄÚ²¿ÀàµÄ¶¨ÒåÊÇ¶¨ÒåÔÚÁíÒ»¸öÄÚ²¿µÄÀà¡£
¡¡¡¡Ô­ÒòÊÇ:
¡¡¡¡1.Ò»¸öÄÚ²¿ÀàµÄ¶ÔÏóÄÜ¹»·ÃÎÊ´´½¨ËüµÄ¶ÔÏóµÄÊµÏÖ£¬°üÀ¨Ë½ÓÐÊý¾Ý¡£
¡¡¡¡2.¶ÔÓÚÍ¬Ò»¸ö°üÖÐµÄÆäËûÀàÀ´Ëµ£¬ÄÚ²¿ÀàÄÜ¹»Òþ²ØÆðÀ´¡£
¡¡¡¡3.ÄäÃûÄÚ²¿Àà¿ÉÒÔºÜ·½±ãµÄ¶¨Òå»Øµ÷¡£
¡¡¡¡4.Ê¹ÓÃÄÚ²¿Àà¿ÉÒÔ·Ç³£·½±ãµÄ±àÐ´ÊÂ¼þÇý¶¯³ÌÐò¡£
¡¡¡¡29.´úÀíÀà(proxy):
¡¡¡¡1.Ö¸¶¨½Ó¿ÚÒªÇóËùÓÐ´úÂë
¡¡¡¡2.objectÀà¶¨ÒåµÄËùÓÐµÄ·½·¨(toString equals)
¡¡¡¡30.Êý¾ÝÀàÐÍ:JavaÊÇÇ¿µ÷ÀàÐÍµÄÓïÑÔ£¬Ã¿¸ö±äÁ¿¶¼±ØÐëÏÈÉêÃ÷Ëü¶¼ÀàÐÍ£¬javaÖÐ×Ü¹²ÓÐ8¸ö»ù±¾ÀàÐÍ.4ÖÖÊÇÕûÐÍ£¬2ÖÖÊÇ¸¡µãÐÍ£¬Ò»ÖÖÊÇ×Ö·ûÐÍ£¬±»ÓÃÓÚUnicode±àÂëÖÐµÄ×Ö·û£¬²¼¶ûÐÍ¡£]]></description>
		</item>
		<item>
			<title>Java½ø½×Ñ§Ï°:ÍøÂç·þÎñÆ÷±à³Ì</title>
			<link>http://www.kingmx.com/article.php?id=12902</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
¡¡¡¡JavaµÄSocket APIÌá¹©ÁËÒ»¸öºÜ·½±ãµÄ¶ÔÏó½Ó¿Ú½øÐÐÍøÂç±à³Ì¡£±¾ÎÄÓÃÒ»¸ö¼òµ¥µÄTCP Echo Server×öÀý×Ó£¬ÑÝÊ¾ÁËÈçºÎÊ¹ÓÃJavaÍê³ÉÒ»¸öÍøÂç·þÎñÆ÷¡£
¡¡¡¡ÓÃ×÷Àý×ÓµÄTCP Echo ServerÊÇ°´ÒÔÏÂ·½Ê½¹¤×÷µÄ£º
¡¡¡¡µ±Ò»¸ö¿Í»§¶ËÍ¨¹ýTCPÁ¬½Óµ½·þÎñÆ÷ºó£¬¿Í»§¶Ë¿ÉÒÔÍ¨¹ýÕâ¸öÁ¬½Ó·¢ËÍÊý¾Ýµ½·þÎñ¶Ë£¬¶ø·þÎñ¶Ë½ÓÊÕµ½Êý¾Ýºó»á°ÑÕâÐ©Êý¾ÝÓÃÍ¬Ò»¸öTCPÁ¬½Ó·¢ËÍ»Ø¿Í»§¶Ë¡£·þÎñ¶Ë»áÒ»Ö±±£³ÖÕâ¸öÁ¬½ÓÖ±µ½¿Í»§¶Ë¹Ø±ÕËüÎªÖ¹¡£
¡¡¡¡ÒòÎª·þÎñÆ÷ÐèÒªÄÜÍ¬Ê±´¦Àí¶à¸ö¿Í»§¶Ë£¬ÎÒÃÇÏÈÑ¡ÓÃÒ»¸ö³£¼ûµÄ¶àÏß³Ì·þÎñÄ£ÐÍ£º
¡¡¡¡ÈÃÒ»¸öThread¸ºÔð¼àÌý·þÎñ¶Ë¿Ú£¬µ±ÓÐÐÂµÄÁ¬½Ó½¨Á¢µÄÊ±ºò£¬Õâ¸ö¼àÌýµÄThread»áÎªÕâ¸öÁ¬½Ó´´½¨Ò»¸öÐÂµÄThreadÀ´´¦ÀíËü¡£ÕâÑù£¬·þÎñÆ÷¿ÉÒÔ½ÓÊÜ¶à¸öÁ¬½Ó£¬²¢ÈÃ¶à¸öThreadÀ´·Ö±ð´¦ÀíËüÃÇ¡£
¡¡¡¡ÒÔÏÂÊÇÏàÓ¦µÄ·þÎñ¶Ë³ÌÐò£º

¡¡¡¡public class EchoServer implements Runnable {
¡¡¡¡public void run() {
¡¡¡¡try {
¡¡¡¡ServerSocket svr = new ServerSocket(7);
¡¡¡¡while (true) {
¡¡¡¡Socket sock = svr.accept();
¡¡¡¡new Thread(new EchoSession(sock)).start();
¡¡¡¡}
¡¡¡¡} catch (IOException ex) {
¡¡¡¡throw new ExceptionAdapter(ex);
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}

¡¡¡¡Õâ¶Î´úÂëÏÈ´´½¨ÁËÒ»¸öServerSocketµÄ¶ÔÏó²¢ÈÃÆä¼àÌýÔÚTCP¶Ë¿Ú7ÉÏ£¬È»ºóÔÚÒ»¸öÑ­»·ÖÐÓÃaccept()·½·¨½ÓÊÕÐÂµÄÁ¬½Ó£¬²¢´´½¨´¦ÀíÕâÒ»Á¬½ÓµÄThread¡£Êµ¼Ê´¦ÀíÃ¿¸ö¿Í»§¶ËÁ¬½ÓµÄÂß¼­°üº¬ÔÚEchoSessionÕâ¸öÀàÀïÃæ¡£
¡¡¡¡ÔÚÒÔÉÏ´úÂëÖÐÊ¹ÓÃÁËExceptionAdapterÕâ¸öÀà£¬ËüµÄ×÷ÓÃÊÇ°ÑÒ»¸öchecked Exception°ü×°³ÉRuntimeException¡£ÏêÏ¸µÄËµÃ÷¿ÉÒÔ²Î¿¼±ÜÃâÔÚJavaÖÐÊ¹ÓÃChecked Exception Ò»ÎÄ¡£
¡¡¡¡ÒÔÏÂÊÇEchoSessionµÄ´úÂë£º

¡¡¡¡public class EchoSession implements Runnable {
¡¡¡¡public EchoSession(Socket s) {
¡¡¡¡_sock = s;
¡¡¡¡}
¡¡¡¡public void run() {


¡¡¡¡try {
¡¡¡¡try {
¡¡¡¡InputStream input = _sock.getInputStream();
¡¡¡¡OutputStream output = _sock.getOutputStream();
¡¡¡¡byte [] buf = new byte [128];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
¡¡¡¡while (true) {
¡¡¡¡int count = input.read(buf);
¡¡¡¡if (count == -1)
¡¡¡¡break;
¡¡¡¡output.write(buf, 0 , count);
¡¡¡¡}
¡¡¡¡} finally {
¡¡¡¡_sock.close();
¡¡¡¡}
¡¡¡¡} catch (IOException ex) {
¡¡¡¡throw new ExceptionAdapter(ex);&nbsp;&nbsp;&nbsp; 
¡¡¡¡}
¡¡¡¡}
¡¡¡¡protected Socket _sock = null;
¡¡¡¡}

¡¡¡¡EchoSession½ÓÊÜÒ»¸öSocket¶ÔÏó×÷Îª¹¹Ôì²ÎÊý£¬ÔÚÆärun()·½·¨ÖÐ£¬Ëü²»Í£µÄ´ÓÕâ¸öSocket¶ÔÏóµÄInputStreamÀïÃæ¶ÁÊý¾Ý²¢Ð´»Øµ½¸ÃSocketµÄOutputStreamÖÐÈ¥£¬Ö±µ½Õâ¸öÁ¬½Ó±»¿Í»§¶Ë¹Ø±ÕÎªÖ¹£¨InputStreamµÄread·½·¨·µ»Ø-1£©¡£
¡¡¡¡EchoSessionÐèÒªÒ»¸öÏß³ÌÀ´Ö´ÐÐ£¬ÕâÈÝÒ×ÈÃÈËÁªÏëµ½ÓÃThreadÀ´×÷ÎªEchoSessionµÄ¸¸Àà¡£²»¹ý£¬ÕâÑù×ö²»¹»Áé»î£¬¿ªÏúÒ²±È½Ï´ó¡£¶øÑ¡ÔñÈÃEchoSessionÊµÏÖRunnable½Ó¿Ú¾ÍÁé»îµÃ¶à¡£ÔÚ½ÓÏÂÀ´µÄÊ¹ÓÃThread PoolµÄEcho ServerÖÐ¿ÉÒÔ¿´µ½ÕâÒ»µã¡£
¡¡¡¡ÒÔÉÏÒÑ¾­ÊÇÒ»¸öÍêÕûµÄTCP Echo Server£¬²»¹ýËæ×Å¿Í»§²»Í£µÄÁ¬½ÓºÍ¶Ï¿ª£¬Õâ¸ö·þÎñÆ÷»á²»Í£µÄ²úÉúºÍÏû³ýÏß³Ì£¬¶øÕâÁ½¸ö¶¼ÊÇ±È½Ï¡®°º¹ó¡¯µÄ²Ù×÷¡£ÎªÁË±ÜÃâÕâÖÖÏûºÄ£¬¿ÉÒÔ¿¼ÂÇ²ÉÓÃThread PoolµÄ»úÖÆ¡£
¡¡¡¡Ê¹ÓÃÔÚÒ»¸ö¼òµ¥µÄThread»º³å³ØµÄÊµÏÖÒ»ÎÄÖÐThread PoolµÄÊµÏÖ£¬¿ÉÒÔ¶ÔEchoServer×÷ÈçÏÂÐÞ¸Ä£¨EchoSessionÎÞÐè×öÐÞ¸Ä£©£º

¡¡¡¡public class EchoServer implements Runnable {
¡¡¡¡public void run() {
¡¡¡¡try {
¡¡¡¡ServerSocket svr = new ServerSocket(7);


¡¡¡¡// ³õÊ¼»¯Thread Pool
¡¡¡¡SyncQueue queue = new SyncQueue(10);
¡¡¡¡for (int i = 0; i &lt; 10; i ++) {
¡¡¡¡new Thread(new Worker(queue)).start();
¡¡¡¡}
¡¡¡¡while (true) {
¡¡¡¡Socket sock = svr.accept();
¡¡¡¡// °ÑÈÎÎñ·ÅÈëThread Pool
¡¡¡¡queue.put(new EchoSession(sock));
¡¡¡¡}
¡¡¡¡} catch (IOException ex) {
¡¡¡¡throw new ExceptionAdapter(ex);
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}

¡¡¡¡ÕâÀï¿ÉÒÔ¿´³öÈÃEchoSessionÊµÏÖRunnable½Ó¿ÚµÄÁé»îÐÔ£¬ÎÞÐèÐÞ¸ÄËü¾Í¿ÉÒÔÔÚThread PoolÀïÊ¹ÓÃ¡£
¡¡¡¡ÔÚÕâ¸öÀý×ÓÀïÊ¹ÓÃµÄThread Pool±È½Ï¼òµ¥£¬Ã»ÓÐ¶¯Ì¬µ÷ÕûThreadÊýÁ¿µÄ¹¦ÄÜ£¬ËùÒÔÕâ¸öEcho Server×î¶àÖ»ÄÜÍ¬Ê±·þÎñ10¸ö¿Í»§¶Ë¡£È»¶øÍ¨¹ýÖØÔØSyncQueue£¬ÎÒÃÇ¿ÉÒÔºÜ·½±ãµØ¼ÓÈëÕâ¸ö¹¦ÄÜÒÔÍ»ÆÆÕâ¸öÏÞÖÆ¡£
¡¡¡¡ÔÚ¶ÔÍøÂç·þÎñÆ÷µÄÐÔÄÜÒÔ¼°²¢·¢¶ÈÒªÇóºÜ¸ßµÄÊ±ºò£¬ÈÃÃ¿¸ö¿Í»§¶ËÓÉÒ»¸ö×¨ÃÅµÄThreadÀ´´¦ÀíÓÐ¿ÉÄÜ²»ÄÜÂú×ãÎÒÃÇµÄÒªÇó£¨ÏëÏóÒ»ÏÂÍ¬Ê±ÓÐÊýÇ§¸ö¿Í»§¶ËµÄÇé¿ö£©¡£ÕâÊ±¿ÉÒÔ¿¼ÂÇÊ¹ÓÃJavaµÄNIO APIÀ´¹¹½¨·þÎñÆ÷¼Ü¹¹£¬ÒòÎªNIOÖÐIO²Ù×÷¶¼ÊÇ·Ç×èÈûµÄ£¬ÎÒÃÇÖ»ÐèÒªºÜÉÙµÄThread¾Í¿ÉÒÔ³ä·ÖµØÀûÓÃCPUÀ´´¦Àí¶à¸ö¿Í»§¶ËµÄÇëÇó¡£¹ØÓÚNIOµÄ»°Ìâ£¬ÔÚÕâÆªÎÄÕÂ¾Í²»ÔÙ×¸Êö£¬Ï£ÍûÒÔºóÄÜÓÐ»ú»áÌÖÂÛ¡£ £º£©
]]></description>
		</item>
		<item>
			<title>JSPÁ¬½ÓSQL Server 2000ÏµÍ³ÅäÖÃ</title>
			<link>http://www.kingmx.com/article.php?id=12903</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
¡¡¡¡µÚÒ»²½£º°²×°J2SDK: 
¡¡¡¡µ½SUN¹Ù·½Õ¾µã(http://java.sun.com)ÏÂÔØJ2SDKµÄ°²×°ÎÄ¼þ£ºj2sdk-1_4_2_04-windows-i586-p.exe£¬ÏÂÔØÖ®ºó°²×°ºÃJ2SDK£»°²×°ÍêÖ®ºó£¬ÉèÖÃ»·¾³±äÁ¿£ºÎÒµÄµçÄÔ---ÊôÐÔ---¸ß¼¶---»·¾³±äÁ¿£»
¡¡¡¡Ñ¡Ôñ---ÏµÍ³±äÁ¿(S)£º
¡¡
¡¡¡¡ÉèÖÃJAVA_HOME»·¾³±äÁ¿£º
¡¡¡¡µ¥»÷---ÐÂ½¨£¬ÔÚ±äÁ¿ÃûÖÐÊäÈë£ºJAVA_HOME
¡¡¡¡ÔÚ±äÁ¿ÖµÖÐÊäÈë£ºD:////////Java
¡¡¡¡(¼ÙÉèJ2SDK°²×°ÔÚÄ¿Â¼D:////////JavaÏÂ£¬·´Õý¾ÍÊÇJ2SDKµÄ°²×°Ä¿Â¼¡£)
¡¡¡¡È»ºó---È·¶¨£¬µ½´ËÒÑ¾­ÉèÖÃºÃJAVA_HOME»·¾³±äÁ¿¡£
¡¡¡¡ÉèÖÃCLASSPATH»·¾³±äÁ¿£º
¡¡¡¡µ¥»÷---ÐÂ½¨£¬ÔÚ±äÁ¿ÃûÖÐÊäÈë£ºCLASSPATH
¡¡¡¡ÔÚ±äÁ¿ÖµÖÐÊäÈë£º
D:////////Java////////bin;.;D:////////Java////////lib; D:////////Java////////lib////////dt.jar;D:////////Java ////////lib////////tools.jar
¡¡¡¡(ÖÐ¼äµÄµãºÅ¡°.¡±ºÍ·ÖºÅ¡°;¡±±Ø²»¿ÉÉÙ¡£)
¡¡¡¡È»ºó---È·¶¨£¬µ½´ËÒÑ¾­ÉèÖÃºÃCLASSPATH»·¾³±äÁ¿¡£
¡¡¡¡ÉèÖÃPATH»·¾³±äÁ¿£º
¡¡¡¡µ¥»÷---ÐÂ½¨£¬ÔÚ±äÁ¿ÃûÖÐÊäÈë£ºPATH
¡¡¡¡ÔÚ±äÁ¿ÖµÖÐÊäÈë£ºD:////////Java;.;D:////////Java////////bin
¡¡¡¡(ÖÐ¼äµÄµãºÅ¡°.¡±ºÍ·ÖºÅ¡°;¡±±Ø²»¿ÉÉÙ¡£)
¡¡¡¡È»ºó---È·¶¨£¬µ½´ËÒÑ¾­ÉèÖÃºÃJAVA_HOME»·¾³±äÁ¿¡£
¡¡¡¡Èý¸ö»·¾³±äÁ¿ÉèÖÃºÃºó£¬Ð´Ò»¸ö¼òµ¥µÄjava³ÌÐòÀ´²âÊÔJ2SDKÊÇ·ñÒÑ°²×°³É¹¦£º
¡¡¡¡ÔÚD:////////ÏÂÐÂ½¨Ò»¸öÄ¿Â¼test£»È»ºóÐ´ÈçÏÂ³ÌÐò£º¡¡
¡¡¡¡public¡¡class¡¡Test¡¡{¡¡
¡¡¡¡public¡¡static¡¡void¡¡main(String¡¡args[])¡¡{¡¡
¡¡¡¡¡¡¡¡System.out.println("This¡¡is¡¡a¡¡test¡¡program.");¡¡
¡¡¡¡¡¡}¡¡
¡¡¡¡} 
¡¡¡¡½«ÉÏÃæµÄÕâ¶Î³ÌÐò±£´æÎªÎÄ¼þÃûÎªTest.javaµÄÎÄ¼þ£¬±£´æÔÚÄ¿Â¼ D:////////testÏÂ¡£
¡¡¡¡È»ºó´ò¿ªÃüÁîÌáÊ¾·û´°¿Ú£¬cdµ½ÄãµÄtestÄ¿Â¼£¬È»ºó¼üÈëÏÂÃæµÄÃüÁî£º
¡¡¡¡¡¡¡¡javac¡¡Test.java¡¡
¡¡¡¡¡¡¡¡java¡¡Test¡¡
¡¡¡¡´ËÊ±Èç¹û¿´µ½´òÓ¡³öÀ´This¡¡is¡¡a¡¡test¡¡program.µÄ»°ËµÃ÷°²×°³É¹¦ÁË£¬
¡¡¡¡Èç¹ûÃ»ÓÐ´òÓ¡³öÕâ¾ä»°£¬ÄãÐèÒª×ÐÏ¸¼ì²éÒ»ÏÂÄãµÄÅäÖÃÇé¿ö¡£¡¡
¡¡¡¡Èç¹ûÉÏÃæµÄJ2SDK°²×°³É¹¦µÄ»°£¬½ÓÏÂÀ´¼ÌÐø°²×°Tomcat:
¡¡¡¡µÚ¶þ²½£º°²×°Tomcat:
¡¡¡¡µ½tomcat¹Ù·½Õ¾µã(http://www.apache.org/dist/ jakarta/tomcat-4/)ÏÂÔØtomcat:
¡¡¡¡jakarta-tomcat-4.1.30.exe£¬ÏÂÔØÖ®ºó°²×°¡£(±ÈÈç°²×°ÔÚ D:////////TomcatÏÂ¡£)
¡¡¡¡°²×°ÍêÖ®ºó£¬ÉèÖÃ»·¾³±äÁ¿£ºÎÒµÄµçÄÔ---ÊôÐÔ---¸ß¼¶---»·¾³±äÁ¿£»
¡¡¡¡Ñ¡Ôñ---ÏµÍ³±äÁ¿(S)£º
¡¡¡¡ÉèÖÃCATALINA_HOME»·¾³±äÁ¿£º
¡¡¡¡µ¥»÷---ÐÂ½¨£¬ÔÚ±äÁ¿ÃûÖÐÊäÈë£ºCATALINA_HOME
¡¡¡¡ÔÚ±äÁ¿ÖµÖÐÊäÈë£ºD:////////Tomcat
¡¡¡¡È»ºó---È·¶¨£¬µ½´ËÒÑ¾­ÉèÖÃºÃCATALINA_HOME»·¾³±äÁ¿¡£
¡¡¡¡ÉèÖÃCATALINA_BASE»·¾³±äÁ¿£º
¡¡¡¡µ¥»÷---ÐÂ½¨£¬ÔÚ±äÁ¿ÃûÖÐÊäÈë£ºCATALINA_BASE
¡¡¡¡ÔÚ±äÁ¿ÖµÖÐÊäÈë£ºD:////////Tomcat
¡¡¡¡È»ºó---È·¶¨£¬µ½´ËÒÑ¾­ÉèÖÃºÃCATALINA_BASE»·¾³±äÁ¿¡£
¡¡¡¡È»ºóÐÞ¸Ä»·¾³±äÁ¿ÖÐµÄCLASSPATH£¬°ÑTomat°²×°Ä¿Â¼ÏÂµÄ common////////libÏÂµÄservlet.jar×·¼Óµ½CLASSPATHÖÐÈ¥£¬
¡¡¡¡ÐÞ¸ÄºóµÄCLASSPATHÈçÏÂ£º
CLASSPATH=D:////////Java////////bin;.; D:////////Java////////lib;D:////////Java////////lib//////// dt.jar;D:////////Java////////lib////////tools.jar;
D:////////Tomcat////////common////////lib////////servlet.jar ¡¡
¡¡¡¡½Ó×Å¿ÉÒÔÆô¶¯tomcat£¬ÔÚIEÖÐ·ÃÎÊhttp://localhost£¬Èç¹û¿´µ½tomcatµÄ»¶Ó­Ò³ÃæµÄ»°ËµÃ÷°²×°³É¹¦ÁË¡£
¡¡¡¡Èç¹ûÉÏÃæµÄtomcat°²×°³É¹¦µÄ»°£¬½ÓÏÂÀ´¼ÌÐø°²×°JSP·ÃÎÊ SQL¡¡Server¡¡2000µÄÇý¶¯³ÌÐò:
¡¡¡¡µÚÈý²½£º°²×°JSP·ÃÎÊSQL Server 2000µÄÇý¶¯³ÌÐò:
¡¡¡¡´ÓÎ¢ÈíµÄÍøÕ¾ÉÏÏÂÔØÇý¶¯³ÌÐò£ºSQL¡¡Server¡¡2000¡¡For ¡¡JDBC¡¡Çý¶¯³ÌÐò£¬ÔÚGoogleÖÐËæ±ãËÑË÷¾ÍÓÐ¡£
¡¡¡¡È»ºó½«Ëü°²×°ºÃ¡£(±ÈÈç°²×°Ä¿Â¼ÊÇD:////////SQLDriverForJDBC¡£)
¡¡¡¡È»ºó±ØÐë½«°²×°Ä¿Â¼ÖÐµÄlibÄ¿Â¼ÏÂÈý¸öjarÎÄ¼þ£º
¡¡¡¡¡¡msbase.jar,mssqlserver.jar,msutil.jar¿½±´µ½ TomcatÄ¿Â¼ÏÂcommon////////libÄ¿Â¼ÏÂ£¬Ö®ºó£¬ÐÞ¸Ä»·¾³±äÁ¿ÖÐµÄCLASSPATH£¬
¡¡¡¡°ÑSQL Server 2000 For JDBC Çý¶¯³ÌÐò°²×°Ä¿Â¼ÏÂµÄ
¡¡¡¡D:////////SQLDriverForJDBC////////lib////////msbase.jar; D:////////SQLDriverForJDBC////////lib////////mssqlserver.jar;
¡¡¡¡D:////////SQLDriverForJDBC////////msutil.jar;
×·¼Óµ½CLASSPATHÖÐÈ¥£¬ÐÞ¸ÄºóµÄCLASSPATHÈçÏÂ£º¡¡
¡¡¡¡CLASSPATH=D:////////Java////////bin;.;D:////////Java ////////lib;D:////////Java////////lib////////dt.jar;
¡¡¡¡D:////////Java////////lib////////tools.jar;D://////// LubeeTomcat////////common////////lib////////servlet.jar;
¡¡¡¡_D:////////SQLDriverForJDBC////////lib////////msbase.jar; D:////////SQLDriverForJDBC////////lib////////mssqlserver.jar;
¡¡¡¡D:////////SQLDriverForJDBC////////msutil.jar
&nbsp;¡¡¡¡±ØÐëÖØÐÂÆô¶¯Tomcat£¡
¡¡¡¡ÕâÑù×öµÄÄ¿µÄÊÇ£¬jspÒ³ÃæÔÚ±àÒë¹ý³ÌÖÐ²»»á³öÏÖÕÒ²»µ½ sql¡¡server¡¡driverÀà¿âµÄÎÊÌâ
¡¡¡¡Ð´Ò»¸ö¼òµ¥µÄÓÃÀ´²âÊÔÁ¬½ÓSQL¡¡Server¡¡2000µÄJSP´úÂë
¡¡¡¡&lt;%@¡¡page¡¡import=" java.lang.*,¡¡java.io.*,¡¡java.sql.*,¡¡java.util.*"¡¡contentType="text/html;charset=gb2312"¡¡%&gt;
¡¡¡¡&lt;html&gt;
¡¡¡¡&lt;body&gt;
¡¡¡¡&lt;%¡¡Class.forName("com.microsoft.jdbc.sqlserver .SQLServerDriver") .newInstance();
¡¡¡¡¡¡String¡¡url="jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=pubs";
¡¡¡¡¡¡//pubs¡¡ÎªÄãµÄÊý¾Ý¿âµÄ
¡¡¡¡¡¡String¡¡user="sa";
¡¡¡¡¡¡String¡¡password="admin";
¡¡¡¡¡¡Connection¡¡conn=¡¡DriverManager.getConnection( url,user,password);
¡¡¡¡¡¡Statement¡¡stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
¡¡¡¡¡¡String¡¡sql="select¡¡job_id,job_desc¡¡from¡¡jobs";
¡¡¡¡¡¡ResultSet¡¡rs=stmt.executeQuery(sql);
¡¡¡¡¡¡while(rs.next())¡¡{¡¡%&gt;
¡¡¡¡¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º &lt;%=rs.getString(1)%&gt;&lt;br&gt;
¡¡¡¡¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£º&lt;%=rs.getString(2) %&gt;&lt;br&gt;
¡¡¡¡&lt;%¡¡}¡¡%&gt;
¡¡¡¡&lt;%¡¡out.print("Êý¾Ý¿â²Ù×÷³É¹¦£¬¹§Ï²Äã");¡¡%&gt;
¡¡¡¡&lt;%¡¡rs.close();
¡¡¡¡¡¡stmt.close();
¡¡¡¡¡¡conn.close();
¡¡¡¡%&gt;
¡¡¡¡&lt;/body&gt;
¡¡¡¡&lt;/html&gt; 
¡¡¡¡½«ÉÏÃæµÄJSP´úÂë±£´æÎªsql_test.jsp£¬·ÅÔÚ/RootÄ¿Â¼ÏÂ¡£
¡¡¡¡ÔÚµØÖ·ÖÐÊäÈë£ºhttp://localhost:8080/sql_test.jsp£¬Èç¹ûÈ«²¿ÅäÖÃ³É¹¦µÄ»°£¬½«ÏÔÊ¾ÈçÏÂ£º
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º1
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºNew¡¡Hire¡¡-¡¡Job¡¡not¡¡specified
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º2
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºChief¡¡Executive¡¡Officer
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º3
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºBusiness¡¡Operations¡¡Manager
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º4
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºChief¡¡Financial¡¡Officier
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º5
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºPublisher
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º6
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºManaging¡¡Editor
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º7
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºMarketing¡¡Manager
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º8
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºPublic¡¡Relations¡¡Manager
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º9
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºAcquisitions¡¡Manager
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º10
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºProductions¡¡Manager
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º11
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºOperations¡¡Manager
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º12
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºEditor
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º13
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºSales¡¡Representative
¡¡¡¡ÄúµÄµÚÒ»¸ö×Ö¶ÎÄÚÈÝÎª£º14
¡¡¡¡ÄúµÄµÚ¶þ¸ö×Ö¶ÎÄÚÈÝÎª£ºDesigner
¡¡¡¡Êý¾Ý¿â²Ù×÷³É¹¦£¬¹§Ï²Äã¡¡
¡¡¡¡ÒÔÉÏËùÓÐµÄÄÚÈÝÉæ¼°µÄÏà¹ØÌõ¼þ£º
¡¡¡¡²Ù×÷ÏµÍ³£ºWindow¡¡2000¡¡Server
¡¡¡¡J2SDK°æ±¾£ºj2sdk-1_4_2_04-windows
¡¡¡¡Tomcat°æ±¾£ºjakarta-tomcat-4.1.30
¡¡¡¡±¾µØÊý¾Ý¿â£ºSQL¡¡Server¡¡2000 
]]></description>
		</item>
		<item>
			<title>JBuilder2005ÊµÕ½JSPÖ®³ÌÐò¹¦ÄÜ½éÉÜ</title>
			<link>http://www.kingmx.com/article.php?id=12904</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[¡¡¡¡ÓÃ»§µÇÂ¼Ä£¿é³ÌÐòµÄ½á¹¹Í¼ÈçÏÂÍ¼ËùÊ¾£º

&gt;Í¼ 1 ÊµÀýÒ³ÃæÁ÷×ªÍ¼
¡¡¡¡ÓÃ»§ÔÚµÇÂ¼Ò³ÃæÖÐÂ¼ÈëÃÜÂë¡¢ÑéÖ¤ÕýÈ·ºó×ªÏò»¶Ó­Ö÷Ò³Ãæ£¬Èç¹ûÊäÈëµÄÃÜÂë´íÎó£¬µ¼ÏòµÇÂ¼Ê§°ÜÒ³Ãæ¡£Õâ¸öÄ£¿é°üº¬6¸öJSPÎÄ¼þ¡¢3¸öJavaÀà¼°Á½ÕÅºóÌ¨±í¡£
¡¡¡¡6¸öJSPÎÄ¼þ·Ö±ðÎªÓÃ»§µÇÂ¼¡¢Ò³ÃæÁ÷×ª¿ØÖÆ¡¢´íÎó´¦Àí¡¢µÇÂ¼³É¹¦ºÍÊ§°Ü¡¢ÒÔ¼°ÍË³öÏµÍ³µÄ´¦ÀíÒ³Ãæ£¬¼òµ¥½éÉÜÈçÏÂ£º
¡¡¡¡±í 1 JSPÎÄ¼þ

JSPÒ³Ãæ
ËµÃ÷

login.jsp
µÇÂ¼JSPÒ³Ãæ

switch.jsp 
½øÐÐÃÜÂëÑéÖ¤ºÍÒ³ÃæÁ÷×ª¿ØÖÆµÄJSPÒ³Ãæ¡£

error.jsp
´íÎó´¦ÀíJSPÒ³Ãæ£¬ÒÔÒ»ÖÖÓÑºÃµÄ·½Ê½Ïò¿Í»§±¨¸æ³ÌÐòµÄ´íÎó¡£ÎªÆäËûËùÓÐJSPÒ³ÃæµÄ´íÎó´¦ÀíÒ³Ãæ¡£

welcome.jsp
µÇÂ¼³É¹¦ºó×ªÏòµÄ»¶Ó­Ò³Ãæ¡£ÎÒÃÇÔÚ¸ÃÒ³ÃæÖÐÒýÓÃÁËÒ»Ì×µÚÈý·½µÄ±êÇ©¿â¡£

fail.jsp
µÇÂ¼Ê§°Üºó×ªÏòÕâ¸ö´íÎó´¦ÀíÒ³Ãæ¡£

quit.jsp 
ÍË³öÏµÍ³ºóµ÷ÓÃµÄÒ³Ãæ£¬Ëü¸ºÔðÇå³ýsession£¬½áÊø»á»°¡£

¡¡¡¡JSPÎÄ¼þÖ÷Òª¸ºÔðÒ³ÃæµÄÕ¹ÏÖ£¬¶øÒµÎñÂß¼­»ò×ÊÔ´´¦ÀíµÈ¹¦ÄÜ¿ÉÒÔ·Åµ½JavaÀàÖÐ£¬±íµ¥Êý¾ÝÔò¿ÉÒÔÍ¨¹ýBeanÀ´·â×°£¬Ä£¿éÖÐÌá¹©ÁË3¸öÀà£¬½éÉÜÈçÏÂ£º
¡¡¡¡±í 2 3¸öJavaÀà

Àà 
ËµÃ÷

DBConnection
»ñÈ¡Êý¾Ý¿âµÄÁ¬½Ó¡£

User 
ÃèÊöÓÃ»§¶ÔÏó²¢¸ºÔðÐ´µÇÂ¼¡¢ÍË³öÈÕÖ¾¡£

UserList 
»ñÈ¡ÏµÍ³µÄËùÓÐÓÃ»§²¢×ª»»ÎªÒ»¸öÍøÒ³ÏÂÀ­¿ò¡£

¡¡¡¡ÓÃ»§ÐÅÏ¢¼°ÓÃ»§µÇÂ¼ÐÅÏ¢ÓÃÊý¾Ý¿â±íÀ´´æ·Å£¬Ñ¡ÔñOracle 9i×÷ÎªÎÒÃÇµÄÊý¾Ý¿â£¬µ±È»£¬ÄãÒ²¿ÉÒÔÊ¹ÓÃÆäËûÀàÐÍµÄÊý¾Ý¿â£¬Ö»ÒªÏàÓ¦µØµ÷ÕûDBConnectionÀàºÍ±íSQL¶¨ÒåÓï¾ä¾Í¿ÉÒÔÁË£¬ÕâÖÖÒÆÖ²µÄ´ú¼ÛÊÇºÜÐ¡µÄ£¬ÏÂÃæ½éÉÜÕâÁ½ÕÅ±íµÄÓÃÍ¾ºÍ½á¹¹£º
¡¡¡¡±í 3 2ÕÅÊý¾Ý¿â±í

±íÃû
ËµÃ÷

T_USER 
ÓÃ»§ÐÅÏ¢±í£¬°üº¬ÓÃ»§ID¡¢ÓÃ»§Ãû¼°ÃÜÂë3¸ö×Ö¶Î¡£

T_LOGIN_LOG
¼ÇÂ¼ÓÃ»§µÇÂ¼µÄÊ±¼äºÍÍË³öµÄÊ±¼ä£¬ÈÕÖ¾Ö÷¼üÀûÓÃÒ»¸öÐòÁÐSEQ_LOGIN_LOG_ID²úÉú¡£

¡¡¡¡ÕâÁ½ÕÅÊý¾Ý¿â±íºÍÐòÁÐµÄ½á¹¹ÈçÏÂ£º

Í¼ 2 Êý¾Ý±í¼°ÐòÁÐ
¡¡¡¡Êý¾Ý¿âÓÃ»§Ãû/ÃÜÂëÊÇ£ºjbuser/abc¡£ÔÚ×ÅÊÖ¿ª·¢ÎÒÃÇµÄµÇÂ¼Ä£¿éÇ°£¬±ØÐëÏÈÔÚÊý¾Ý¿âÖÐ´´½¨ÓÃ»§£¬´´½¨Éú³É±íºÍÐòÁÐ¡£]]></description>
		</item>
		<item>
			<title>Swt³£ÓÃ¿Ø¼þÖÐÎÄ½Ì³Ì</title>
			<link>http://www.kingmx.com/article.php?id=12905</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
¡¡¡¡1¡¢EclipseÖÐswtµÄÅäÖÃ
¡¡¡¡½¨ÒéÅäÖÃ£ºjdk1.4.2ÒÔ¼°eclipse3.1
¡¡¡¡ÔÚ´úÂëÖÐµ÷ÓÃswt¿Ø¼þÖ®Ç°£¬Ê×ÏÈ½¨Á¢Ò»¸öÏîÄ¿£¬È»ºóÑ¡Ôñ¸ÃÏîÄ¿µÄproperties -&gt; Java Build Path£¬½«standard Widget ToolKit¼ÓÈëµ½LibraryÒ³µ±ÖÐ¡£ÈçÏÂÍ¼ËùÊ¾£º
¡¡¡¡½ÓÏÂÀ´¿ÉÒÔ½¨Á¢µÚÒ»¸öeclipseÐ¡³ÌÐò£¬ÐÂ½¨Ò»¸öclass£¬²¢ÇÒÔÚ¸ÃclassËù¶ÔÓ¦µÄ´úÂëÖÐÊäÈëÈçÏÂ³ÌÐò£¬ÆäÖÐpackageÒÔ¼°classÃû³Æ¸ù¾ÝÊµ¼ÊÇé¿öÀ´È·¶¨Ãû³Æ¡£
package mypakage;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
/*µ¼ÈëÐèÒªµÄÀà¿â*/
public class Myfrm1 {
public Myfrm1() {
super();
}
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
/*shellÎªÒ»¸ö´°¿Ú¶ÔÏó*/
Label label = new Label(shell, SWT.NONE);
label.setText("Hello, World!"); /*´´½¨Ò»¸ö±êÇ©¶ÔÏó²¢ÇÒÉèÖÃ±êÌâÎÄ×Ö*/
label.pack();
shell.pack();
shell.open(); /*´ò¿ª²¢ÏÔÊ¾´°¿Ú*/
while(!shell.isDisposed())
if(!display.readAndDispatch())
display.sleep(); /*ÔÚ´°¿ÚÃ»ÓÐÏú»ÙÖ®Ç°£¬ÏÔÊ¾¶ÔÏóÒ»Ö±´¦ÓÚµÈ´ý×´Ì¬*/
display.dispose(); /*·ñÔò£¬Ïú»Ù¶ÔÏó£¬ÊÍ·Å¶ÔÏóËùÕ¼¾ÝµÄ×ÊÔ´*/
label.dispose();
}
}
¡¡¡¡ÔËÐÐÉÏÊö´úÂë£¨run -&gt; debug -&gt; swt application£©½«²úÉúÈçÏÂËùÊ¾µÄÒ»¸ö´°¿Ú 
¡¡¡¡2¡¢buttonµÄÊ¹ÓÃ
¡¡¡¡°´Å¥¿ÉÄÜµÄÀàÐÍÓÐºÜ¶à£¬ÀýÈç£º
SWT.BORDER º¬ÓÐ±ß¿òµÄ°´Å¥
SWT.CHECK ¸´Ñ¡°´Å¥
SWT.PUSH ÆÕÍ¨°´Å¥
SWT.RADIO µ¥Ñ¡°´Å¥
¡¡¡¡3¡¢TextµÄÊ¹ÓÃ
¡¡¡¡ÎÄ±¾¿òµÄÀàÐÍÒ²ÓÐºÜ¶àÖÖÑ¡Ôñ£¬ÀýÈç£º
SWT.BORDER º¬ÓÐ±ß¿ò
SWT.READ_ONLY Ö»¶Á
¡¡¡¡ÏÂÍ¼Îª°üº¬°´Å¥ÒÔ¼°ÎÄ±¾¿òµÄ´°¿Ú
¡¡¡¡Éè¼ÆÉÏÊö´°¿ÚËù¶ÔÓ¦µÄ´úÂëÎª£º
package mypakage;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
public class Myfrm1 {
public Myfrm1() {
super();
}
public static void main(String[] args) {
Display display = new Display( );
Shell shell = new Shell(display);
shell.setSize(300, 200);
shell.setLayout(new RowLayout( ));
shell.setText("Button Example");
final Button button = new Button(shell, SWT.BORDER);
button.setText("Click Me");
final Text text = new Text(shell, SWT.BORDER); 
shell.open( );
while(!shell.isDisposed( )) {
if(!display.readAndDispatch( )) display.sleep( );
}
display.dispose( );
}
}
¡¡¡¡Èç¹ûÏë¶Ô¿Ø¼þµÄÎ»ÖÃÒÔ¼°´óÐ¡½øÐÐ¾«È·µÄÉèÖÃ£¬¿ÉÒÔÊ¹ÓÃsetBounds(x, y, width, height)·½·¨À´È¡´úshell.setLayout(new RowLayout( ))¡£ÀýÈç£ºbutton.setBounds(80, 80, 90, 20);
¡¡¡¡buttonµÄ¼àÌý¼°ÊÂ¼þ´¦Àí
¡¡¡¡¶Ô°´Å¥µ¥»÷ÊÂ¼þ´¦ÀíµÄ´úÂë£º
button.addSelectionListener(new SelectionListener( )
{
public void widgetSelected(SelectionEvent event)
{
text.setText("No worries!");
}
public void widgetDefaultSelected(SelectionEvent event)
{
text.setText("No worries!");
}
});
¡¡¡¡½«ÒÔÉÏ´úÂë¼ÓÈëµ½shell.openÖ®Ç°£¬µ±µã»÷°´Å¥Ê±²úÉúÒÔÏÂÐ§¹û£º
¡¡¡¡·ÖÎö£ºÓÉÓÚÎªbutton°´Å¥Ôö¼ÓÁËÒ»¸ö¼àÌýÆ÷£¬°´Å¥Ê±¿Ì´¦ÓÚ±»¡°¼à¿Ø¡±µÄ×´Ì¬£¬µ±°´Å¥¿Ø¼þ±»Ñ¡Ôñ£¨µã»÷£©¼ÈÑ¡ÔñÊÂ¼þ·¢ÉúÊ±£¬¶ÔÎÄ±¾¿Ø¼þ½øÐÐ¸³Öµ¡±No worries¡±¡£
¡¡¡¡¸ù¾Ý¼àÌýÊÂ¼þµÄÔ­Àí£¬Éè¼ÆÈçÏÂ³ÌÐò£¬¸Ã³ÌÐòÄÜ¹»»ñµÃÊó±êµÄX×ø±ê£¬ÏÔÊ¾ÔÚÎÄ±¾¿òÖÐ£º
package mypakage;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
public class Myfrm1 {
public Myfrm1() {
super();
}
public static void main(String[] args) {
Display display = new Display( );
Shell shell = new Shell(display);
shell.setSize(300, 200);
shell.setLayout(new RowLayout( ));
final Text text = new Text(shell, SWT.SHADOW_IN);
shell.addMouseMoveListener(new MouseMoveListener( )
{
public void mouseMove(MouseEvent e)
{
Integer y=new Integer(e.x); /*½«x×ø±ê×ª»»ÎªIntegerÀàÐÍµÄ¶ÔÏó*/
text.setText(y.toString()); 
}
});
shell.open( );
while(!shell.isDisposed( )) {
if(!display.readAndDispatch( )) display.sleep( );
}
display.dispose( );
}
}
¡¡¡¡¼àÌý·½Ê½£º
ControlListener ÓÃÓÚ´¦ÀíÒÆ¶¯ÒÔ¼°³ß´ç±ä»¯
FocusListener ÓÃÓÚ´¦ÀíµÃµ½½¹µãÒÔ¼°Ê§È¥½¹µã
KeyListener ´¦Àí°´¼üµÄÊäÈë
MouseListener , MouseMoveListener, MouseTrackListener ¶ÔÊó±êµÄ¶¯×÷½øÐÐ´¦Àí
SelectionListener ´¦Àí¿Ø¼þµÄÑ¡ÔñÐÐÎª£¨°üÀ¨°´Å¥µÄµã»÷£©
¡¡¡¡×¢Òâ£º¼àÌý·½Ê½ÓëÆäËùÄÜ¹»´¦ÀíµÄÊÂ¼þ¾ßÓÐÒ»¶¨µÄ¹ØÁªÐÔ£¬¼È¼àÌý·½Ê½¾ö¶¨ÁËËùÄÜ¹»´¦ÀíÊÂ¼þµÄÖÖÀà£¬ÀýÈç£º
shell.addMouseListener(new MouseListener( )
{
public void mouseMove(MouseEvent e)
{text.setText("mousemove");}
public void mouseDoubleClick(MouseEvent e)
{text.setText("mousedbclc");}
public void mouseDown(MouseEvent e)
{}
public void mouseUp(MouseEvent e)
{}
});
¡¡¡¡Äã»á·¢ÏÖÔÚÊó±êÒÆ¶¯Ê±£¬text.setText("mousemove");Ê¼ÖÕ²»ÄÜ¹»Ö´ÐÐ£»²¢ÇÒmouseDown¡¢mouseUpÊÂ¼þ²»ÄÜ¹»Ê¡ÂÔ£¬Ô­Òò¾ÍÔÚÓÚMouseListenerÖ»ÄÜ´¦ÀímouseDoubleClick¡¢mouseDown¡¢mouseUpÈýÀàÊÂ¼þ£¬¶øÇÒÕâÈýÀàÊÂ¼þ²»ÄÜ¹»·ÖÀë¡£
¡¡¡¡3¡¢List¿Ø¼þ
¡¡¡¡List¿Ø¼þµÄÑùÊ½°üÀ¨£º
SWT.BORDER º¬ÓÐ±ß¿ò
SWT.H_SCROLL º¬ÓÐË®Æ½¹ö¶¯Ìõ
SWT.V_SCROLL º¬ÓÐ´¹Ö±¹ö¶¯Ìõ
SWT.SINGLE ÔÊÐíµ¥Ñ¡
SWT.MULTI ÔÊÐí¸´Ñ¡
¡¡¡¡ÈôÒª´´½¨Ò»¸öº¬ÓÐ´Ó11¸öÔªËØµÄList£¬¿ÉÒÔÍ¨¹ýÒÔÏÂ´úÂëÀ´ÊµÏÖ
final List list = new List (shell, SWT.SINGLE);
for (int i=0;i&lt;=10;i++)
list.add("item"+i);
¡¡¡¡ÒÔÏÂÊµÀýÄÜ¹»ÅÐ¶ÏList¿Ø¼þÖÐËùÑ¡ÔñµÄÑ¡Ïî£¬²¢ÇÒÊä³öÏÔÊ¾ÔÚ¿ØÖÆÌ¨ÖÐ£º
package mypakage;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
public class Myfrm1 {
public Myfrm1() {
super();
}
public static void main(String[] args) {
Display display = new Display ( );
Shell shell = new Shell (display);
shell.setText("List Example");
shell.setSize(300, 200);
shell.setLayout(new FillLayout(SWT.VERTICAL));
final List list = new List (shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL); 
for (int loopIndex = 0; loopIndex &lt; 100; loopIndex++){ 
list.add("Item " + loopIndex);
}
list.addSelectionListener(new SelectionListener( )
{
public void widgetSelected(SelectionEvent event)
{
int selections[] = list.getSelectionIndices ( );
String outText = "";
for (int loopIndex = 0; loopIndex &lt; selections.length; 
loopIndex++) outText += selections[loopIndex] + " ";
System.out.println ("You selected: " + outText);
}
public void widgetDefaultSelected(SelectionEvent event)
{
int [] selections = list.getSelectionIndices ( );
String outText = "";
for (int loopIndex = 0; loopIndex &lt; selections.length; loopIndex++) 
outText += selections[loopIndex] + " ";
System.out.println ("You selected: " + outText);
}
});
shell.open ( );
while (!shell.isDisposed ( )) {
if (!display.readAndDispatch ( )) display.sleep ( );
}
display.dispose ( );
}
}
¡¡¡¡Ð§¹ûÍ¼£º
¡¡¡¡You selected: 4 5 6 7 8 9 10
¡¡¡¡·ÖÎö£ºlist.getSelectionIndices ( )·½·¨½«»á»ñµÃ±»Ñ¡ÔñÏîÄ¿µÄ¼¯ºÏ£¬ selections[]»òÕß[] elections±íÊ¾¶¯Ì¬Ò»Î¬Êý×é¡£
¡¡¡¡4¡¢Menu¿Ø¼þ
¡¡¡¡½¨Á¢²Ëµ¥µÄÒ»°ã²½ÖèÎª£º
¡¡¡¡1¡¢ÔÚ½¨Á¢²Ëµ¥Ê±£¬Ê×ÏÈÐèÒª½¨Á¢Ò»¸ö²Ëµ¥À¸£¬ÐèÒªÊ¹ÓÃSWT.BARÊôÐÔ
¡¡¡¡Menu menuBar = new Menu(shell, SWT.BAR);
¡¡¡¡2¡¢ÔÚ²Ëµ¥À¸µÄ»ù´¡Ö®ÉÏ£¬´´½¨ÏÂÀ­²Ëµ¥µÄËù¶ÔÓ¦µÄ¶¥¼¶²Ëµ¥Ïî£¬ÐèÒªÊ¹ÓÃSWT.CASCADEÊôÐÔ
fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
¡¡¡¡fileMenuHeader.setText("&amp;File");
¡¡¡¡3¡¢½¨Á¢Óë¶¥¼¶²Ëµ¥ÏîÏà¹ØµÄÏÂÀ­Ê½²Ëµ¥
¡¡¡¡dropMenu1 = new Menu(shell, SWT.DROP_DOWN);
¡¡¡¡4¡¢½«¶¥¼¶²Ëµ¥ÏîÓëÏÂÀ­²Ëµ¥¹ØÁª
MenuHeader1.setMenu(dropMenu1);
¡¡¡¡5¡¢ÎªÏÂÀ­²Ëµ¥Ìí¼Ó×Ó²Ëµ¥Ïî
dropitem1= new MenuItem(dropMenu1, SWT.PUSH);
dropitem1.setText("open");
¡­
¡­
¡¡¡¡6¡¢×îºó£¬ÔÚ´°¿ÚÖÐÖ¸¶¨ÐèÒªÏÔÊ¾µÄ²Ëµ¥À¸
shell.setMenuBar(menuBar);
¡¡¡¡²Ëµ¥µÄ¼àÌý¼°ÊÂ¼þ
¡¡¡¡²ÎÕÕ°´Å¥µÄ¼àÌýÒÔ¼°ÊÂ¼þ£¬Éè¼ÆÈçÏÂ³ÌÐò£¬µ±µã»÷ File×Ó²Ëµ¥ÏÂµÄ¡°open¡±Ê±£¬ÔÚÎÄ±¾¿òÖÐÏÔÊ¾¡°click open menu!¡±
dropitem1.addSelectionListener(new SelectionListener()
{
public void widgetSelected(SelectionEvent event)
{
text.setText("click open menu!");
}
public void widgetDefaultSelected(SelectionEvent event)
{
text.setText("click open menu!");
}
});
¡¡¡¡5¡¢Ê¹ÓÃ¹¤¾ßÀ¸toobar
¡¡¡¡½¨Á¢¹¤¾ßÀ¸¿ÉÒÔÍ¨¹ýÈçÏÂ·½Ê½£ºToolBar toolbar = new ToolBar(shell, SWT.NONE);
¡¡¡¡ÔÚ¹¤¾ßÀ¸µÄ»ù´¡Ö®ÉÏ´´½¨¹¤¾ßÀ¸×Ó°´Å¥£¬²¢ÇÒÉèÖÃ×Ó°´Å¥µÄ±êÌâ£º
ToolItem item1 = new ToolItem(toolbar, SWT.PUSH);
item1.setText("item1");
¡¡¡¡ÀýÈç£º
ToolBar toolbar = new ToolBar(shell, SWT.NONE);
ToolItem item1 = new ToolItem(toolbar, SWT.PUSH);
item1.setText("item1");
ToolItem item2 = new ToolItem(toolbar, SWT.PUSH);
item2.setText("item2");
¡¡¡¡¹¤¾ßÀ¸µÄ¼àÌý¼°ÊÂ¼þ
¡¡¡¡ÊµÀý£º´´½¨Ò»¸ö¼àÌý¶ÔÏó£¬½«¸Ã¼àÌý¶ÔÏóÓ¦ÓÃÓÚÃ¿Ò»¸ö°´Å¥£¬×îÖÕÀ´ÅÐ¶ÏÊó±êµã»÷µÄÊÇÄÄÒ»¸ö°´Å¥£¬Ð§¹ûÍ¼ÈçÏÂ¡£
Listener listener = new Listener( ) {
public void handleEvent(Event event) {
ToolItem item =(ToolItem)event.widget;
String string = item.getText( );
text.setText("You selected:" + string); }
};
item1.addListener(SWT.Selection, listener);
item2.addListener(SWT.Selection, listener);
item3.addListener(SWT.Selection, listener);
item4.addListener(SWT.Selection, listener);
¡¡¡¡6¡¢¹ö¶¯ÌõsliderµÄÊ¹ÓÃ
¡¡¡¡¹ö¶¯Ìõ·ÖÎªÓÐ±ß¿ò¡¢´¹Ö±¡¢Ë®Æ½ÈýÖÖÀàÐÍ£¬ÀûÓÃslider.setBounds·½·¨¿ÉÒÔÖ¸¶¨¹ö¶¯ÌõËùÔÚµÄÎ»ÖÃ¡£
¡¡¡¡¹ö¶¯ÌõËùÄÜ¹»´¦ÀíÊÂ¼þµÄ°üÀ¨£º
SWT.ARROW_DOWN ÏòÏÂ»òÏòÓÒ°´Å¥±»µã»÷
SWT.ARROW_UP Ïò×ó»òÏòÉÏ°´Å¥±»µã»÷
SWT.DRAG »¬¿é°´Å¥±»ÍÐ¶¯
SWT.END »¬¿éµ½´ïÖÕµã
SWT.HOME »¬¿éµ½´ïÆðµã
SWT.PAGE_DOWN ÏÂ·½»òÓÒ²àµÄ¹ö¶¯Ìõ±»µã»÷
SWT.PAGE_UP ÉÏ·½»ò×ó²àµÄ¹ö¶¯Ìõ±»µã»÷
¡¡¡¡ÊµÀý£º¸ù¾Ý»¬¿éµÄÎ»ÖÃÒÆ¶¯°´Å¥Î»ÖÃ
slider.addListener(SWT.Selection, new Listener( ) {
public void handleEvent(Event event) {
switch(event.detail) {
case SWT.ARROW_DOWN: button.setBounds(slider.getSelection(),0,20,10); 
break;
case SWT.ARROW_UP:button.setBounds(slider.getSelection(),0,20,10); 
break;
case SWT.DRAG:button.setBounds(slider.getSelection(),0,20,10); 
break;
case SWT.END:button.setBounds(slider.getSelection(),0,20,10); 
break;
case SWT.HOME:button.setBounds(slider.getSelection(),0,20,10); 
break;
case SWT.PAGE_DOWN:button.setBounds(slider.getSelection(),0,20,10); 
break;
case SWT.PAGE_UP:button.setBounds(slider.getSelection(),0,20,10); 
break;
}
}
});
¡¡¡¡7¡¢Ê÷ÐÎ¿Ø¼þTree
¡¡¡¡Ê÷ÐÎ¿Ø¼þÊ¹ÓÃµÄ·½·¨Îª£¬Ê×ÏÈ´´½¨Ò»¸öTreeÀàÐÍµÄ¶ÔÏó£¬Æä´ÎÔÚ¸Ã¶ÔÏóµÄ»ù´¡Ö®ÉÏ¼ÌÐøÀ©Õ¹½Úµã£¬ÒÔ¼°À©Õ¹½ÚµãµÄ×Ó½Úµã¡£
¡¡¡¡final Tree tree = new Tree(shell, SWT.BORDER);
¡¡¡¡¿ÉÒÔÀûÓÃtree.setSize·½·¨À´¸Ä±äÊ÷ÐÎ¿Ø¼þµÄ´óÐ¡¡£ÔÚ´´½¨½ÚµãÊ±£¬ÐèÒªÖ¸Ã÷¸Ã½ÚµãËùÒÀÀµµÄ¸¸½ÚµãµÄÃû³Æ£¬ÈçTreeItem item0 = new TreeItem(tree, 0);£¬ÄÇÃ´item0½«³ÉÎªtree¶ÔÏóÖÐµÄ0¼¶£¨¶¥¼¶£©½Úµã¡£
¡¡¡¡ÈçÏÂ³ÌÐò½«ÔÚtree¶ÔÏóµÄ»ù´¡Ö®ÉÏ²úÉú9¸ö½Úµã£º
final Tree tree = new Tree(shell, SWT.BORDER);
tree.setSize(290, 290);
for(int loopIndex1 = 2000; loopIndex1 &lt;= 2008; loopIndex1++) {
TreeItem item0 = new TreeItem(tree, 0);
item0.setText("Year " + loopIndex1);
}
¡¡¡¡ÔÚÉÏÊöÊµÀýµÄ»ù´¡ÉÏÎªÃ¿Ò»¸ö0¼¶½ÚµãµÄ»ù´¡ÉÏÀ©Õ¹³ö12¸ö½Úµã£º
for(int loopIndex1 = 2000; loopIndex1 &lt;= 2008; loopIndex1++) {
TreeItem item0 = new TreeItem(tree, 0);
item0.setText("Year " + loopIndex1);
for(int loopIndex2 = 1; loopIndex2 &lt;= 12; loopIndex2++) {
TreeItem item1 = new TreeItem(item0, 0);
item1.setText("Month " + loopIndex2);
}
}
¡¡¡¡8¡¢¶Ô»°¿òdialog
¡¡¡¡¶Ô»°¿òÊÇÒ»¸öÒÀÍÐÓÚÖ÷´°ÌåµÄ×Ó´°Ìå£¬ÈçÍ¼ËùÊ¾¡£
¡¡¡¡ÀýÈç£ºµ±ÔÚÖ÷´°ÌåÖÐµã»÷°´Å¥Ê±£¬µ¯³öÒ»¸ö¶Ô»°¿òdialog£¬µ±¹Ø±Õ¶Ô»°¿òÊ±°´Å¥ÏÔÊ¾¡°dialog is disposed¡±
Display display = new Display( );
final Shell shell = new Shell(display);
shell.setSize(300, 200);
shell.setText("main");
final Button opener = new Button(shell, SWT.PUSH);
opener.setText("Click Me");
opener.setBounds(20, 20, 50, 25);
final Shell dialog = new Shell(shell, SWT.APPLICATION_MODAL |
SWT.DIALOG_TRIM);
dialog.setText("dialog");
dialog.setBounds(10,10,50,60);
dialog.addDisposeListener(new DisposeListener(){
public void widgetDisposed(DisposeEvent e){
opener.setText("dialog is disposed");
}
});
Listener openerListener = new Listener( ) {
public void handleEvent(Event event) {
dialog.open( );
}
};
opener.addListener(SWT.Selection, openerListener);
shell.open( );
while(!dialog.isDisposed( )) {
if(!display.readAndDispatch( )) display.sleep( );
} 
while (!shell.isDisposed( )) {
if (!display.readAndDispatch( ))
display.sleep( );
}
display.dispose( );
]]></description>
		</item>
		<item>
			<title>ÉîÈëÌÖÂÛJSFÖÐTree2×é¼þÊ¹ÓÃ·½·¨</title>
			<link>http://www.kingmx.com/article.php?id=12906</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[¡¡¡¡Tree2×é¼þÊ¹ÓÃHTML±í¸ñ½«ÄãµÄÊý¾Ý³ÊÏÖÎªÒ»¸öÊ÷¡£Õâ¸öÊ÷ÊÇ¶¯Ì¬µÄ£ºµ±ÓÃ»§µã»÷ËüÃÇÊ±ËüÃÇ¿ÉÒÔÕ¹¿ª»òÕßÕÛµþ¡£¸Ã×é¼þÍ¬Ê±Ö§³Ö¿Í»§¶ËºÍ·þÎñ¶ËµÄ½»»¥·½Ê½£¬ÔÚ¿Í»§¶Ë½»»¥Ê±Ê¹ÓÃÁËJavaScript¡£ÔÚËæºóµÄÀý×ÓÖÐ£¬Ã¿´ÎÓÃ»§µÄµã»÷½«²úÉúÒ»¸öRequest / Response ÖÜÆÚ£¬²¢ÔÚÐÂµÄÊÓÍ¼×´Ì¬£¨View State£©ÖÐÖØÐÂ³ÊÏÖÐÂµÄÊ÷½á¹¹¡£ 
¡¡¡¡×¢£ºÔÚºóÃæµÄÀý×ÓÖÐÖ»ÓÐ¿É¼ûµÄ£¨ÒÑ¾­Õ¹¿ªµÄ½Úµã£©Êý¾Ý±»´«ËÍµ½¿Í»§¶Ë¡£¶øÔÚµÚÒ»¸öÀý×Ó£¨¿Í»§¶ËTree£©£¬ÔÚÃ¿¸öHTML ResponseÖÐ£¬Õû¸öÊ÷¶¼±»·¢ËÍµ½¿Í»§¶Ëä¯ÀÀÆ÷¡£Ê÷µÄÃ¿¸ö½Úµã¶¼°üº¬ÁË²»ÉÙµÄHTML´úÂë£¨¼Ù¶¨Ã¿¸ö½Úµã200¸ö×Ö·û£¬Õâ¸ö´óÐ¡½«È¡¾öÓÚÄãÏ£ÍûÔÚ½ÚµãÉÏÏÔÊ¾µÄÐÅÏ¢µÄÁ¿£©£¬ÕâÐ©ÐÅÏ¢½«±»´«ËÍµ½ä¯ÀÀÆ÷£¬ÆäÖÐ°üÀ¨ÁËÄÇÐ©²»¿É¼ûµÄ½Úµã£¨Ã»ÓÐÕ¹¿ªµÄ½Úµã£©£¬ÒòÎªËüÃÇµÄÒ»¸ö×æÏµ½Úµã±»Õ¹¿ª¡£Èç¹ûÄãÓÐÒ»¸öÉî¶ÈÓÐËÄ²ãµÄÊ÷£¬Æ½¾ùÃ¿¸ö½áµãÓµÓÐËÄ¸ö×Ó½áµã£¬ÕâÊ±ºòÄã¾ÍÐèÒª´«Êä10 + 102 + 103 + 104 = 11 110¸ö½Úµã£¬Ã¿¸ö½ÚµãÓÐ200¸ö×Ö·û£¬Õâ¸öÊ÷×Ü¹²¾ÍÓÐ2 222 000¸ö×Ö·û£¬Ò²¾ÍÊÇ2MµÄÊý¾Ý¡£Õâ¸öÀý×Ó½«ÏòÓÃ»§ËµÃ÷£¬ËäÈ»´¿¿Í»§¶ËTree»á¸ø¿Í»§¶Ë´øÀ´¸üºÃµÄÓÃ»§ÌåÑé£¬µ«ËæÖ®¶øÀ´µÄ´ø¿íÎÊÌâÑ¸ËÙµÄÔö³¤¡£´¿¿Í»§¶ËµÄÊ÷ÊÊÓÃÓÚÐ¡ÐÍµÄÊ÷£¬»òÕßÔÚIntranet¼°¿í´øÁ¬½ÓÖÐÊ¹ÓÃµÄÖÐÐÍ´óÐ¡µÄÊ÷¡£¶ÔÓÚ´óÐÍµÄÊ÷£¬»òÕßÄãÐèÒªÕÕ¹Ëµ½Ò»Ð©µÍ´ø¿íµÄÓÃ»§µÄÐèÒªÊ±£¬Äã¾ÍÐèÒªÊ¹ÓÃ·þÎñ¶ËÊ÷¡£Äã¿ÉÒÔÍ¨¹ýµÄclientSideToggleÕâ¸öÊôÐÔÀ´Ñ¡ÔñÄãÊ¹ÓÃµÄÊÇ¿Í»§¶ËµÄÊ÷»òÕß·þÎñ¶ËµÄÊ÷£¬£¼t:tree2£¾µÄclientSideToggleÕâ¸öÊôÐÔÀ´Ñ¡ÔñÄãÊ¹ÓÃµÄÊÇ¿Í»§¶ËµÄÊ÷»òÕß·þÎñ¶ËµÄÊ÷£¬£¼t:tree2 clientSideToggle="false" ...£¾½«»áÊ¹ÓÃ·þÎñ¶ËµÄÊ÷£¬ÊôÐÔÖµÉèÎªtrue½«»áÊ¹ÓÃ¿Í»§¶ËµÄÊ÷£¬Ä¬ÈÏÖµÎªtrue¡£
¡¡¡¡Backing Bean:
¡¡¡¡Tree2×é¼þ¶ÔBacking BeanÖÐµÄÒ»¸öTreeModel½øÐÐ²Ù×÷¡£Í¨³£Çé¿ö£¬ÄãÖ»Òª°ÑÕâ¸öTreeModel°ó¶¨µ½Õâ¸ö×é¼þÉÏ¾Í¿ÉÒÔÁË£¬¾ÍÏñÕâÑù£º
£¼t:tree2 value="#{myHandler.treeModel}" 
¡¡¡¡ÏÂÃæÐèÒª½¨Á¢Ò»¸öÀàMyHandler£¬ÔÚfaces-config.xmlÖÐµÄmanaged beanÅäÖÃ³ÉmyHandler£¬ÔÚÀý×ÓÖÐÕâ¸öÀàÌá¹©ÁËÒ»¸ö·½·¨getTreeModel()ÓÃÓÚ·µ»ØÒ»¸öTreeModelÓÃÓÚ±íÊ¾ÄãµÄÊý¾Ý¡£
public class MyHandler {
¡¡public TreeModel getTreeModel() {
¡¡¡¡......
¡¡}
}
¡¡¡¡TreeModelÊµ¼ÊÉÏÊÇ¶ÔTreeNodeÊµÀý½øÐÐÁËÒ»Ð©¼òµ¥µÄ°ü×°¡£
¡¡¡¡TreeNodeÊÇÒ»¸ö½Ó¿Ú£¬ÆäÖÐºÍtree2Ïà¹ØÓÐËÄ¸ö·½·¨£º
String getType()
boolean isLeaf()
List getChildren()
int getChildCount()
¡¡¡¡ÆäËü·½·¨¶¼Ã»ÓÐÊ²Ã´ÓÃ´¦ÁË£¬¿ÉÄÜ»áÔÚ½ñºóµÄ°æ±¾ÖÐÈ¡Ïû¡£ËüÃÇÒªÇó¿ª·¢ÕßÔÚ¿ª·¢backing beanÖÐ×öÒ»Ð©²¢²»±ØÒªµÄ²Ù×÷¡£
¡¡¡¡int getChildCount() ·½·¨·µ»ØÕâ¸ö½ÚµãµÄ×Ó½áµãÊýÁ¿£¬Õâ¸ö·½·¨ÁËºÜÈÝÒ×µÄ²ÉÓÃÈçÏÂµÄ·½Ê½ÊµÏÖ£º
public final int getChildCount() {
return getChildren().size();
}
¡¡¡¡¸Ã·½·¨µÄ³öÏÖÊ¹µÃ¶ÔÓÚ×Ó½áµãµÄÑÓ³Ù¼ÓÔØ±äµÄ¿ÉÐÐ¡£¸Ã·½·¨µÄÊµÏÖÖ»ÐèÒª·µ»Ø¸Ã½ÚµãµÄ×Ó½áµãÊýÁ¿£¬¶ø²»ÐèÒª·µ»ØÃ¿¸ö×Ó½áµãµÄÊµÀý¡£
¡¡¡¡boolean isLeaf() ·½·¨ÔÚ¸Ã½ÚµãÃ»ÓÐ×Ó½ÚµãµÄÊ±ºò·µ»Øtrue¡£ÕâÑù£¬Ò»¸öºÜÖ±½ØÁËµ±µÄÊµÏÖ¿ÉÒÔÕâÑù£º
public final boolean isLeaf() {
return getChildren().isEmpty();
}
¡¡¡¡²»¹ÜÄãÌá¹©ÁËÊ²Ã´ÑùµÄÊµÏÖ£¬ÔÚÈÎºÎÊ±¼äÈÎºÎÇé¿öÏÂÄã¶¼µÃ±£³ÖgetChildren().isEmpty() ==£¾ isLeaf()¡£isLeaf()·½·¨Êµ¼ÊÉÏ¿ØÖÆÁË½Úµã±»ÔõÑù³ÊÏÖ£ºÊÇ·ñ±»µ±×öÊ÷Ò¶½Úµã£¨²»ÄÜ±»¼ÌÐøÕ¹¿ª£©¡£
¡¡¡¡String getType() ·½·¨¾ö¶¨ÁËÓÃÔõÑùµÄ·½Ê½À´³ÊÏÖÕâ¸ö½Úµã¡£ÔÚ JSF Ò³ÃæÖÐ£¬¿ÉÒÔÔÚ £¼t:tree2£¾ µÄTag ÖÐÇ¶Ì×facet£¬JSF½«»áÑ¡³öÓë getType() ·½·¨·µ»ØÖµÍ¬ÃûµÄ facet ÓÃÓÚ³ÊÏÖ¡£Èç¹û¸Ã½ÚµãÃ»ÓÐÕÒµ½Ïà·ûµÄ facet£¬½«»áµ¼ÖÂÒ»¸ö´íÎó£¬²¢ÇÒÕâ¸ö·½·¨²»»á·µ»Ønull¡£
¡¡¡¡List getChildren() ·½·¨·µ»ØÒ»¸ö List£¬ÆäÖÐ°üº¬ÁË¸Ã½ÚµãÏÂËùÓÐµÄ TreeNode£¬Õâ¾Í±íÊ¾ÕâÐ©½Úµã½«±»³ÊÏÖÎª¸Ã½ÚµãÏÂµÄ×Ó½áµã¡£¸Ã List ²»ÄÜ°üº¬ null£¬Èç¹û¸Ã List µÄ´óÐ¡ºÍgetChildCount()²»·û£¬½«»á±¨´í¡£×Ó½áµã½«°´ÕÕËüÃÇÔÚ List ÖÐµÄË³Ðò³ÊÏÖ³öÀ´¡£
¡¡¡¡¸Ä±äTreeÖÐµÄÄÚÈÝ
¡¡¡¡£¨µ±Õ¹¿ªÊ÷µÄ½ÚµãÊ±£¬ÔÚºóÌ¨ÑÓ³Ù¼ÓÔØ£©
¡¡¡¡ÔÚÓÊ¼þÁÐ±íÖÐÓÐºÜ¶à¹ØÓÚÕâÏîÈÎÎñµÄÎÊÌâºÍÌÖÂÛ£¬ÎÒ£¨Marcel£¬Ò»¸ö JSF µÄ³õÑ§Õß£©ÔÚÕâÀï×Ü½áÒ»ÏÂ¡£Èç¹ûÄãÓÐ¸üºÃµÄ½â¾ö·½°¸£¬Çë¸üÐÂÕâÐ©ÎÄ×Ö¡£
¡¡¡¡ÔÚÕâÀï´æÔÚµÄÒ»¸öÎÊÌâ¾ÍÊÇÎÒÒªÕâÑù°Ñ¡°£«¡±Í¼±êÈ¥µô£º
¡¡¡¡€€ £¼t:tree2 ... showNav="false" ...£¾ 
¡¡
¡¡¡¡È»ºóÔÙÈÃÎÄ¼þ¼ÐÍ¼±ê£¨´ú±í°üº¬×Ó½ÚµãµÄ½Úµã£©±äµÄ¿Éµã»÷£º
¡¡¡¡€€ £¼h:commandLink action="#{t.toggleExpanded}" actionListener="#{navigationBacker.processAction}"£¾ 
¡¡¡¡È»ºóÔÚ Java ´úÂëÖÐ½ÓÊÜÊó±êµã»÷µÄÊÂ¼þ¡£ÔÚ NavigationBacker.java ÎÄ¼þÖÐµÄprocessAction(ActionEvent e) ·½·¨Àï£¬ÎÒ´Ó EJB3-persistency ÖÐ¼ÓÔØ×Ó½áµãµÄÊý¾Ý¡£
¡¡¡¡²»ºÃµÄÊÇ¡°£«¡±Í¼±ê±äµÄ²»¿É¼û£¬µ«ÊÇÎÒÏÖÔÚÃ»ÓÐ°ì·¨»ñÈ¡µã»÷¡°£«¡±Í¼±êµÄÊÂ¼þ¡£
¡¡¡¡¿´ÆðÀ´ÔÚorg.apache.myfaces.custom.tree2.HtmlTree.javaÕâ¸öÎÄ¼þÀïÊÇÍ¨¹ý×¢²áÁË_expandControl = new HtmlCommandLink(); ´ÓÄÚ²¿»ñÈ¡¡°£«¡±µÄµã»÷ÊÂ¼þ£¬µ«ÊÇÎÒÏÖÔÚÃ»ÓÐ°ì·¨´ÓÎÒµÄ´úÂëÖÐ½ÓÊÜµ½ÕâÒ»ÊÂ¼þ¡£
¡¡¡¡ÎªÁËµ¼º½£¬ÎÒÊ¹ÓÃÁËº¬ÓÐentriesµÄTreeNode.getIdentifier() £¨²Î¼û£º#{node.identifier}£©£¬¿´ÆðÀ´¾ÍÊÇÕâ¸öÑù×Ó£º
¡¡¡¡€€ db_id="car_id=7,person_id=2" 
¡¡¡¡Õâ´ú±íÁËºóÌ¨Êý¾Ý¿â±íµÄÖ÷¼ü£¨ÎÒ»¹Ã»ÓÐÕÒµ½Ò»¸ö¸üºÃµÄ½â¾ö·½°¸ÓÃÓÚµ¼º½£©
¡¡¡¡³ÌÐò´úÂëÈçÏÂ£º
¡¡¡¡navigation.jsp 
£¼t:tree2 id="serverTree" value="#{navigationBacker.treeData}"
var="node" varNodeToggler="t" clientSideToggle="false" showNav="false"
showRootNode="false"£¾
£¼f:facet name="project-folder"£¾
£¼h:panelGroup£¾
£¼h:commandLink action="#{t.toggleExpanded}" actionListener="#{navigationBacker.processAction}"£¾
£¼t:graphicImage value="/images/yellow-folder-open.png"
rendered="#{t.nodeExpanded}" border="0" /£¾
£¼t:graphicImage value="/images/yellow-folder-closed.png"
rendered="#{!t.nodeExpanded}" border="0" /£¾
£¼/h:commandLink£¾
£¼h:commandLink action="#{navigationBacker.toViewId}"
styleClass="#{t.nodeSelected ? 'documentSelected':'document'}"
actionListener="#{navigationBacker.nodeClicked}"
value="#{node.description}" immediate="true"£¾
£¼f:param name="db_id" value="#{node.identifier}" /£¾
£¼/h:commandLink£¾
£¼h:outputText value=" (#{node.childCount})" styleClass="childCount"
rendered="#{!empty node.children}" /£¾
£¼/h:panelGroup£¾
£¼/f:facet£¾
£¼f:facet name="person-folder"£¾
£¼h:panelGroup£¾
¡¡¡¡NavigationBacker.java 
/** *//**
* À¹½Ø½Úµã±»Õ¹¿ªµÄÊÂ¼þ£¬²¢¼ÓÔØ¶îÍâµÄÊý¾Ý
* @param event
* @throws AbortProcessingException
*/
public void processAction(ActionEvent event) throws AbortProcessingException {
System.out.println("Entering processAction()");
UIComponent component = (UIComponent) event.getSource();
while (!(component != null &amp;&amp; component instanceof HtmlTree)) {
¡¡component = component.getParent();
}
if (component != null) {
¡¡HtmlTree tree = (HtmlTree) component;
¡¡TreeNodeBase node = (TreeNodeBase) tree.getNode();
¡¡if (!tree.isNodeExpanded() &amp;&amp; node.getChildren().size() == 0) {
¡¡¡¡Map£¼String, String£¾ map = splitKeyValues(node.getIdentifier()); // Ò»Ð©¸¨Öú´úÂë£¬ÓÃÓÚ½« "car_id=7" »ò "car_id=7&amp;person_id=12" ²ð·Ö¿ª
¡¡¡¡this.car_id = map.get("car_id");
¡¡¡¡if (this.car_id != null) {
¡¡¡¡¡¡appendPersonsNodes(node); // ²Î¼ûÏÂÃæµÄÀý×Ó
¡¡¡¡}
¡¡¡¡this.person_id = map.get("person_id");
¡¡¡¡if (this.person_id != null) {
¡¡¡¡¡¡appendLicensesNodes(node); // Ã»ÓÐÏÔÊ¾
¡¡¡¡}
¡¡}
}
}
/** *//** °Ñµ±Ç°car_idÏÂµÄPerson×Ó½áµã¼ÓÈëµ¼º½ÖÐ */
private void appendPersonsNodes(TreeNodeBase carDetailNode) {
¡¡VariableResolver resolver = FacesContext.getCurrentInstance().getApplication().getVariableResolver();
¡¡PersonsTable personsTable = (PersonsTable) resolver.resolveVariable(FacesContext.getCurrentInstance(),
"personsTable");
¡¡List£¼Person£¾ personsList = personsTable.getCarPersons();
¡¡for (Person o : personsList) {
¡¡¡¡List£¼TreeNodeBase£¾ list = carDetailNode.getChildren();
¡¡¡¡list.add(new TreeNodeBase("person-folder", o.getDescription(),"person_id=" + o.getPersonId(), true));
¡¡}
¡¡System.out.println("NavigationBacker fetched " + personsList.size() + " Persons for carId=" + this.car_id);
}
¡¡¡¡ÕâÀïÓÐÒ»¶Î¸¨Öú´úÂëÓÃÓÚ´Ó h:commandLink ÖÐ»ñÈ¡ f:param ÓÃÓÚ¶àÖÖÓÃÍ¾¡£
/** *//**
* µ± JSF ×é¼þ h:commandLink °üº¬ÓÐ f:param ³ÉÔ±, ÕâÐ© name-value ¶Ô±»·Åµ½ 
* request ²ÎÊý±íÖÐ¹©ºóÃæµÄaction handlerÊ¹ÓÃ¡£²»ÐÒµÄÊÇ£¬ÕâÑùµÄÓÃ·¨²»ÄÜÓÃÔÚ
* h:commandButtonÉÏ¡£ÎÒÃÇÃ»ÓÐ°ì·¨°ÑÍ¨¹ý button À´´«µÝÕâÐ©²ÎÊý¡£
*
* ÒòÎª Action Listeners ¿ÉÒÔ±£Ö¤ÔÚ Action ·½·¨Ç°±»Ö´ÐÐµ½£¬ËùÒÔ Action Listeners 
* ¿ÉÒÔµ÷ÓÃ¸Ã·½·¨¸üÐÂ Action ·½·¨ËùÐèÒªµÄÈÎºÎÉÏÏÂÎÄ¡£
*
* From http://cvs.sakaiproject.org/release/2.0.0/
* sakai2/gradebook/tool/src/java/org/sakaiproject/tool/gradebook/jsf/FacesUtil.java
* Educational Community License Version 1.0
*/
public static final Map getEventParameterMap(FacesEvent event) {
¡¡Map£¼String, String£¾ parameterMap = new HashMap£¼String, String£¾();
¡¡List children = event.getComponent().getChildren();
¡¡for (Iterator iter = children.iterator(); iter.hasNext();) {
¡¡¡¡Object next = iter.next();
¡¡¡¡if (next instanceof UIParameter) {
¡¡¡¡¡¡UIParameter param = (UIParameter) next;
¡¡¡¡¡¡parameterMap.put(param.getName(), "" + param.getValue());
¡¡¡¡}
¡¡}
¡¡//System.out.println("parameterMap=" + parameterMap);
¡¡return parameterMap;
}
¡¡¡¡×¢£ºÔÚÉÏÃæµÄÀý×ÓÀï£¬backing bean¶¼´æ·ÅÓÚ session ×÷ÓÃÓòÀï£¬¿ÉÒÔÔÚWEB-INF/examples-config.xml ÖÐ½øÐÐÅäÖÃ¡£]]></description>
		</item>
		<item>
			<title>¹¹¼Ü¡¢¿ò¼Ü¡¢Éè¼ÆÄ£Ê½Ö®¼äµÄ¹ØÏµ¼òÊö</title>
			<link>http://www.kingmx.com/article.php?id=12907</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[¡¡¡¡Ò»¡¢Èí¼þÌåÏµ½á¹¹ºÍ¿ò¼ÜµÄ¶¨Òå 
¡¡¡¡Èí¼þÌåÏµ½á¹¹µÄÓ¢ÎÄµ¥´ÊÊÇ¡°architecture¡±. ArchitectureµÄ»ù±¾´ÊÒåÊÇ½¨Öþ¡¢½¨ÖþÑ§¡¢½¨Öþ·ç¸ñ¡£ 
¡¡¡¡Èí¼þÌåÏµ½á¹¹ËäÈ»¸ùÖ²ÓÚÈí¼þ¹¤³Ì£¬µ«»¹´¦ÓÚÒ»¸öÑÐ¾¿·¢Õ¹µÄ½×¶Î£¬Æù½ñÎªÖ¹»¹Ã»ÓÐÒ»¸öÎª´ó¼ÒËù¹«ÈÏµÄ¶¨Òå¡£
¡¡¡¡¡¶Éè¼ÆÄ£Ê½¡·ÖÐ¶Ô¿ò¼ÜµÄ¶¨ÒåÊÇ¿ò¼Ü¾ÍÊÇÒ»×éÏà»¥Ð­×÷µÄÀà£¬¶ÔÓÚÌØ¶¨µÄÒ»ÀàÈí¼þ£¬¿ò¼Ü¹¹³ÉÁËÒ»ÖÖ¿ÉÖØÓÃµÄÉè¼Æ¡£
¡¡¡¡Èí¼þ¿ò¼ÜÊÇÏîÄ¿Èí¼þ¿ª·¢¹ý³ÌÖÐÌáÈ¡ÌØ¶¨ÁìÓòÈí¼þµÄ¹²ÐÔ²¿·ÖÐÎ³ÉµÄÌåÏµ½á¹¹£¬²»Í¬ÁìÓòµÄÈí¼þÏîÄ¿ÓÐ×Å²»Í¬µÄ¿ò¼ÜÀàÐÍ¡£¿ò¼ÜµÄ×÷ÓÃÔÚÓÚ£ºÓÉÓÚÌáÈ¡ÁËÌØ¶¨ÁìÓòÈí¼þµÄ¹²ÐÔ²¿·Ö£¬Òò´ËÔÚ´ËÁìÓòÄÚÐÂÏîÄ¿µÄ¿ª·¢¹ý³ÌÖÐ´úÂë²»ÐèÒª´ÓÍ·±àÐ´£¬Ö»ÐèÒªÔÚ¿ò¼ÜµÄ»ù´¡ÉÏ½øÐÐÒ»Ð©¿ª·¢ºÍµ÷Õû±ã¿ÉÂú×ãÒªÇó£»¶ÔÓÚ¿ª·¢¹ý³Ì¶øÑÔ£¬ÕâÑù×ö»áÌá¸ßÈí¼þµÄÖÊÁ¿£¬½µµÍ³É±¾£¬Ëõ¶Ì¿ª·¢Ê±¼ä£¬Ê¹¿ª·¢Ô½×öÔ½ÇáËÉ£¬Ð§ÒæÔ½×öÔ½ºÃ£¬ÐÎ³ÉÒ»ÖÖÁ¼ÐÔÑ­»·¡£
¡¡¡¡¿ò¼Ü²»ÊÇÏÖ³É¿ÉÓÃµÄÓ¦ÓÃÏµÍ³¡£ÊÇÒ»¸ö°ë³ÉÆ·£¬ÐèÒªºóÀ´µÄ¿ª·¢ÈËÔ±½øÐÐ¶þ´Î¿ª·¢£¬ÊµÏÖ¾ßÌå¹¦ÄÜµÄÓ¦ÓÃÏµÍ³¡£¿ò¼Ü²»ÊÇ¡°Æ½Ì¨¡±£¬Æ½Ì¨¸ÅÄî±È½ÏÄ£ºý¿ÉÒÔÊÇÒ»ÖÖ²Ù×÷ÏµÍ³£¬Ò»ÖÖÓ¦ÓÃ·þÎñÆ÷£¬Ò»ÖÖÊý¾Ý¿âÈí¼þ£¬Ò»ÖÖÍ¨Ñ¶ÖÐ¼ä¼þµÈµØÄÇ¸ö£¬Òò´ËÆ½Ì¨ÔÚÓ¦ÓÃÆ½Ì¨Ö÷ÒªÖ¸Ìá¹©ÌØ¶¨·þÎñµÄÏµÍ³Èí¼þ£¬¶ø¿ò¼Ü¸ü²àÖØÁËÉè¼Æ£¬¿ª·¢¹ý³Ì£¬»òÕß¿ÉÒÔËµ£¬¿ò¼ÜÍ¨¹ýµ÷ÓÃÆ½Ì¨Ìá¹©µÄ·þÎñ¶øÆðµÄ×÷ÓÃ¡£
¡¡¡¡¿ò¼Ü²»ÊÇ¹¤¾ß°ü»òÕßÀà¿â£¬µ÷ÓÃAPI²¢²»¾ÍÊÇÔÚÊ¹ÓÃ¿ò¼Ü¿ª·¢£¬½ô½ôÊ¹ÓÃAPIÊÇ£¬¿ª·¢ÕßÍê³ÉÏµÍ³µÄÖ÷Ìâ²¿·Ö£¬²¢²»Ê±µØµ÷ÓÃÀà¿âÊµÏÖÌØ¶¨ÈÎÎñ¡£¶ø¿ò¼Ü¹¹³ÉÁËÍ¨ÓÃµÄ¡¢¾ßÓÐÒ»°ãÐÔµÄÏµÍ³Ö÷Ìå²¿·Ö£¬¶þ´Î¿ª·¢ÈËÔ±Ö»ÊÇÏñ×öÌî¿ÕÒ»Ñù£¬¸ù¾Ý¾ßÌåÒµÎñ£¬Íê³ÉÌØ¶¨Ó¦ÓÃÏµÍ³ÖÐÓëÖÚ²»Í¬µÄÌØÊâ²¿·Ö¡£
¡¡¡¡¶þ¡¢¿ò¼ÜÓë¼Ü¹¹Ö®¼äµÄ¹ØÏµ
¡¡¡¡¿ò¼Ü²»ÊÇ¹¹¼Ü£¨¼´Èí¼þÌåÏµ»ú¹¹£©¡£ÌåÏµ½á¹¹È·¶¨ÁËÏµÍ³ÕûÌå½á¹¹¡¢²ã´Î»®·Ö£¬²»Í¬²¿·ÖÖ®¼äµÄÐ­×÷µÈÉè¼Æ¿¼ÂÇ¡£¿ò¼Ü±È¼Ü¹¹¸ü¾ßÌå¡£¸üÆ«ÖØÓÚ¼¼ÊõÉæÏÓ¡£È·¶¨¿ò¼Üºó£¬Èí¼þÌåÏµ½á¹¹Ò²ËæÖ®È·¶¨£¬¶ø¶ÔÓÚÍ¬Ò»Èí¼þÌåÏµ½á¹¹£¨±ÈÈçWeb¿ª·¢ÖÐµÄMVC£©£¬¿ÉÒÔÍ¨¹ý¶àÖÖ¿ò¼ÜÀ´ÊµÏÖ¡£
¡¡¡¡Èý¡¢¿ò¼ÜÓëÉè¼ÆÄ£Ê½Ö®¼äµÄ¹ØÏµ
¡¡¡¡Éè¼ÆÄ£Ê½ºÍ¿ò¼ÜÔÚÈí¼þÉè¼ÆÖÐÊÇÁ½¸ö²»Í¬µÄÑÐ¾¿ÁìÓò¡£Éè¼ÆÄ£Ê½ÑÐ¾¿µÄÊÇÒ»¸öÉè¼ÆÎÊÌâµÄ½â¾ö·½·¨£¬Ò»¸öÄ£Ê½¿ÉÓ¦ÓÃÓÚ²»Í¬µÄ¿ò¼ÜºÍ±»²»Í¬µÄÓïÑÔËùÊµÏÖ£»¶ø¿ò¼ÜÔòÊÇÒ»¸öÓ¦ÓÃµÄÌåÏµ½á¹¹£¬ÊÇÒ»ÖÖ»ò¶àÖÖÉè¼ÆÄ£Ê½ºÍ´úÂëµÄ»ìºÏÌåËäÈ»ËüÃÇÓÐËù²»Í¬£¬µ«È´¹²Í¬ÖÂÁ¦ÓÚÊ¹ÈËÃÇµÄÉè¼Æ¿ÉÒÔ±»ÖØÓÃ£¬ÔÚË¼ÏëÉÏ´æÔÚ×ÅÍ³Ò»ÐÔµÄÌØµã£¬Òò¶øÉè¼ÆÄ£Ê½µÄË¼Ïë¿ÉÒÔÔÚ¿ò¼ÜÉè¼ÆÖÐ½øÐÐÓ¦ÓÃ¡£
¡¡¡¡¿ò¼ÜºÍÉè¼ÆÄ£Ê½´æÔÚ×ÅÏÔÖøµÄÇø±ð£¬Ö÷Òª±íÏÖÔÚ¶þÕßÌá¹©µÄÄÚÈÝºÍÖÂÁ¦Ó¦ÓÃµÄÁìÓò¡£
¡¡¡¡1)´ÓÓ¦ÓÃÁìÓòÉÏ·Ö£¬¿ò¼Ü¸ø³öµÄÊÇÕû¸öÓ¦ÓÃµÄÌåÏµ½á¹¹£»¶øÉè¼ÆÄ£Ê½Ôò¸ø³öÁËµ¥Ò»Éè¼ÆÎÊÌâµÄ½â¾ö·½°¸£¬²¢ÇÒÕâ¸ö·½°¸¿ÉÔÚ²»Í¬µÄÓ¦ÓÃ³ÌÐò»òÕß¿ò¼ÜÖÐ½øÐÐÓ¦ÓÃ¡£
¡¡¡¡2)´ÓÄÚÈÝÉÏ·Ö£¬Éè¼ÆÄ£Ê½½öÊÇÒ»¸öµ¥´¿µÄÉè¼Æ£¬Õâ¸öÉè¼Æ¿É±»²»Í¬ÓïÑÔÒÔ²»ÓÃ·½Ê½À´ÊµÏÖ£»¶ø¿ò¼ÜÔòÊÇÉè¼ÆºÍ´úÂëµÄÒ»¸ö»ìºÏÌå£¬±à³ÌÕß¿ÉÒÔÓÃ¸÷ÖÖ·½Ê½¶Ô¿ò¼Ü½øÐÐÀ©Õ¹£¬½ø¶øÐÎ³ÉÍêÕûµÄ²»Í¬µÄÓ¦ÓÃ¡£
¡¡¡¡3)ÒÔµÚ¶þÌõÎª»ù´¡£¬¿ÉÒÔµÃ³öÉè¼ÆÄ£Ê½±È¿ò¼Ü¸üÈÝÒ×ÒÆÖ²£º¿ò¼ÜÒ»µ©Éè¼Æ³ÉÐÎ£¬ËäÈ»»¹Ã»ÓÐ¹¹³ÉÍêÕûµÄÒ»¸öÓ¦ÓÃ£¬µ«ÊÇÒÔÆäÎª»ù´¡½øÐÐÓ¦ÓÃµÄ¿ª·¢ÏÔÈ»ÒªÊÜÖÆÓÚ¿ò¼ÜµÄÊµÏÖ»·¾³£»¶øÉè¼ÆÄ£Ê½ÊÇÓëÓïÑÔÎÞ¹ØµÄ£¬ËùÒÔ¿ÉÒÔÔÚ¸ü¹ã·ºµÄÒì¹¹»·¾³ÖÐ½øÐÐÓ¦ÓÃ¡£
¡¡¡¡×ÜÖ®£¬¿ò¼ÜÊÇÈí¼þ£¬¶øÉè¼ÆÄ£Ê½ÊÇÈí¼þµÄÖªÊ¶Ìå£¬ÌáÉý¿ò¼ÜµÄÉè¼ÆË®Æ½¡£]]></description>
		</item>
		<item>
			<title>JSPÓ¦ÓÃÓï·¨Ïê½â´óÈ« £¨1£©</title>
			<link>http://www.kingmx.com/article.php?id=12319</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
1)HTML×¢ÊÍ:
¿ÉÒÔÓÃ×¢ÊÍÄÚÈÝ,Ò²¿ÉÒÔÓÃ±í´ïÊ½.
2)Òþ²Ø×¢ÊÍ:
×¢ÊÍ»á±»JSP±àÒëÊ±±»ºöÂÔ.±àÒëÆ÷²»»á¶ÔÖ®¼äµÄÓï¾ä±àÒë,Ëü²»»áÏÔÊ¾ÔÚ¿Í»§µÄä¯ÀÀÆ÷ºÍÔ´´úÂëÖÐ.
&nbsp;
3)ÉùÃ÷:
ÉùÃ÷Äã½«ÒªÔÚJSP³ÌÐòÖÐÓÃµ½µÄ±äÁ¿ºÍ·½·¨.¿ÉÒÔÒ»´ÎÐÔÉùÃ÷¶à¸ö±äÁ¿ºÍ·½·¨£¬ÒªÒÔ&quot;;&quot;½áÎ²,ÉùÃ÷ÔÚJavaÖÐÒªºÏ·¨.
&nbsp;
4)±í´ïÊ½:
JAVAÖÐµÄ±í´ïÊ½,»á±»ÏÔÊ¾ÔÚJSPÒ³ÃæÖÐ,×¢Òâ²»ÒªÓÐ&quot;;&quot;.
&nbsp;
5)JAVA´úÂë:
°üº¬ÓÐÐ§JAVA´úÂë.
&nbsp;
6)IncludeÖ¸Áî:
&nbsp; 
¿ÉÒÔ°üº¬HTML,JSP,ÎÄ±¾ÎÄ¼þ,JAVA´úÂë,Òª×¢ÒâÔÚÕâ¸ö°üº¬ÎÄ¼þÖÐ²»ÄÜÊ¹ÓÃÓÐÊ±»áµ¼ÖÂ´íÎó. 
ÊôÐÔ:
fileÖ¸Ïà¶ÔÂ·¾¶,Èç:&quot;error.jsp&quot;&quot;templates/onlinestore.html&quot;&quot;/beans/calendar.jsp&quot; 
Èç¹ûÕâ¸öÂ·¾¶ÒÔ&quot;/&quot;¿ªÍ·£¬ÄÇÃ´Õâ¸öÂ·¾¶Ö÷ÒªÊÇ²ÎÕÕJSPÓ¦ÓÃµÄÉÏÏÂ¹ØÏµÂ·¾¶£¬Èç¹ûÂ·¾¶ÊÇÒÔÎÄ¼þÃû»òÄ¿Â¼Ãû¿ªÍ·£¬ÄÇÃ´Õâ¸öÂ·¾¶¾ÍÊÇÕýÔÚÊ¹ÓÃµÄJSPÎÄ¼þµÄµ±Ç°Â·¾¶.
&nbsp;
7)PageÖ¸Áî:
ÊôÐÔ:
-language=&quot;java&quot;
ÉùÃ÷½Å±¾ÓïÑÔµÄÖÖÀà£¬ÔÝÊ±Ö»ÄÜÓÃ&quot;java&quot; 
-extends=&quot;package.class&quot;
¼Ì³ÐÒ»¸öÀà
-import=&quot;{package.class | package.* }, ...&quot;
µ¼ÈëÒ»¸ö°ü,ÏÂÃæµÄ°üÊÇÄ¬ÈÏ×Ô¶¯µ¼ÈëµÄ.
java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*
-session=&quot;true | false&quot;
ÊÇ·ñÔÊÐísession»á»°,Ä¬ÈÏtrue.
-buffer=&quot;none | 8kb | sizekb&quot;
ÉèÖÃ»º³åÇø´óÐ¡Ä¬ÈÏÖµÊÇ8kb,noneÊÇ¹Ø±Õ»º³åÇø,sizekbÊÇ×Ô¼ºÉèÖÃ´óÐ¡.
-autoFlush=&quot;true | false&quot;
ÊÇ·ñË¢ÐÂ»º³åÇø,true(È±Ê¡Öµ)Êä³öÕý³£,falseÕâ¸öbufferÒç³ö,¾Í»áµ¼ÖÂÒ»¸ö´íÎó,bufferÉèÖÃÎªnone,¾ÍÒª°ÑÕâ¸öÉèÖÃÎªfalse.
-isThreadSafe=&quot;true | false&quot;
ÉèÖÃJspÎÄ¼þÊÇ·ñÄÜ¶àÏß³ÌÊ¹ÓÃ¡£È±Ê¡ÖµÊÇtrue.
-info=&quot;text&quot;
¾ÍÊÇJSPµÄÒ»Ð©ÐÅÏ¢,ÄÜ¹»Ê¹ÓÃServlet.getServletInfo·½·¨È¡»Ø.
-errorPage=&quot;relativeURL&quot;
Ö¸¶¨½ÓÊÕException¶ÔÏóµÄJSPÒ³ÃæµÄURL.
-isErrorPage=&quot;true | false&quot;
ÉèÖÃÊÇ·ñ½ÓÊÕÒ»¸öException¶ÔÏó.
-contentType=&quot;text/html;charset=ISO-8859-1&quot;
ÉèÖÃÒ³ÃæÀàÐÍºÍ×Ö·û¼¯.È±Ê¡ÀàÐÍÊÇ:text/html,È±Ê¡×Ö·û¼¯Îª ISO-8859-1. 
]]></description>
		</item>
		<item>
			<title>JSP¼¼ÇÉ£º´ÓÔ­ÀíÉÏ½â¾öTomcatÖÐÎÄÎÊÌâ</title>
			<link>http://www.kingmx.com/article.php?id=12320</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
ºÜ¶à¿ªÔ´Èí¼þ¶¼ÓÐ¹ú¼Ê»¯ºÍ±¾µØ»¯µÄÎÊÌâ£¬ÆäÊµ¹ú¼Ê»¯±¾Ã»ÓÐÄÇÃ´¸´ÔÓ£¬Ö»ÊÇ×ÜÓÐÐ©¹«Ë¾Ï£ÍûÍ¨¹ý¾Ü¾ø¹ú¼Ê±ê×¼À´Ìá¸ßÊÐ³¡Õ¼ÓÐÂÊ£¬ËùÒÔÒ²¾Í½¥½¥µ¼ÖÂÁËÏÖÔÚµÄÇé¿ö¡£ºÜ¶à¿ªÔ´Èí¼þÊ×ÒªÖ§³ÖµÄ±ãÊÇUTF±àÂë£¬È»ºó²ÅÊÇÆäËû±àÂë¡£(by gashero)µ±È»Ò²ÓÐÐ©²»×Åµ÷µÄÈí¼þÊ×Ñ¡µÄÊÇISO-8859-1±àÂë£¬ÉõÖÁÊÇASCII±àÂë¡£ºÃÁË£¬ÏÂÃæÏÈ½²½²±àÂë£¬ÒòÎªTomcatÒ²ÊÇÒ»ÖÖ²»×Åµ÷µÄÈí¼þ¡£ 
¡¡¡¡³£¼ûµÄÖÐÎÄ±àÂëÓÐGB2312¡¢GBK¡¢GB18030µÈµÈ£¬µ±È»Ã»ÓÐ°üÀ¨·±ÌåÖÐÎÄ£¬ÕâÐ©±àÂë¶¼ÊÇ±íÊ¾±àÂë£¬¶ø²¢·ÇÊÇÏÔÊ¾±àÂë¡£ÏÖÔÚÔ½À´Ô½¶àµÄÈí¼þ£¬ÔÚÆäºËÐÄÊ¹ÓÃµÄÏÔÊ¾±àÂë»òÕßËµ´¦Àí±àÂë£¬ÊÇUnicode±àÂë¡£Unicode±àÂëÊ¹ÓÃ2×Ö½Ú±íÊ¾ÁËÊÀ½çÉÏ¼¸ºõËùÓÐµÄÎÄ×Ö·ûºÅ£¬×÷Èí¼þµÄÄÚ²¿¹ú¼Ê»¯´¦ÀíÔÙÊÊºÏ²»¹ýÁË¡£
¡¡¡¡Ö»ÊÇÓÐÐ©ö»öº¹«Ë¾£¬ÎªÁËÉÌÒµÄ¿µÄ£¬¶ÔÄÚºËµÄUnicode±àÂëAPIÈ«²¿ÆÁ±Î£¬¶ÔÍâÖ»Ìá¹©±¾µØ»¯±àÂë¡£(by gashero)±ÈÈçM$¹«Ë¾ÔÚÖÐÎÄÈí¼þÉÏ¾ÍÖ÷ÍÆGBK±àÂë¡£
¡¡¡¡»¹ÓÐÒ»¸öÎÊÌâ¾ÍÊÇÓÃC/C++±àÐ´µÄºÜÀÏµÄÈí¼þ£¬×Ö·û´®½áÊø±êÖ¾ÊÇ''£¬¶øÊ¹ÓÃUnicodeµÄ»°£¬»áÎÞ¹ÊµÄ½Ø¶ÏÒ»Ð©×Ö·û´®¡£ËùÒÔUTF-8¾ÍÓ¦ÔË¶øÉúÁË£¬ÕâÖÖ±ä³¤±àÂë¼È¿ÉÒÔ¼õÐ¡×Ö·û´®µÄÌå»ý£¬Ò²¿ÉÒÔ·ÀÖ¹½×¶Î¶ø´«ÊäUnicode±àÂë¡£
¡¡¡¡ÖÁÓÚ´«Í³µÄÓ¢ÎÄ±àÂë£¬×î³£¼ûµÄ¾ÍÊÇÁ½ÖÖ¡£Ò»ÊÇASCII£¬ÕâÖÖ×Ö·û¼¯¸ßÎ»Îª0£¬ÓÃ7Î»±íÊ¾Êý¾Ý¡£ÁíÒ»ÖÖÊÇISO-8859-1£¬Ã¿¸ö×Ö·û1×Ö½Ú£¬ÓÃ8Î»±íÊ¾Ò»¸ö×Ö·û¡£
¡¡¡¡TomcatµÄÄÚÖÃ±àÂë¾ÍÊÇÊ¹ÓÃÁËISO-8859-1¡£ÕâÒ²ÊÇ±¾ÎÄ×î¹Ø¼üµÄÒ»¾ä£¬¸÷ÖÖ¼¼ÇÉµÄ¸ù±¾¡£
¡¡¡¡ÓÉ´Ë¿ÉÖªÓÉÍøÒ³ËùÌá½»µÄÊý¾Ý¾ÍÐèÒª´ÓISO-8859-1½âÂë£¬ÈçÏÂÊÇ»ñµÃÌá½»²ÎÊýnumberµÄÀý×Ó¡£
¡¡¡¡String number=new String(request.getParameter(&quot;number&quot;).getBytes(&quot;ISO-8859-1&quot;),&quot;UTF-8&quot;);
¡¡¡¡Õâ¾ä¾Í³É¹¦µÄÊµÏÖÁË´ÓISO-8859-1ÏòUTF-8±àÂëµÄ×ª»»¡£
¡¡¡¡ÓÐ¾­ÑéµÄ¶ÁÕßÓ¦¸ÃÓöµ½¹ýÍ¨¹ý£¼jsp:param£¾±êÇ©´«µÝÍøÒ³¼ä²ÎÊýÊ±³ö´íµÄÎÊÌâ¡£(by gashero)½ÓÊÕµ½µÄ×Ö·û´®Ö»ÒªÊÇÎÞÂÛÈçºÎ¶¼ÊÇÒ»¶ÑÎÊºÅ¡£ÆäÊµÕâÒ²ÊÇTomcatÄÚ²¿±àÂëËùµ¼ÖÂµÄ¡£Èç¹û¿ÉÒÔË³Ó¦TomcatµÄÄÚ²¿±àÂë¾Í¿ÉÒÔ´«µÝÖÐÎÄ×Ö·û´®ÁË¡£
¡¡¡¡±ÈÈçÒ»¸öÒ³Ãæ¼äµÄÄÚ²¿ÖØ¶¨Ïò:
¡¡¡¡£¼?xml:namespace prefix = jsp /£¾£¼jsp:forward page=&quot;index.jsp&quot;£¾
¡¡¡¡£¼jsp:param name=&quot;name&quot; value=&quot;£¼%=new String(&quot; % ÖÐÎÄ²ÎÊý?.getBytes(?UTF-8?),?ISO-8859-1?)£¾&quot; /&gt;
¡¡¡¡£¼/jsp:forward£¾
¡¡¡¡¶øÔÚÄ¿µÄÒ³Ãæ½ÓÊÕ²ÎÊýµÄÊ±ºòÒ²ÐèÒªÔÙ´Î´ÓISO-8859-1±àÂë×ª»»µ½UTF-8±àÂë¡£ÕâÑù¾ÍÊµÏÖÁËÔÚÒ³ÃæÖ®¼ä´«µÝÖÐÎÄ²ÎÊý¡£
]]></description>
		</item>
		<item>
			<title>À§ÈÅJSPµÄÒ»Ð©ÎÊÌâÓë½â¾ö·½·¨</title>
			<link>http://www.kingmx.com/article.php?id=12321</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
¡¡¡¡Èç½ñÃ¿Ò»¸öÊ¹ÓÃservletsµÄ¿ª·¢Õß¶¼ÖªµÀJSP£¬Ò»ÖÖÓÉSun¹«Ë¾·¢Ã÷²¢»¨·Ñ´óÁ¿¾«Á¦¼ÓÒÔÍÆÐÐ²¢½¨¹¹ÔÚservlet¼¼ÊõÖ®ÉÏµÄweb¼¼Êõ¡£JSP½«servletÖÐµÄhtml´úÂëÍÑÀëÁË³öÀ´£¬´Ó¶ø¿ÉÒÔ¼ÓËÙwebÓ¦ÓÃ¿ª·¢ºÍÒ³ÃæÎ¬»¤¡£Êµ¼ÊÉÏ£¬ÓÉSun·¢²¼µÄ¹Ù·½"Ó¦ÓÃ¿ª·¢Ä£ÐÍ"ÎÄµµÉÏËµµÃ¸üÔ¶£º "JSP¼¼ÊõÓ¦¸Ã±»ÊÓÎª±ê×¼£¬¶øservletsÔÚ¶àÊýÇé¿öÏÂ¿ÉÊÓÎªÒ»ÖÖ²¹³ä¡£" ( Section 1.9, 1999/12/15ÌýÈ¡Òâ¼û°æ )¡£ 
¡¡¡¡±¾ÎÄµÄÄ¿µÄÔÚÓÚÌýÈ¡¶Ô¸ÃÉêÃ÷µÄºÏÀíÐÔµÄÆÀ¹À -- Í¨¹ý±È½ÏJSPºÍÁíÒ»Ïî»ùÓÚservletsµÄ¼¼Êõ£º template engines£¨Ä£°åÒýÇæ£©¡£ 
¡¡¡¡Ö±½ÓÊ¹ÓÃServletsµÄÎÊÌâ 
¡¡¡¡Æð³õ£¬servlets±»·¢Ã÷£¬Õû¸öÊÀ½ç¶¼¿´µ½ÁËËüµÄÓÅÔ½¡£»ùÓÚservletµÄ¶¯Ì¬ÍøÒ³¿ÉÒÔ±»¿ìËÙÖ´ÐÐ£¬¿ÉÒÔÔÚ¶à¸ö·þÎñÆ÷Ö®¼äÇáÒ××ªÒÆ£¬ ²¢ÇÒ¿ÉÒÔºÍºóÌ¨Êý¾Ý¿âÍêÃÀµØ¼¯³É¡£ Servlets±»¹ã·º½ÓÊÜ³ÉÎªÒ»ÖÖweb·þÎñÆ÷¶ËµÄÊ×Ñ¡Æ½Ì¨¡£ 
µ«ÊÇ£¬Í¨³£Í¨¹ý¼òµ¥·½Ê½¼´¿ÉÊµÏÖµÄhtml´úÂëÏÖÔÚÈ´ÒªÈÃ³ÌÐòÔ±Í¨¹ý out.println()µ÷ÓÃÃ¿Ò»ÐÐHTMLÐÐ£¬ÕâÔÚÊµ¼ÊµÄ servletÓ¦ÓÃÖÐ³ÉÎªÁËÒ»¸öÑÏÖØÎÊÌâ¡£ HTMLÄÚÈÝ²»µÃ²»Í¨¹ý´úÂëÀ´ÊµÏÖ, ¶ÔÓÚ´óµÄHTMLÒ³À´Ëµ²»à´ÊÇÒ»Ïî·±ÖØ·ÑÊ±µÄ¹¤×÷¡£ÁíÍâ£¬¸ºÔðÍøÒ³ÄÚÈÝµÄÈËÔ±²»µÃ²»Çë¿ª·¢ÈËÔ±À´½øÐÐËùÓÐµÄ¸üÐÂ¡£Îª´Ë£¬ÈËÃÇÑ°ÇóÕâÒ»ÖÖ¸üºÃµÄ½â¾ö·½Ê½¡£ 
¡¡¡¡JSPµ½£¡ 
¡¡¡¡JSP 0.90³öÏÖÁË¡£ÔÚÕâÖÖ¼¼ÊõÖÐÄã¿ÉÒÔ½«Java´úÂëÇ¶Èëµ½HTMLÎÄ¼þ£¬·þÎñÆ÷½«×Ô¶¯ÎªÒ³Ãæ´´½¨Ò»¸ö servlet¡£ JSP±»ÈÏÎªÊÇÒ»ÖÖÐ´servletµÄ¼òÒ×·½Ê½¡£ËùÓÐHTML¿ÉÒÔÖ±½ÓµÃµ½¶ø²»±ØÍ¨¹ýout.println()µ÷ÓÃ£¬¶ø¸ºÔðÒ³ÃæÄÚÈÝµÄÈËÔ±¿ÉÒÔÖ±½ÓÐÞ¸ÄHTML¶ø²»±ØÃ°ÆÆ»µJava´úÂëµÄ·çÏÕ¡£ 
¡¡¡¡µ«ÊÇ£¬ÈÃÒ³ÃæÃÀÊõÉè¼ÆÊ¦ºÍ¿ª·¢ÈËÔ±ÔÚÍ¬Ò»ÎÄ¼þÉÏ¹¤×÷²¢²»ÀíÏë£¬ÈÃJavaÇ¶ÈëHTML±»Ö¤Ã÷ÊÇ¾ÍÏó½«HTML Ç¶ÈëJavaÒ»ÑùÁîÈËÞÏÞÎ¡£¶ÁÈ¡Ò»¶ÑºÜÂÒµÄ´úÂëÈÔÈ»ÊÇÒ»¼þÀ§ÄÑµÄÊÂÇé¡£ 
¡¡¡¡ÓÚÊÇ£¬ÈËÃÇÔÚÊ¹ÓÃjsp·½Ãæ±äµÃ³ÉÊì£¬¸ü¶àµØÊ¹ÓÃÁËJavaBeans¡£ Beans°üº¬ÁËjspËùÐèµÄÒµÎñÂß¼©´úÂë¡£JSPÖÐµÄ´ó¶àÊý´úÂë¶¼¿ÉÒÔÈ¡³öÀ´·Åµ½beanÖÐÈ¥£¬¶øÖ»ÁôÏÂ¼«ÉÙµÄ±ê¼ÇÓÃÓÚµ÷ÓÃbean¡£ 
¡¡¡¡×î½ü£¬ÈËÃÇ¿ªÊ¼ÈÏÎªÕâÖÖ·½Ê½ÏÂµÄJSPÒ³ÃæÕæµÄºÜÏóÊÇÊÓÍ¼£¨view£©¡£ËüÃÇ³ÉÎªÒ»¸öÓÃÓÚÏÔÊ¾¿Í»§¶ËÇëÇóµÄ½á¹ûµÄ×é¼þ¡£ÓÚÊÇÈËÃÇ»áÏë£¬ÎªÊ²Ã´²»Ö±½Ó¶Ôview·¢ËÍÇëÇóÄØ£¿ Ä¿±êviewÈç¹û¶Ô¸ÃÇëÇó²»ºÏÊÊÓÖ½«ÈçºÎ£¿ Ëµµ½µ×£¬ºÜ¶àµÄÇëÇóÓÐ¶àÖÖ¿ÉÄÜÀ´È¡µÃ½á¹ûviewÊÓÍ¼¡£ÀýÈç£¬Í¬Ò»ÇëÇó¿ÉÄÜ²úÉú³É¹¦µÄÒ³Ãæ£¬Êý¾Ý¿âÀýÍâ³ö´í±¨¸æ£¬»òÕßÊÇÈ±ÉÙ²ÎÊýµÄ³ö´í±¨¸æ¡£Í¬Ò»ÇëÇó¿ÉÄÜ²úÉúÒ»¸öÓ¢ÎÄÒ³ÃæÒ²¿ÉÄÜÊÇÎ÷°àÑÀÎÄÒ³Ãæ£¬ÕâÈ¡¾öÓÚ¿Í»§¶ËµÄlocale¡£ÎªÊ²Ã´¿Í»§¶Ë±ØÐëÖ±½Ó½«ÇëÇó·¢ËÍ¸øview?ÎªÊ²Ã´¿Í»§¶Ë²»Ó¦¸Ã½«ÇëÇó·¢ËÍ¸øÒ»Ð©Í¨ÓÃµÄ·þÎñÆ÷×é¼þ²¢ÈÃ·þÎñÆ÷À´¾ö¶¨JSP viewµÄ·µ»Ø? 
¡¡¡¡ÕâÊ¹ºÜ¶àÈË½ÓÊÜÁËÒÑ±»³ÆÎª"Model 2"µÄÉè¼Æ, ÕâÊÇÔÚJSP 0.92ÖÐ¶¨ÒåµÄ»ùÓÚmodel-view-controllerµÄÄ£ÐÍ¡£ÔÚÕâÖÖÉè¼ÆÖÐ£¬ÇëÇó±»·¢ËÍµ½Ò»¸öservlet¿ØÖÆÆ÷£¬ËüÖ´ÐÐÁËÉÌÒµÂß¼©²¢²úÉúÒ»¸öÏà½üµÄÊý¾Ý"model"À´ÓÃÓÚÏÔÊ¾¡£ÕâÒ»Êý¾ÝËæºóÍ¨¹ýÄÚ²¿ËÍµ½Ò»¸öJSP "view"À´½øÐÐÏÔÊ¾£¬ÕâÑù¿´ÆðÀ´JSPÒ³¾ÍÏóÊÇÒ»¸öÆÕÍ¨µÄÇ¶ÈëµÄJavaBean¡£ ¿ÉÒÔ¸ù¾Ý¸ºÔð¿ØÖÆµÄservletµÄÄÚ²¿Âß¼­À´Ñ¡ÔñÊÊµ±µÄJSPÒ³Ãæ½øÐÐÏÔÊ¾¡£ÕâÑù£¬JSPÎÄ¼þ³ÉÎªÁËÒ»¸öÆ¯ÁÁµÄtemplate view¡£Õâ¾ÍÊÇÁíÒ»ÖÖ·¢Õ¹£¬²¢±»ÁíÍâÒ»Ð©¿ª·¢ÕßËùÍÆ³çÖÁ½ñ. 
¡¡¡¡½øÈëTemplate Engines 
¡¡¡¡Ê¹ÓÃtemplate engineÀ´´úÌæÍ¨³£Ä¿µÄµÄJSP, ½ÓÏÂÈ¥µÄÉè¼Æ½«±äµÃ¼òµ¥£¬Óï·¨¸ü¼òµ¥£¬³ö´íÐÅÏ¢¸üÒ×¶Á£¬¹¤¾ßÒ²¸üÓÃ»§»¯¡£ Ò»Ð©¹«Ë¾ÒÑ¾­×öÁËÕâÑùµÄÒýÇæ£¬×îÖøÃûµÄ¿ÉÄÜÊÇWebMacro (http://webmacro.org, from Semiotek)£¬ËûÃÇµÄÒýÇæÊÇÃâ·ÑµÄ¡£ 
¡¡¡¡¿ª·¢ÕßÓ¦¸ÃÃ÷ÁË£¬Ñ¡¶¨Ò»¸ötemplate engineÀ´È¡´úJSPÌá¹©ÁËÕâÃ´Ò»Ð©¼¼ÊõÓÅÊÆ£¬ÕâÒ²ÕýÊÇjspµÄÒ»Ð©²»×ãÖ®´¦£º 
¡¡¡¡ÎÊÌâ #1: Java´úÂëÌ«Ä£°å»¯ÁË 
¡¡¡¡ËäÈ»±»ÈÏÎªÊÇ²»ºÃµÄÉè¼Æ£¬JSPÈÔÊÔÍ¼½«Java´úÂë¼ÓÈëwebÒ³Ãæ¡£ÕâÓÐÐ©ÏóÊÇJavaÔø¾­×öµÄ£¬¼´¶ÔC++µÄ¼ò»¯ÐÞ¸Ä£¬template enginesÒ²Í¨¹ý½«jspÖÐµÄ½ÏµÍ²ãµÄÔ´ÂëÒÆÈ¥À´Ê¹Ö®¼ò»¯¡£Template enginesÊµÐÐÁË¸üºÃµÄÉè¼Æ¡£ 
¡¡¡¡ÎÊÌâ #2: ÒªÇóJava´úÂë 
¡¡¡¡ÔÚJSPÒ³ÖÐÒªÇóÐ´Ò»Ð©Java´úÂë¡£ÀýÈç£¬¼ÙÉèÄ³Ò³Òª¾ö¶¨µ±Ç°webÓ¦ÓÃÖÐ¸ùµÄÉÏÏÂÎÄ´Ó¶øµ¼ÏòÆäÖ÷Ò³£¬ 
ÔÚJSPÖÐ×îºÃÊ¹ÓÃÈçÏÂJava´úÂë£º 
¡¡¡¡£¼a href="£¼%= request.getContextPath() %£¾/index.html"£¾Home page£¼/a£¾ 
¡¡
¡¡¡¡Äã¿ÉÒÔÊÔÍ¼±ÜÃâ Java´úÂë£¬¶øÊ¹ÓÃ £¼jsp:getProperty£¾ ±ê¼Çµ«Õâ½«¸øÄãÁùÏÂÄÑÒÔÔÄ¶ÁµÄ×Ö´®£º 
¡¡¡¡£¼a href="£¼jsp:getProperty name="request" 
¡¡¡¡property="contextPath"/£¾/index.html"£¾HomePage£¼/a£¾ 
¡¡¡¡Ê¹ÓÃtemplate engineÔòÃ»ÓÐJava´úÂëºÍÄÑ¿´µÄÓï·¨¡£ÕâÀïÊÇÍ¬ÑùÒªÇóÏÂÔÚWebMacroÖÐµÄÐ´·¨£º 
¡¡¡¡£¼a href=".ContextPath;/index.html"£¾Home page£¼/a£¾ 
¡¡¡¡ÔÚWebMacroÖÐ, ContextPath ×÷Îª template enginesÊ¹ÓÃÁËÆäËüµÄÓï·¨ÀàÐÍ¡£ 
¡¡¡¡
¡¡¡¡ÔÙ¿´Áí Ò»¸öÀý×Ó£¬¼ÙÉèÒ»¸ö¸ß¼¶µÄ"view"ÐèÒªÉè¶¨Ò»¸öcookieÀ´¼ÇÂ¼ÓÃ»§È±Ê¡µÄÑÕÉ«ÅäÖÃ -- ÕâÖÖÈÎÎñ¿´ÆðÀ´´ó¸ÅÖ»ÄÜÓÉview¶ø²»ÊÇservlet¿ØÖÆÆ÷À´Íê³É¡£ÔÚJSPÖÐÒªÓÐÕâÑùµÄJava´úÂë£º 
¡¡¡¡£¼% Cookie c = new Cookie("colorscheme", "blue"); response.addCookie(c); %£¾ 
¡¡¡¡ÔÚWebMacroÖÐÔòÃ»ÓÐJava´úÂë£º 
¡¡¡¡#set .colorscheme = "blue" 
¡¡¡¡×÷Îª×îºóÒ»¸öÀë×Ó£¬¼ÙÈçÓÖÒªÖØÐÂÕÒ»ØÔ­À´µÄcookieÖÐµÄÑÕÉ«ÅäÖÃ¡£¶ÔÓÚJSP£¬ÎÒÃÇ¿ÉÒÔÈÏÎªÒ²ÓÐÒ»¸öÏàÓ¦µÄ¹¤¾ßÀàÀ´Ìá¹©°ïÖú£¬ÒòÎªÓÃgetCookies()Ö±½Ó×öÕâÑùµÍ²ãµÄ»á±äµÃ¿ÉÐ¦¶øÇÒÀ§ÄÑ¡£ÔÚJSPÖÐ£º 
¡¡¡¡£¼% String colorscheme = ServletUtils.getCookie(request, "colorscheme"); %£¾ 
¡¡¡¡ÔÚWebMacroÖÐÃ»ÓÐ¶Ô¹¤¾ßÀàµÄÐèÒª£¬Í¨³£ÊÇ£º.colorscheme.Value £®¶ÔÐ´jspµÄÍ¼ÐÎÒÕÊõÊ¦£¬ÓÖÊÇÄÄÒ»ÖÖÓï·¨¸üÈÝÒ×Ñ§Ï°ÄØ£¿ 
¡¡¡¡JSP 1.1 ÒýÈëÁË×Ô¶¨Òå±ê¼Ç£¨custom tags£©ÔÊÐíÈÎÒâµÄºÍHTMLÏàËÆµÄ±ê¼ÇÔÚJSPÒ³ÃæÖÐÔÚºóÌ¨Ö´ÐÐJava´úÂë£¬Õâ½«¾ßÓÐÒ»¶¨µÄ¼ÛÖµ£¬µ«Ç°ÌáÊÇÒªÓÐÒ»¸ö¹ã·ºÖªÏþµÄ£¬È«¹¦ÄÜµÄ£¬¿ÉÒÔÃâ·ÑµÃµ½µÄ£¬±ê×¼»¯µÄ±ê¼Ç¿â¡£Ä¿Ç°»¹Ã»ÓÐ³öÏÖÕâÑùµÄ±ê¼Ç¿â¡£ 
¡¡¡¡ÎÊÌâ #3: ¼òµ¥¹¤×÷ÈÔÈ»ºÜÀÛÈË 
¡¡¡¡¼´Ê¹ÊÇºÜ¼òµ¥µÄ¹¤×÷£¬ÀýÈç°üº¬ headerºÍ footer£¬ÔÚJSPÖÐÈÔÈ»ºÜºÜÀ§ÄÑ¡£ ¼ÙÉèÓÐÒ»¸ö "header"ºÍÒ»¸ö "footer"Ä£°åÒª°üº¬µ½ËùÓÐÒ³Ãæ£¬¶øÃ¿Ò»¸öÄ£°åÒªÔÚcontentÖÐ°üº¬µ±Ç°µÄÒ³±êÌâ¡£ 
ÔÚJSPÖÐ×î¼Ñ°ì·¨ÊÇ£º 
¡¡¡¡£¼% String title = "The Page Title"; %£¾ 
¡¡¡¡£¼%@ include file="/header.jsp" %£¾ 
¡¡¡¡...ÄãµÄÒ³ÃæÄÚÈÝ... 
¡¡¡¡£¼%@ include file="/footer.jsp" %£¾ 
¡¡¡¡Ò³ÃæÉè¼ÆÕßÒª¼Ç×¡²»ÄÜÒÅÂ©µÚÒ»ÐÐµÄ·ÖºÅ²¢Òª½«title¶¨ÒåÎªÒ»¸ö×Ö·û´®¡£´ËÍâ£¬ /header.jspºÍ/footer.jsp±ØÐëÔÚ¸ùÄ¿Â¼ÏÂ²¢ÇÒ±ØÐëÊÇ¿É´æÈ¡µÄÍêÕûÎÄ¼þ¡£ 
¡¡¡¡ÔÚWebMacroÖÐ°üº¬headersºÍfooters×öÆðÀ´±È½Ï¼òµ¥£º 
¡¡¡¡#set 24 = "The Page Title" 
¡¡¡¡#parse "header.wm" 
¡¡¡¡Your content here 
¡¡¡¡#parse "footer.wm" 
¡¡¡¡ÕâÀï¶ÔÉè¼ÆÕßÀ´ËµÃ»ÓÐÒªÀÎ¼ÇµÄ·ÖºÅ»ò¶ÔtitleµÄ¶¨Òå£¬ .wmÎÄ¼þ¿ÉÒÔ·ÅÔÚ¿É×Ô¶¨ÒåµÄËÑË÷Â·¾¶ÏÂ¡£ 
¡¡¡¡ÎÊÌâ #4: ºÜ´ÖµÄÑ­»· 
¡¡¡¡ÔÚJSPÖÐÑ­»·ºÜÀ§ÄÑ¡£ÕâÀïÊÇÓÃJSPÖØ¸´´òÓ¡³öÃ¿Ò»¸öISP¶ÔÏóÃû×Ö¡£ 
¡¡¡¡£¼% 
¡¡¡¡Enumeration e = list.elements(); 
¡¡¡¡while (e.hasMoreElements()) { 
¡¡¡¡out.print("The next name is "); 
¡¡¡¡out.println(((ISP)e.nextElement()).getName()); 
¡¡¡¡out.print("£¼br£¾"); 
¡¡¡¡} 
¡¡¡¡%£¾ 
¡¡¡¡Ò²ÐíÊ²Ã´Ê±ºò»áÓÐÓÃ»§×Ô¶¨Òå±ê¼ÇÀ´×öÕâÐ©Ñ­»·¡£¶Ô"if"Ò²ÊÇÈç´Ë¡£JSPÒ³¿ÉÄÜ¿´ÉÏÈ¥³ÉÁËºÜ¹Å¹ÖµÄjava´úÂë¡£¶øÍ¬Ê±£¬webmacroÑ­»·ºÜÆ¯ÁÁ£º 
¡¡¡¡#foreach in { 
¡¡¡¡The next name is .Name £¼br£¾ 
¡¡¡¡} 
¡¡¡¡Èç¹û±ØÒªµÄ»°£¬#foreachÖ¸Áî¿É±»×Ô¶¨ÒåµÄ #foreach-backwardsÖ¸ÁîºÜÈÝÒ×µØÈ¡´ú¡£ 
¡¡¡¡ÓÃjspµÄ»°ºÜ¿ÉÄÜ±äÕâÑù£º£¨ÕâÀïÊÇÒ»¸ö¿ÉÄÜµÄ £¼foreach£¾±ê¼Ç£© 
¡¡¡¡£¼foreach item="isp" list="isps"£¾ 
¡¡¡¡The next name is £¼jsp:getProperty name="isp" property="name"/£¾ £¼br£¾ 
¡¡¡¡£¼/foreach£¾ 
¡¡¡¡Éè¼ÆÕßµ±È»µØ»ØÑ¡ÔñÇ°Õß¡£ 
¡¡¡¡ÎÊÌâ #5: ÎÞÓÃµÄ³ö´íÐÅÏ¢ 
¡¡¡¡JSP³£ÓÐÒ»Ð©ÁîÈË¾ªÑÈµÄ³ö´íÐÅÏ¢¡£ÕâÊÇÒòÎªÒ³ÃæÊ×ÏÈ±»×ª»»³ÉÎªÒ»¸öservletÈ»ºó²Å½øÐÐ±àÒë¡£ºÃµÄJSP ¹¤¾ß¿ÉÒÔÏà¶ÔÔö¼ÓÕÒµ½³ö´íÎ»ÖÃµÄ¿ÉÄÜÐÔ£¬µ«¼´Ê¹ÊÇ×îºÃµÄ¹¤¾ßÒ²ÎÞ·¨Ê¹ËùÓÐ³ö´íÐÅÏ¢¶¼ÄÜÈÝÒ×µØ±»¶Á¶®¡£ÓÉÓÚ×ª»¯µÄ¹ý³Ì£¬Ò»Ð©´íÎó¶Ô¹¤¾ßÀ´Ëµ¿ÉÄÜ¸ù±¾²»¿ÉÄÜ±»Ê¶±ð¡£ 
ÀýÈç£¬¼ÙÉèJSPÒ³ÃæÐèÒª½¨Á¢Ò»¸ö¶ÔËùÓÐÒ³Í¨ÓÃµÄ±êÌâ¡£ÒÔÏÂ´úÂë²¢Ã»ÓÐ´í£º 
¡¡¡¡£¼% static String title = "Global title"; %£¾ 
¡¡¡¡µ«Tomcat»áÌá¹©ÒÔÏÂ³ö´íÐÅÏ¢£º 
¡¡¡¡work/%3A8080%2F/JC_0002ejspJC_jsp_1.java:70: Statement expected. 
¡¡¡¡static int count = 0; 
¡¡¡¡^ 
¡¡¡¡´ËÐÅÏ¢ÈÏÎªÒÔÉÏ½Å±¾±»·ÅÈë _jspService()·½·¨¶ø¾²Ì¬±äÁ¿²»ÔÊÐí·ÅÈë·½·¨ÖÐ¡£¸ÃÓï·¨Ó¦¸ÃÊÇ £¼%! %£¾¡£Ò³ÃæÉè¼ÆÕßºÜÄÑ¶Á¶®ÕâÐ©³ö´íÐÅÏ¢¡£¼´Ê¹×îºÃµÄÆ½Ì¨ÔÚÕâ·½ÃæÒ²×öµÃºÜ²»¹»¡£¼´Ê¹ËùÓÐ Java´úÂë¶¼´ÓÒ³ÖÐÒÆ³öÒ²ÎÞ·¨½â¾öÎÊÌâ¡£ÁíÍâ£¬ÒÔÏÂ±í´ïÊ½ÓÐÊ²Ã´´í£¿ 
¡¡¡¡£¼% count %£¾ 
¡¡¡¡tomcat¸ø³ö£º 
¡¡¡¡work/8080/_0002ftest_0002ejsptest_jsp_0.java:56: Class count not found in 
¡¡¡¡type declaration. 
¡¡¡¡count 
¡¡¡¡^ 
¡¡¡¡work/8080/_0002ftest_0002ejsptest_jsp_0.java:59: Invalid declaration. 
¡¡¡¡out.write("/r/n"); 
¡¡¡¡^ 
¡¡¡¡»»¾ä»°Ëµ£¬Ö»ÊÇÒÅÊ§ÁËÒ»¸ö±ê¼Ç¶øÒÑ¡£Ó¦¸ÃÊÇ £¼%= count %£¾¡£ 
¡¡¡¡ÓÉÓÚtemplate engine¿ÉÒÔÔÚtemplateÎÄ¼þÖÐÖ±½Ó²úÉú¶øÃ»ÓÐÈÎºÎÏ·¾çÐÔµÄÏò´úÂë×ª»¯£¬ËùÒÔ¿ÉÒÔ·Ç³£ÈÝÒ×µØ¸ø³öÊÊµ±µÄ³ö´í±¨¸æ¡£ ÒÀ´ÎÀàÍÆ£¬µ±cÓïÑÔµÄÃüÁî±»´òÈëUnix shellµÄÃüÁîÐÐ£¬ Äã²¢²»Ï£Íûshell »áÉú³ÉÒ»¸öC³ÌÐòÀ´ÔËÐÐÕâ¸öÃüÁî£¬¶øÖ»ÊÇÐèÒªshell¼òµ¥µØ½âÊÍÃüÁî²¢¼ÓÒÔÖ´ÐÐ£¬ÈçÓÐ´íÎóÒ²Ö±½Ó¸ø³ö¡£ 
¡¡¡¡ÎÊÌâ #6: ÐèÒªÒ»¸ö±àÒëÆ÷ 
¡¡¡¡JSPÐèÒªÒ»¸öÖÃ·ÅÔÚwebserverÖÐµÄ±àÒëÆ÷¡£ÓÉÓÚSun¾Ü¾ø·ÅÆú°üº¬ÁËËûÃÇµÄjavac±àÒëÆ÷µÄtools.jar¿â£¬ ÕâÆäÖÐ¾Í±äµÃÓÐÎÊÌâÁË¡£Web·þÎñÆ÷¿ÉÒÔ°üº¬½øÒ»¸öµÚÈý·½µÄ±àÒëÆ÷ÈçibmµÄ jikes¡£µ«ÕâÑùµÄ±àÒëÆ÷²¢²»ÄÜÔÚËùÓÐÆ½Ì¨ÉÏË³Àû¹¤×÷(ÓÃ C++Ð´³ÉµÄ) Ò²²»ÀûÓÚ½¨Á¢´¿Java µÄweb·þÎñÆ÷¡£ JSPÓÐÒ»¸öÔ¤±àÒëÑ¡Ïî¿ÉÒÔÆðµ½Ò»¶¨×÷ÓÃ£¬¾¡¹Ü²¢²»ÍêÃÀ¡£ 
¡¡¡¡ÎÊÌâ #7: ¿Õ¼äµÄÀË·Ñ 
¡¡¡¡JSPÏûºÄÁË¶îÍâµÄÄÚ´æºÍÓ²ÅÌ¿Õ¼ä¡£¶Ô·þÎñÆ÷ÉÏÃ¿30KµÄJSPÎÄ¼þ£¬±ØÐëÒªÓÐÏàÓ¦µÄ´óÓÚ30KµÄÀàÎÄ¼þ²úÉú¡£Êµ¼ÊÉÏÊ¹µÃÓ²ÅÌ¿Õ¼ä¼Ó±¶¡£¿¼ÂÇµ½JSPÎÄ¼þËæÊ±¿ÉÒÔºÜÈÝÒ×µØÍ¨¹ý £¼%@ include£¾°üº¬Ò»¸ö´óµÄÊý¾ÝÎÄ¼þ£¬ÕâÑùµÄ¹Ø×¢ÓÐ×ÅºÜÏÖÊµµÄÒâÒå¡£Í¬Ê±£¬Ã¿Ò»¸öJSPµÄÀàÎÄ¼þÊý¾Ý±ØÐë¼ÓÔØµ½·þÎñÆ÷µÄÄÚ´æÖÐ£¬ÕâÒâÎ¶×Å·þÎñÆ÷µÄÄÚ´æ±ØÐëÓÀÔ¶µØ½«Õû¸öJSPÎÄµµÊ÷±£´æÏÂÈ¥¡£ÉÙÊýÒ»Ð©JVMÓÐÄÜÁ¦½«ÀàÎÄ¼þÊý¾Ý´ÓÄÚ´æÖÐÒÆÈ¥£»µ«ÊÇ£¬³ÌÐòÔ±Í¨³£ÎÞ·¨¿ØÖÆÕâÑùµÄ¹æÔòÀ´ÖØÐÂÉêÃ÷£¬¶øÇÒ¶Ô´óµÄÕ¾µãÀ´ËµÖØÐÂÉêÃ÷¿ÉÄÜ²»ÊÇºÜÓÐÐ§¡£¶Ôtemplate enginesÓÉÓÚÃ»ÓÐ²úÉúµÚ¶þ¸öÎÄ¼þ£¬ËùÒÔ½ÚÊ¡ÁË¿Õ¼ä¡£Template engines»¹Îª³ÌÐòÔ±Ìá¹©¶ÔtemplatesÔÚÄÚ´æÖÐ½øÐÐ»º´æµÄÍêÈ«¿ØÖÆ¡£ 
¡¡¡¡Ê¹ÓÃtemplate engineÒ²ÓÐÒ»Ð©ÎÊÌâ£º 
¡¡¡¡TemplateµÄÎÊÌâ #1: Ã»ÓÐÑÏ¸ñ¶¨Òå 
¡¡¡¡template engine¸ÃÈçºÎ¹¤×÷²¢Ã»ÓÐÑÏ¸ñ¶¨Òå¡£¿ÉÊÇ£¬µ«Ïà¶ÔjspÀ´Ëµ£¬ÆäÊµÕâ²¢²»ºÜÖØÒª£¬ºÍ JSP²»Í¬µÄÊÇ£¬template engines¶Ôweb·þÎñÆ÷Ã»ÓÐÈÎºÎÌØÊâÒªÇó -- ÈÎºÎÖ§³ÖservletµÄ·þÎñÆ÷¶¼¿ÉÒÔÖ§³Ötemplate engines (°üÀ¨API 2.0·þÎñÆ÷ÈçApache/JServ£¬ËüÃÇ²¢²»ÄÜÍêÈ«Ö§³Ö JSP)! Èç¹ûÎª×îºÃµÄtemplate engineÉè¼ÆÌá¹©½¡¿µµÄ¾ºÕù±¾¿ÉÒÔÒýÆðÒ»³¡Ò«ÑÛµÄ¸ïÐÂ£¬ÌØ±ðÊÇÓÐ¿ª·ÅÔ´ÂëµÄ´Ù½ø£¬£¨¿ÉÒÔÈÃË¼ÏëÏà»¥ÍÆ¶¯ºÍ´Ù½ø£©£¬ÄÇÃ´½ñÌìµÄWebMacro¾Í»áÏóPerlÒ»Ñù£¬Ã»ÓÐÑÏ¸ñ¶¨Òåµ«¹«¿ªÔ´Âë×éÖ¯µÄÍÆ¶¯¾ÍÊÇËüµÄ±ê×¼¡£ 
¡¡¡¡TemplateµÄÎÊÌâ #2: Ã»ÓÐ»ñµÃ¹«ÈÏ 
¡¡¡¡Template engines²¢Î´±»¹ã·ºÖªÏþ¡£JSPÒÑ¾­Õ¼¾ÝÁË¼«´óµÄÉÌÒµÊÐ³¡£¬²¢ÇÒÉîÈëÈËÐÄ¡£¶øÊ¹ÓÃg template enginesÖ»ÄÜÊÇÒ»ÖÖÎ´±»ÁË½âµÄÌæ´ú¼¼Êõ¡£ 
¡¡¡¡TemplateµÄÎÊÌâ #3: ÉÐÎ´µ÷ÅäºÃ 
¡¡¡¡Template engines»¹Ã»ÓÐ±»¸ß¶ÈµØµ÷ÅäºÃ¡£Ã»ÓÐ¶Ôtemplate engine ºÍJSPÁ½Õß½øÐÐÐÔÄÜ²âÊÔºÍ±È½Ï¡£ÀíÂÛÉÏËµÒ»¸öµ÷ÅäÍêºÃµÄtemplate engineÊµÏÖÓ¦¸ÃºÍÒ»¸öµ÷ÅäºÃµÄJSPÏàÆ¥Åä£»µ«ÊÇ£¬¿¼ÂÇµ½µÚÈý·½ÎªjspÒÑ¾­×÷³öÁËÕâÃ´ÉîÔ¶µÄÍÆ¶¯£¬½á¹ûÖ»ÓÐjsp±»ºÜºÃµØµ÷ÅäºÃÁË¡£ 
¡¡¡¡JSPµÄ½ÇÉ« 
¡¡¡¡µ±È»µØ£¬JSPÔÚ½«À´±ØÈ»»áÓÐÆäµØÎ»¡£¼´Ê¹´ÓÃû³ÆÉÏÒ²¿ÉÒÔ¿´³öJSPºÍASPµÄÏàËÆÐÔ£¬ËüÃÇÖ»ÓÐÒ»¸ö×ÖÄ¸µÄ²î±ð¡£ËùÒÔÈç¹ûÒªÈÃÊ¹ÓÃaspµÄÈËÃÇ×ªÏòjava,·Ç³£ÏàËÆµÄjsp»·¾³½«¶Ô´ËÆðµ½ºÜ´óµÄÍÆ¶¯×÷ÓÃ£¬ºÍasp±£³ÖÕâÖÖ¶ÔÓ¦¹ØÏµËùÄÜÆðµ½µÄ×÷ÓÃÓ¦¸ÃÒ²ÊÇ±»ÍÆ³öjspµÄÉè¼ÆÕßÖØµã¿¼ÂÇµ½µÄ¡£ 
È»¶øÕâÀïÏëÒªÇ¿µ÷µÄÒ»µãÊÇ£ºÓÐÀûÓÚ×ªÈëÐÂ»·¾³µÄ¹¤×÷Õß£¬ÒÔ¼°Êµ¼ÊÉÏÊÇ·ñÊÇÊ¹ÓÃ¸Ã»·¾³µÄ×î¼Ñ·½Ê½£¬ÕâÁ½ÕßÊÇÓÐºÜ´ó²»Í¬µÄ¡£ 
¡¡¡¡JSPÈÕÒæÏÔÊ¾³öËüÕý³ÉÎª×îÖØÒªµÄjava¼¼ÊõÖ®Ò»£¬ ËüÈÃÈËÃÇÀë¿ªASPµÄÊÀ½ç -- ÓÉ´Ë£¬Sun½«Ö§³ÖÕâÒ»Ç¿ÓÐÁ¦µÄÉÌÒµcase, JavaÏà¹Ø¼¼ÊõÖ§³ÖÕßÒ²½«¸øÓè¸ü´óÁ¦µÄÖ§³Ö¡£ 
¡¡¡¡¿ÉÊÇ£¬Õâ²¢·ÇjavaÆ½Ì¨µÄ×î¼Ñ½â¾ö·½°¸¡£Õâ½«Ê¹java½â¾ö·½°¸±äµÃºÃÏóÊÇÃ»ÓÐjavaµÄ½â¾ö·½°¸ÁË¡£
]]></description>
		</item>
		<item>
			<title>JSP¶¯Ì¬Êä³öExcel¼°ÖÐÎÄÂÒÂëµÄ½â¾ö</title>
			<link>http://www.kingmx.com/article.php?id=12322</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
¡¡¡¡×î½üÔÚÍøÉÏ¿´µ½Ò»¸öÓÃjavaÀ´²Ù×ÝexcelµÄopen source,ÔÚweblogicÉÏÊÔÓÃÁËÒ»ÏÂ,¾õµÃºÜ²»´í,ÌØ´ËÏò´ó¼ÒÍÆ¼öÒ»ÏÂ¡£
¡¡¡¡Ê×ÏÈÈ¥http://www.andykhan.com/jexcelapi/index.htmlÏÂÔØ×îÐÂµÄJExcelApi,°Ñjxl.jarÖÃÓÚÄãµÄclasspathÖÐ¡£
¡¡¡¡Ð´Ò»¸öjavaBean,ÀûÓÃJExcelApiÀ´¶¯Ì¬Éú³ÉexcelÎÄµµ£¬ÎÒÕâÀïÐ´Ò»¸ö×î¼òµ¥µÄ£¬Ê¾ÒâÐÔµÄ¡£¸´ÔÓµÄÄã¿ÉÄÜ»¹Òª²éÑ¯Êý¾Ý¿âÊ²Ã´µÄ¡£
///////////////////////////Test.java///////////////////////////////////////////
package com.jagie.test;
import java.io.*;
import jxl.*;
import jxl.write.*;
import jxl.format.*;
import java.util.*;
import java.awt.Color;
public class Test{
¡¡public static void writeExcel(OutputStream os) throws Exception {
¡¡¡¡jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
¡¡¡¡jxl.write.WritableSheet ws = wwb.createSheet("TestSheet1", 0);
¡¡¡¡jxl.write.Label labelC = new jxl.write.Label(0, 0, "ÎÒ°®ÖÐ¹ú");
¡¡¡¡ws.addCell(labelC);
¡¡¡¡jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,20, WritableFont.BOLD, false,
¡¡¡¡UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.GREEN);
¡¡¡¡jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
¡¡¡¡wcfFC.setBackground(jxl.format.Colour.RED);
¡¡¡¡labelC = new jxl.write.Label(6, 0, "ÖÐ¹ú°®ÎÒ",wcfFC);
¡¡¡¡ws.addCell(labelC);
¡¡¡¡//Ð´ÈëExel¹¤×÷±í
¡¡¡¡wwb.write();
¡¡¡¡//¹Ø±ÕExcel¹¤×÷±¡¶ÔÏó
¡¡¡¡wwb.close();
¡¡}
¡¡//×îºÃÐ´Ò»¸öÕâÑùµÄmain·½·¨À´²âÊÔÒ»ÏÂÄãµÄÕâ¸öclassÊÇ·ñÐ´ºÃÁË¡£
¡¡public static void main(String[] args)throws Exception{
¡¡¡¡File f=new File("kk.xls");
¡¡¡¡f.createNewFile();
¡¡¡¡writeExcel(new FileOutputStream(f));
¡¡}
} 
¡¡¡¡Ð´Ò»¸öjsp,À´ÀûÓÃTestÕâ¸öjavabeanÊä³öexcelÎÄµµ¡£
///////////////////////////test_excel.jsp//////////////////////////
£¼%@page import="com.jagie.test.Test" %£¾
£¼%
¡¡response.reset();
¡¡response.setContentType("application/vnd.ms-excel");
¡¡Test.writeExcel(response.getOutputStream());
%£¾ 
¡¡¡¡ÕâÑù¾Í´ó¹¦¸æ³ÉÁË£¬ÄãÓÃie·ÃÎÊtest_excel.jsp¾ÍÄÜÔÚieÀïÃæ´ò¿ª¶¯Ì¬Éú³ÉµÄexcelÎÄµµÁË¡£Ò»µãÂÒÂëÒ²Ã»ÓÐ¡£
¡¡¡¡Ò²ÐíÓÐÈË»áÎÊ:response.reset();¿É²»¿ÉÒÔ²»ÒªÕâÒ»¾ä,ÎÒµÄ½¨ÒéÊÇÒ»¶¨ÒªÐ´£¬³ý·ÇÄãÄÜ±£Ö¤responseµÄbufferÀïÃæÃ»ÓÐ±ðµÄ¶«Î÷¡£
¡¡¡¡»¹ÓÐÈËÒ²Ðí»áÎÊ:ÎÒÔÚjsp¿ªÍ·¼ÓÉÏ£¼%@page contentType="application/vnd.ms-excel;charset=GBK" %£¾ÕâÒ»¾ä£¬È¥µôresponse.setContentType("application/vnd.ms-excel");ÐÐ²»ÐÐ?»Ø´ðÕâ¸öÎÊÌâºÜ¼òµ¥£¬¾ÍÊÇ²é¿´jsp·þÎñÆ÷±àÒëjspºóÉú³ÉµÄjava´úÂë£¬Èç¹û¸Ä³ÉÕâÑù£¬ÎÒµÄwelogic7±àÒëtest_excel.jspºóÉú³ÉµÄjavaÎÄ¼þµÄÊ¾ÒâÐÔ´úÂëÊÇÕâÑùµÄ:
public void _jspService(javax.servlet.http.HttpServletRequest request, 
javax.servlet.http.HttpServletResponse response) throws java.io.IOException, 
javax.servlet.ServletException { 
¡¡// declare and set well-known variables:
¡¡javax.servlet.ServletConfig config = getServletConfig();
¡¡javax.servlet.ServletContext application = config.getServletContext();
¡¡javax.servlet.jsp.tagext.Tag _activeTag = null;
¡¡// variables for Tag extension protocol
¡¡Object page = this;
¡¡javax.servlet.jsp.JspWriter out;
¡¡javax.servlet.jsp.PageContext pageContext =
¡¡javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(this, 
¡¡request, response, null, true, 8192, true);
¡¡response.setHeader("Content-Type", "application/vnd.ms-excel; charset=GBK");
¡¡out = pageContext.getOut();
¡¡JspWriter _originalOut = out;
¡¡javax.servlet.http.HttpSession session = request.getSession(true);
¡¡try { // error page try block
¡¡¡¡response.setContentType("application/vnd.ms-excel;charset=GBK");
¡¡¡¡out.print("/r/n/r/n/r/n/r/n");
¡¡¡¡out.print("/r/n");
¡¡¡¡//[ /test_excel.jsp; Line: 6]
¡¡¡¡response.reset(); //[ /test_excel.jsp; Line: 7]
¡¡¡¡//response.setContentType("application/vnd.ms-excel"); 
¡¡¡¡//[ /test_excel.jsp; Line: 8]
¡¡¡¡Test.writeExcel(response.getOutputStream()); //[ /test_excel.jsp; Line: 9]
¡¡¡¡} catch (Throwable __ee) {
¡¡¡¡¡¡while (out != null &amp;&amp; out != _originalOut) out = pageContext.popBody();
¡¡¡¡((weblogic.servlet.jsp.PageContextImpl)pageContext).handlePageException((Throwable)__ee);
¡¡}
¡¡//before final close brace...
} 
¡¡¡¡ºÜÃ÷ÏÔ£¬ÆÁ±Îresponse.setContentType("application/vnd.ms-excel");ºó£¬ÔÚTest.writeExcel(response.getOutputStream());Ö®Ç°£¬response.reset(); Ö®ºóÃ»ÓÐÉèÖÃresponse contenttypeµÄÕýÈ·ÀàÐÍ£¬µ±È»Êä³öÎªÂÒÂëÁË¡£¶øÕýÈ·Êä³öexcelµÄjspµÄ±àÒëºóÔ´ÂëÊÇÕâÑùµÄ:
public void _jspService(javax.servlet.http.HttpServletRequest request, 
javax.servlet.http.HttpServletResponse response) throws java.io.IOException,
javax.servlet.ServletException 
{ 
¡¡// declare and set well-known variables:
¡¡javax.servlet.ServletConfig config = getServletConfig();
¡¡javax.servlet.ServletContext application = config.getServletContext();
¡¡javax.servlet.jsp.tagext.Tag _activeTag = null;
¡¡// variables for Tag extension protocol
¡¡Object page = this;
¡¡javax.servlet.jsp.JspWriter out;
¡¡javax.servlet.jsp.PageContext pageContext =
¡¡¡¡javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);
¡¡out = pageContext.getOut();
¡¡JspWriter _originalOut = out;
¡¡javax.servlet.http.HttpSession session = request.getSession(true);
¡¡try { // error page try block
¡¡¡¡out.print("/r/n");
¡¡¡¡//[ /test_excel.jsp; Line: 2]
¡¡¡¡response.reset(); //[ /test_excel.jsp; Line: 3]
¡¡¡¡response.setContentType("application/vnd.ms-excel"); //[ /test_excel.jsp; Line: 4]
¡¡¡¡Test.writeExcel(response.getOutputStream()); //[ /test_excel.jsp; Line: 5]
¡¡} catch (Throwable __ee) {
¡¡¡¡while (out != null &amp;&amp; out != _originalOut) out = pageContext.popBody();
¡¡¡¡((weblogic.servlet.jsp.PageContextImpl)pageContext).handlePageException((Throwable)__ee);
¡¡}
¡¡ //before final close brace...
} 
¡¡¡¡´ó¼Ò¿ÉÒÔ¿´µ½ÔÚresponse.reset();Ö®ºó,Test.writeExcel(response.getOutputStream());Ö®Ç°ÕýÈ·µÄÉèÖÃÁËresponseµÄÊä³öÄÚÈÝ¡£ËùÒÔÊä³ö¾ÍÕý³£ÁË¡£
¡¡¡¡×îºó£¬Ï£ÍûÕâÆªÎÄÕÂÄÜ¶ÔÄãÓÐËùÆô·¢,ÈçÓÐ´íÎóÖ®´¦£¬¾´ÇëÅúÆÀÖ¸Õý!
]]></description>
		</item>
		<item>
			<title>Ò»¸öjavabeanÇáËÉÊµÏÖ¶ÔÊý¾Ý¿âµÄ¸÷ÖÖ²Ù×÷</title>
			<link>http://www.kingmx.com/article.php?id=12323</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
&nbsp; ±¾ÎÄÒÔÒ»¸öÍêÕûµÄJavaBeanÊý¾Ý¿â·ÃÎÊ³ÌÐò¼òÒªËµÃ÷jsp²Ù×÷Êý¾Ý¿â¡£
&nbsp; ±¾³ÌÐòÓÉ3¸öbean×é³É£¬ÆäÖÐWebConstantsÖÐ¶¨ÒåÈ«¾Ö±äÁ¿£¬ConnectionManager¹ÜÀíÊý¾Ý¿âÁ¬½Ó£¬MainBeanÀûÓÃWebConstantsºÍConnectionManager²Ù×÷Êý¾Ý¿â¡£
Ê×ÏÈ¶¨ÒåÈ«¾Ö±äÁ¿£¬ÈçÏÂ£º
package WebRelease;
public interface WebConstants
{
&nbsp; public static final String driverClass ="driverClass";
&nbsp; const userId is the user id to connect to database
&nbsp; public static final String userId ="comm";
&nbsp; const passWd is the user password to connect to database
&nbsp; public static final String passWd ="comm123";
&nbsp; const url is the url to connect to database
&nbsp; public static final String url="jdbc:oracle:thin:@10.2.0.1:1521:ORCL";
&nbsp; public static final String selectType ="select";
&nbsp; public static final String connection ="connection";
&nbsp; public static final String connError ="conError";
}
½Ó×Å´´½¨Ò»¸öÊý¾Ý¿âÁ¬½Ó¹ÜÀíbean£¬ÈçÏÂ£º
package WebRelease;
import java.io.*;
import java.beans.*;
import java.util.*;
import java.sql.*;
import WebRelease.WebConstants;
import oracle.jdbc.driver.*;
public class ConnectionManager implements WebConstants
{
&nbsp; private boolean debug = true;
&nbsp; protected Connection con;
&nbsp; protected DebugWriter writer;
&nbsp; PropertyChangeSupport pcs;
////////////////////////////////////////////////////////////////////////////////
&nbsp; public ConnectionManager()
&nbsp; {
&nbsp;&nbsp;&nbsp; pcs = new PropertyChangeSupport(this);
&nbsp;&nbsp;&nbsp; writer = new DebugWriter();
&nbsp; }
////////////////////////////////////////////////////////////////////////////////
&nbsp; public void setDebug(String b)
&nbsp; {
&nbsp;&nbsp;&nbsp; debug = b.equals("true");
&nbsp; }
////////////////////////////////////////////////////////////////////////////////
&nbsp; public void addPropertyChangeListener( PropertyChangeListener l)
&nbsp; {
&nbsp;&nbsp;&nbsp; pcs.addPropertyChangeListener(l);
&nbsp; }
////////////////////////////////////////////////////////////////////////////////
&nbsp; public void removePropertyChangeListener(PropertyChangeListener l)
&nbsp; {
&nbsp;&nbsp;&nbsp; pcs.removePropertyChangeListener(l);
&nbsp; }
////////////////////////////////////////////////////////////////////////////////
&nbsp; public void login()
&nbsp; {
&nbsp;&nbsp;&nbsp; try
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("oracle.jdbc.driver.OracleDriver");
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; catch(Exception e)
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(debug) {&nbsp; writer.writeDebug("Error setting driver:"+e.getMessage());}
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; try
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con = DriverManager.getConnection(url,userId,passWd);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pcs.firePropertyChange(connection,null,con);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(debug)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.writeDebug("connection succeded ! URL:"+url+"User:"+userId+
&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; "Pwd:"+passWd);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; catch(Exception e)
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pcs.firePropertyChange(connError,null,e);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(debug)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.writeDebug("connection failed ! URL:"+url+"User:"+userId+
&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; "Pwd:"+passWd);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
&nbsp; }
}
ÔÚMainBeanÖÐ£¬ÕìÌýÊý¾Ý¿âÊÇ·ñÁ¬½Ó£¬Èç¹ûÁ¬½ÓÔò¶ÔÊý¾Ý¿â½øÐÐ²Ù×÷£º
package WebRelease;
import java.io.*;
import java.beans.*;
import java.util.*;
import java.sql.*;
import WebRelease.*;
public class MainBean implements PropertyChangeListener ,WebConstants
{
&nbsp; private boolean debug = true;
&nbsp; protected Connection con;
&nbsp; protected DebugWriter writer;
////////////////////////////////////////////////////////////////////////////////
&nbsp; public MainBean()
&nbsp; {
&nbsp; writer = new DebugWriter();
&nbsp; }
////////////////////////////////////////////////////////////////////////////////
&nbsp; public void propertyChange(PropertyChangeEvent evt)
&nbsp; {
&nbsp; String prop = evt.getPropertyName();
&nbsp;//see if we got a connection
&nbsp; if(prop.equals(connection))
&nbsp;&nbsp;&nbsp; {//ok so update the local connection
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //make sure it really is a connection
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con = (Connection)evt.getNewValue();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.writeDebug("Error connecting to database"+e.getMessage());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
&nbsp; }
////////////////////////////////////////////////////////////////////////////////
&nbsp; public void setConnectionManager(ConnectionManager cm)
&nbsp; {
&nbsp;&nbsp;&nbsp; if(cm != null)
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // to remove the old listener from cm
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // to avoid confusion in the mainbean
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cm.removePropertyChangeListener(this);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cm.addPropertyChangeListener(this);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(debug)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.writeDebug("MainBean;Set connection manager"+ cm.toString());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp; if(debug)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.writeDebug("MainBean;Tried to set a null connection manager");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
&nbsp; }
////////////////////////////////////////////////////////////////////////////////
&nbsp; public boolean isConnected()
&nbsp; {
&nbsp;&nbsp;&nbsp; //see if datatabe is connected
&nbsp;&nbsp;&nbsp; return (con != null);
&nbsp; }
////////////////////////////////////////////////////////////////////////////////
&nbsp;public void processQuery()
&nbsp;{
&nbsp;try
&nbsp;{
&nbsp; Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from hello order by id");
&nbsp;writer.writeDebug("select * from hello order by id");
while(rs.next())
{
writer.writeDebug("next");
String str=rs.getString("name");
writer.writeDebug(str+"&amp;nbsp;&amp;nbsp;&amp;nbsp&amp;nbsp;&amp;nbsp;&amp;nbsp;");
}
rs.close();
}
catch(Exception e)
{
}
&nbsp;}
}
&nbsp;
OK£¬ÏÖÔÚÎÒÃÇÀ´²âÊÔÒ»ÏÂÕâ¸ö³ÌÐò£¬´´½¨Ò»¸ö²âÊÔÒ³Ãæ£º
&lt;%@ page contentType="text/html; charset=gb2312" %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;
hello
&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor="#ffffc0"&gt;
&lt;h1&gt;
&lt;jsp:useBean id="main" class="WebRelease.MainBean" scope ="session"/&gt;
&lt;jsp:useBean id="con" class="WebRelease.ConnectionManager" scope ="session"/&gt;
&lt;%
main.setConnectionManager(con);
con.login();
%&gt;
&lt;%
if(main.isConnected())
out.print("mainbean connect success!!!");
main.processQuery();
%&gt;
&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;
ÔÚtomcatÖÐä¯ÀÀÕâ¸öÒ³Ãæ£¬ÎÒÃÇÓ¦¸Ã¿ÉÒÔ¿´µ½Êä³ö¡°Mainbean connect sucess!!!¡±
×¢ÊÍ²»ÊÇÌ«¶à£¬Ï£ÍûÄãÄÜ¿´Ã÷°×¡£
]]></description>
		</item>
		<item>
			<title>ÓÃjsp´¦ÀíCookie</title>
			<link>http://www.kingmx.com/article.php?id=12324</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[¡¡¡¡ 9.1 Cookie¸ÅÊö 
¡¡¡¡ CookieÊÇ·þÎñÆ÷·¢ËÍ¸øä¯ÀÀÆ÷µÄÌå»ýºÜÐ¡µÄ´¿ÎÄ±¾ÐÅÏ¢£¬ÓÃ»§ÒÔºó·ÃÎÊÍ¬Ò»¸öWeb·þÎñÆ÷Ê±ä¯ÀÀÆ÷»á°ÑËüÃÇÔ­Ñù·¢ËÍ¸ø·þÎñÆ÷¡£Í¨¹ýÈÃ·þÎñÆ÷¶ÁÈ¡ËüÔ­ÏÈ±£´æµ½¿Í»§¶ËµÄÐÅÏ¢£¬ÍøÕ¾ÄÜ¹»Îªä¯ÀÀÕßÌá¹©Ò»ÏµÁÐµÄ·½±ã£¬ÀýÈçÔÚÏß½»Ò×¹ý³ÌÖÐ±êÊ¶ÓÃ»§Éí·Ý¡¢°²È«ÒªÇó²»¸ßµÄ³¡ºÏ±ÜÃâÓÃ»§ÖØ¸´ÊäÈëÃû×ÖºÍÃÜÂë¡¢ÃÅ»§ÍøÕ¾µÄÖ÷Ò³¶¨ÖÆ¡¢ÓÐÕë¶ÔÐÔµØÍ¶·Å¹ã¸æ£¬µÈµÈ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ CookieµÄÄ¿µÄ¾ÍÊÇÎªÓÃ»§´øÀ´·½±ã£¬ÎªÍøÕ¾´øÀ´ÔöÖµ¡£ËäÈ»ÓÐ×ÅÐí¶àÎó´«£¬ÊÂÊµÉÏCookie²¢²»»áÔì³ÉÑÏÖØµÄ°²È«ÍþÐ²¡£CookieÓÀÔ¶²»»áÒÔÈÎºÎ·½Ê½Ö´ÐÐ£¬Òò´ËÒ²²»»á´øÀ´²¡¶¾»ò¹¥»÷ÄãµÄÏµÍ³¡£ÁíÍâ£¬ÓÉÓÚä¯ÀÀÆ÷Ò»°ãÖ»ÔÊÐí´æ·Å300¸öCookie£¬Ã¿¸öÕ¾µã×î¶à´æ·Å20¸öCookie£¬Ã¿¸öCookieµÄ´óÐ¡ÏÞÖÆÎª4 KB£¬Òò´ËCookie²»»áÈûÂúÄãµÄÓ²ÅÌ£¬¸ü²»»á±»ÓÃ×÷¡°¾Ü¾ø·þÎñ¡±¹¥»÷ÊÖ¶Î¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 9.2 ServletµÄCookie API 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ Òª°ÑCookie·¢ËÍµ½¿Í»§¶Ë£¬ServletÏÈÒªµ÷ÓÃnew Cookie(name,value)ÓÃºÏÊÊµÄÃû×ÖºÍÖµ´´½¨Ò»¸ö»ò¶à¸öCookie£¨2.1½Ú£©£¬Í¨¹ýcookie.setXXXÉèÖÃ¸÷ÖÖÊôÐÔ£¨2.2½Ú£©£¬Í¨¹ýresponse.addCookie(cookie)°Ñcookie¼ÓÈëÓ¦´ðÍ·£¨2.3½Ú£©¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ Òª´Ó¿Í»§¶Ë¶ÁÈëCookie£¬ServletÓ¦¸Ãµ÷ÓÃrequest.getCookies()£¬getCookies()·½·¨·µ»ØÒ»¸öCookie¶ÔÏóµÄÊý×é¡£ÔÚ´ó¶àÊýÇé¿öÏÂ£¬ÄãÖ»ÐèÒªÓÃÑ­»··ÃÎÊ¸ÃÊý×éµÄ¸÷¸öÔªËØÑ°ÕÒÖ¸¶¨Ãû×ÖµÄCookie£¬È»ºó¶Ô¸ÃCookieµ÷ÓÃgetValue·½·¨È¡µÃÓëÖ¸¶¨Ãû×Ö¹ØÁªµÄÖµ£¬Õâ²¿·ÖÄÚÈÝ½«ÔÚ2.4½ÚÌÖÂÛ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 9.2.1 ´´½¨Cookie 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ µ÷ÓÃCookie¶ÔÏóµÄ¹¹Ôìº¯Êý¿ÉÒÔ´´½¨Cookie¡£Cookie¶ÔÏóµÄ¹¹Ôìº¯ÊýÓÐÁ½¸ö×Ö·û´®²ÎÊý£ºCookieÃû×ÖºÍCookieÖµ¡£Ãû×ÖºÍÖµ¶¼²»ÄÜ°üº¬¿Õ°××Ö·ûÒÔ¼°ÏÂÁÐ×Ö·û£º 
&nbsp;&nbsp; [ ] ( ) = , " / ? @ : ; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 9.2.2 ¶ÁÈ¡ºÍÉèÖÃCookieÊôÐÔ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ °ÑCookie¼ÓÈë´ý·¢ËÍµÄÓ¦´ðÍ·Ö®Ç°£¬Äã¿ÉÒÔ²é¿´»òÉèÖÃCookieµÄ¸÷ÖÖÊôÐÔ¡£ÏÂÃæÕªÒª½éÉÜÕâÐ©·½·¨£º 
&nbsp;&nbsp; 
&nbsp;&nbsp;getComment/setComment 
&nbsp;&nbsp;»ñÈ¡/ÉèÖÃCookieµÄ×¢ÊÍ¡£ 
&nbsp;&nbsp;getDomain/setDomain 
&nbsp;&nbsp;»ñÈ¡/ÉèÖÃCookieÊÊÓÃµÄÓò¡£Ò»°ãµØ£¬CookieÖ»·µ»Ø¸øÓë·¢ËÍËüµÄ·þÎñÆ÷Ãû×ÖÍêÈ«ÏàÍ¬µÄ·þÎñÆ÷¡£Ê¹ÓÃÕâÀïµÄ·½·¨¿ÉÒÔÖ¸Ê¾ä¯ÀÀÆ÷°ÑCookie·µ»Ø¸øÍ¬Ò»ÓòÄÚµÄÆäËû·þÎñÆ÷¡£×¢ÒâÓò±ØÐëÒÔµã¿ªÊ¼£¨ÀýÈç.sitename.com£©£¬·Ç¹ú¼ÒÀàµÄÓò£¨Èç.com£¬.edu£¬.gov£©±ØÐë°üº¬Á½¸öµã£¬¹ú¼ÒÀàµÄÓò£¨Èç.com.cn£¬.edu.uk£©±ØÐë°üº¬Èý¸öµã¡£ 
&nbsp;&nbsp;getMaxAge/setMaxAge 
&nbsp;&nbsp;»ñÈ¡/ÉèÖÃCookie¹ýÆÚÖ®Ç°µÄÊ±¼ä£¬ÒÔÃë¼Æ¡£Èç¹û²»ÉèÖÃ¸ÃÖµ£¬ÔòCookieÖ»ÔÚµ±Ç°»á»°ÄÚÓÐÐ§£¬¼´ÔÚÓÃ»§¹Ø±Õä¯ÀÀÆ÷Ö®Ç°ÓÐÐ§£¬¶øÇÒÕâÐ©Cookie²»»á±£´æµ½´ÅÅÌÉÏ¡£²Î¼ûÏÂÃæÓÐ¹ØLongLivedCookieµÄËµÃ÷¡£ 
&nbsp;&nbsp;getName/setName 
&nbsp;&nbsp;»ñÈ¡/ÉèÖÃCookieµÄÃû×Ö¡£±¾ÖÊÉÏ£¬Ãû×ÖºÍÖµÊÇÎÒÃÇÊ¼ÖÕ¹ØÐÄµÄÁ½¸ö²¿·Ö¡£ÓÉÓÚHttpServletRequestµÄgetCookies·½·¨·µ»ØµÄÊÇÒ»¸öCookie¶ÔÏóµÄÊý×é£¬Òò´ËÍ¨³£ÒªÓÃÑ­»·À´·ÃÎÊÕâ¸öÊý×é²éÕÒÌØ¶¨Ãû×Ö£¬È»ºóÓÃgetValue¼ì²éËüµÄÖµ¡£ 
&nbsp;&nbsp;getPath/setPath 
&nbsp;&nbsp;»ñÈ¡/ÉèÖÃCookieÊÊÓÃµÄÂ·¾¶¡£Èç¹û²»Ö¸¶¨Â·¾¶£¬Cookie½«·µ»Ø¸øµ±Ç°Ò³ÃæËùÔÚÄ¿Â¼¼°Æä×ÓÄ¿Â¼ÏÂµÄËùÓÐÒ³Ãæ¡£ÕâÀïµÄ·½·¨¿ÉÒÔÓÃÀ´Éè¶¨Ò»Ð©¸üÒ»°ãµÄÌõ¼þ¡£ÀýÈç£¬someCookie.setPath("/")£¬´ËÊ±·þÎñÆ÷ÉÏµÄËùÓÐÒ³Ãæ¶¼¿ÉÒÔ½ÓÊÕµ½¸ÃCookie¡£ 
&nbsp;&nbsp;getSecure/setSecure 
&nbsp;&nbsp;»ñÈ¡/ÉèÖÃÒ»¸öbooleanÖµ£¬¸ÃÖµ±íÊ¾ÊÇ·ñCookieÖ»ÄÜÍ¨¹ý¼ÓÃÜµÄÁ¬½Ó£¨¼´SSL£©·¢ËÍ¡£ 
&nbsp;&nbsp;getValue/setValue 
&nbsp;&nbsp;»ñÈ¡/ÉèÖÃCookieµÄÖµ¡£ÈçÇ°ËùÊö£¬Ãû×ÖºÍÖµÊµ¼ÊÉÏÊÇÎÒÃÇÊ¼ÖÕ¹ØÐÄµÄÁ½¸ö·½Ãæ¡£²»¹ýÒ²ÓÐÒ»Ð©ÀýÍâÇé¿ö£¬±ÈÈç°ÑÃû×Ö×÷ÎªÂß¼­±ê¼Ç£¨Ò²¾ÍÊÇËµ£¬Èç¹ûÃû×Ö´æÔÚ£¬Ôò±íÊ¾true£©¡£ 
&nbsp;&nbsp;getVersion/setVersion 
&nbsp;&nbsp;»ñÈ¡/ÉèÖÃCookieËù×ñ´ÓµÄÐ­Òé°æ±¾¡£Ä¬ÈÏ°æ±¾0£¨×ñ´ÓÔ­ÏÈµÄNetscape¹æ·¶£©£»°æ±¾1×ñ´ÓRFC 2109 £¬ µ«ÉÐÎ´µÃµ½¹ã·ºµÄÖ§³Ö¡£ 
&nbsp;&nbsp;¡¡¡¡ 9.2.3 ÔÚÓ¦´ðÍ·ÖÐÉèÖÃCookie 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ Cookie¿ÉÒÔÍ¨¹ýHttpServletResponseµÄaddCookie·½·¨¼ÓÈëµ½Set-CookieÓ¦´ðÍ·¡£ÏÂÃæÊÇÒ»¸öÀý×Ó£º 
&nbsp;&nbsp; Cookie userCookie = new Cookie("user", "uid1234"); 
&nbsp;&nbsp; response.addCookie(userCookie); 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 9.2.4 ¶ÁÈ¡±£´æµ½¿Í»§¶ËµÄCookie 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ Òª°ÑCookie·¢ËÍµ½¿Í»§¶Ë£¬ÏÈÒª´´½¨Cookie£¬È»ºóÓÃaddCookie·¢ËÍÒ»¸öSet-Cookie HTTPÓ¦´ðÍ·¡£ÕâÐ©ÄÚÈÝÒÑ¾­ÔÚÉÏÃæµÄ2.1½Ú½éÉÜ¡£´Ó¿Í»§¶Ë¶ÁÈ¡CookieÊ±µ÷ÓÃµÄÊÇHttpServletRequestµÄgetCookies·½·¨¡£¸Ã·½·¨·µ»ØÒ»¸öÓëHTTPÇëÇóÍ·ÖÐµÄÄÚÈÝ¶ÔÓ¦µÄCookie¶ÔÏóÊý×é¡£µÃµ½Õâ¸öÊý×éÖ®ºó£¬Ò»°ãÊÇÓÃÑ­»··ÃÎÊÆäÖÐµÄ¸÷¸öÔªËØ£¬µ÷ÓÃgetName¼ì²é¸÷¸öCookieµÄÃû×Ö£¬Ö±ÖÁÕÒµ½Ä¿±êCookie¡£È»ºó¶ÔÕâ¸öÄ¿±êCookieµ÷ÓÃgetValue£¬¸ù¾Ý»ñµÃµÄ½á¹û½øÐÐÆäËû´¦Àí¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ÉÏÊö´¦Àí¹ý³Ì¾­³£»áÓöµ½£¬Îª·½±ã¼ÆÏÂÃæÎÒÃÇÌá¹©Ò»¸ögetCookieValue·½·¨¡£Ö»Òª¸ø³öCookie¶ÔÏóÊý×é¡¢CookieÃû×ÖºÍÄ¬ÈÏÖµ£¬getCookieValue·½·¨¾Í»á·µ»ØÆ¥ÅäÖ¸¶¨Ãû×ÖµÄCookieÖµ£¬Èç¹ûÕÒ²»µ½Ö¸¶¨Cookie£¬Ôò·µ»ØÄ¬ÈÏÖµ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 9.3 ¼¸¸öCookie¹¤¾ßº¯Êý 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ÏÂÃæÊÇ¼¸¸ö¹¤¾ßº¯Êý¡£ÕâÐ©º¯ÊýËäÈ»¼òµ¥£¬µ«ÊÇ£¬ÔÚºÍCookie´ò½»µÀµÄÊ±ºòºÜÓÐÓÃ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 9.3.1 »ñÈ¡Ö¸¶¨Ãû×ÖµÄCookieÖµ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ¸Ãº¯ÊýÊÇServletUtilities.javaµÄÒ»²¿·Ö¡£getCookieValueÍ¨¹ýÑ­»·ÒÀ´Î·ÃÎÊCookie¶ÔÏóÊý×éµÄ¸÷¸öÔªËØ£¬Ñ°ÕÒÊÇ·ñÓÐÖ¸¶¨Ãû×ÖµÄCookie£¬ÈçÕÒµ½£¬Ôò·µ»Ø¸ÃCookieµÄÖµ£»·ñÔò£¬·µ»Ø²ÎÊýÖÐ¸ø³öµÄÄ¬ÈÏÖµ¡£getCookieValueÄÜ¹»ÔÚÒ»¶¨³Ì¶ÈÉÏ¼ò»¯CookieÖµµÄÌáÈ¡¡£ 
&nbsp;&nbsp; public static String getCookieValue(Cookie[] cookies, 
&nbsp;&nbsp; String cookieName, 
&nbsp;&nbsp; String defaultValue) { 
&nbsp;&nbsp; for(int i=0; i£¼cookies.length; i++) { 
&nbsp;&nbsp; Cookie cookie = cookies[i]; 
&nbsp;&nbsp; if (cookieName.equals(cookie.getName())) 
&nbsp;&nbsp; return(cookie.getValue()); 
&nbsp;&nbsp; } 
&nbsp;&nbsp; return(defaultValue); 
&nbsp;&nbsp; } 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 9.3.2×Ô¶¯±£´æµÄCookie 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ÏÂÃæÊÇLongLivedCookieÀàµÄ´úÂë¡£Èç¹ûÄãÏ£ÍûCookieÄÜ¹»ÔÚä¯ÀÀÆ÷ÍË³öµÄÊ±ºò×Ô¶¯±£´æÏÂÀ´£¬Ôò¿ÉÒÔÓÃÕâ¸öLongLivedCookieÀàÀ´È¡´ú±ê×¼µÄCookieÀà¡£ 
&nbsp;&nbsp;package hall; 
&nbsp;&nbsp; 
&nbsp;&nbsp;import javax.servlet.http.*; 
&nbsp;&nbsp; 
&nbsp;&nbsp;public class LongLivedCookie extends Cookie { 
&nbsp;&nbsp; public static final int SECONDS_PER_YEAR = 60*60*24*365; 
&nbsp;&nbsp; public LongLivedCookie(String name, String value) { 
&nbsp;&nbsp; super(name, value); 
&nbsp;&nbsp; setMaxAge(SECONDS_PER_YEAR); 
&nbsp;&nbsp; } 
&nbsp;&nbsp;} 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 9.4.ÊµÀý£º¶¨ÖÆµÄËÑË÷ÒýÇæ½çÃæ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ÏÂÃæÒ²ÊÇÒ»¸öËÑË÷ÒýÇæ½çÃæµÄÀý×Ó£¬Í¨¹ýÐÞ¸ÄÇ°ÃæHTTP×´Ì¬´úÂëµÄÀý×ÓµÃµ½¡£ÔÚÕâ¸öServletÖÐ£¬ÓÃ»§½çÃæÊÇ¶¯Ì¬Éú³É¶ø²»ÊÇÓÉ¾²Ì¬HTMLÎÄ¼þÌá¹©µÄ¡£Servlet³ýÁË¸ºÔð¶ÁÈ¡±íµ¥Êý¾Ý²¢°ÑËüÃÇ·¢ËÍ¸øËÑË÷ÒýÇæÖ®Íâ£¬»¹Òª°Ñ°üº¬±íµ¥Êý¾ÝµÄCookie·¢ËÍ¸ø¿Í»§¶Ë¡£ÒÔºó¿Í»§ÔÙ´Î·ÃÎÊÍ¬Ò»±íµ¥Ê±£¬ÕâÐ©CookieµÄÖµ½«ÓÃÀ´Ô¤ÏÈÌî³ä±íµ¥£¬Ê¹±íµ¥×Ô¶¯ÏÔÊ¾×î½üÊ¹ÓÃ¹ýµÄÊý¾Ý¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ SearchEnginesFrontEnd.java 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ¸ÃServlet¹¹ÔìÒ»¸öÖ÷ÒªÓÉ±íµ¥¹¹³ÉµÄÓÃ»§½çÃæ¡£µÚÒ»´ÎÏÔÊ¾µÄÊ±ºò£¬ËüºÍÇ°ÃæÓÃ¾²Ì¬HTMLÒ³ÃæÌá¹©µÄ½çÃæ²î²»¶à¡£È»¶ø£¬ÓÃ»§Ñ¡ÔñµÄÖµ½«±»±£´æµ½Cookie£¨±¾Ò³Ãæ½«Êý¾Ý·¢ËÍµ½CustomizedSearchEngines Servlet£¬ÓÉºóÕßÉèÖÃCookie£©¡£ÓÃ»§ÒÔºóÔÙ·ÃÎÊÍ¬Ò»Ò³ÃæÊ±£¬¼´Ê¹ä¯ÀÀÆ÷ÊÇÍË³öÖ®ºóÔÙÆô¶¯£¬±íµ¥ÖÐÒ²»á×Ô¶¯ÌîºÃÉÏÒ»´ÎËÑË÷ËùÌîÐ´µÄÄÚÈÝ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ×¢Òâ¸ÃServletÓÃµ½ÁËServletUtilities.java£¬ÆäÖÐgetCookieValueÇ°ÃæÒÑ¾­½éÉÜ¹ý£¬headWithTitleÓÃÓÚÉú³ÉHTMLÒ³ÃæµÄÒ»²¿·Ö¡£ÁíÍâ£¬ÕâÀïÒ²ÓÃµ½ÁËÇ°ÃæÒÑ¾­ËµÃ÷µÄLongLiveCookieÀà£¬ÎÒÃÇÓÃËüÀ´´´½¨×÷·ÏÆÚÏÞºÜ³¤µÄCookie¡£ 
&nbsp;&nbsp;package hall; 
&nbsp;&nbsp; 
&nbsp;&nbsp;import java.io.*; 
&nbsp;&nbsp;import javax.servlet.*; 
&nbsp;&nbsp;import javax.servlet.http.*; 
&nbsp;&nbsp;import java.net.*; 
&nbsp;&nbsp; 
&nbsp;&nbsp;public class SearchEnginesFrontEnd extends HttpServlet { 
&nbsp;&nbsp; public void doGet(HttpServletRequest request, 
&nbsp;&nbsp; HttpServletResponse response) 
&nbsp;&nbsp; throws ServletException, IOException { 
&nbsp;&nbsp; Cookie[] cookies = request.getCookies(); 
&nbsp;&nbsp; String searchString = 
&nbsp;&nbsp; ServletUtilities.getCookieValue(cookies, 
&nbsp;&nbsp; "searchString", 
&nbsp;&nbsp; "Java Programming"); 
&nbsp;&nbsp; String numResults = 
&nbsp;&nbsp; ServletUtilities.getCookieValue(cookies, 
&nbsp;&nbsp; "numResults", 
&nbsp;&nbsp; "10"); 
&nbsp;&nbsp; String searchEngine = 
&nbsp;&nbsp; ServletUtilities.getCookieValue(cookies, 
&nbsp;&nbsp; "searchEngine", 
&nbsp;&nbsp; "google"); 
&nbsp;&nbsp; response.setContentType("text/html"); 
&nbsp;&nbsp; PrintWriter out = response.getWriter(); 
&nbsp;&nbsp; String title = "Searching the Web"; 
&nbsp;&nbsp; out.println(ServletUtilities.headWithTitle(title) + 
&nbsp;&nbsp; "£¼BODY BGCOLOR=£Ü"#FDF5E6£Ü"£¾£Ün" + 
&nbsp;&nbsp; "£¼H1 ALIGN=£Ü"CENTER£Ü"£¾Searching the Web£¼/H1£¾£Ün" + 
&nbsp;&nbsp; "£Ün" + 
&nbsp;&nbsp; "£¼FORM ACTION=£Ü"/servlet/hall.CustomizedSearchEngines£Ü"£¾£Ün" + 
&nbsp;&nbsp; "£¼CENTER£¾£Ün" + 
&nbsp;&nbsp; "Search String:£Ün" + 
&nbsp;&nbsp; "£¼INPUT TYPE=£Ü"TEXT£Ü" NAME=£Ü"searchString£Ü"£Ün" + 
&nbsp;&nbsp; " VALUE=£Ü"" + searchString + "£Ü"£¾£¼BR£¾£Ün" + 
&nbsp;&nbsp; "Results to Show Per Page:£Ün" + 
&nbsp;&nbsp; "£¼INPUT TYPE=£Ü"TEXT£Ü" NAME=£Ü"numResults£Ü"£Ün" + 
&nbsp;&nbsp; " VALUE=" + numResults + " SIZE=3£¾£¼BR£¾£Ün" + 
&nbsp;&nbsp; "£¼INPUT TYPE=£Ü"RADIO£Ü" NAME=£Ü"searchEngine£Ü"£Ün" + 
&nbsp;&nbsp; " VALUE=£Ü"google£Ü"" + 
&nbsp;&nbsp; checked("google", searchEngine) + "£¾£Ün" + 
&nbsp;&nbsp; "Google |£Ün" + 
&nbsp;&nbsp; "£¼INPUT TYPE=£Ü"RADIO£Ü" NAME=£Ü"searchEngine£Ü"£Ün" + 
&nbsp;&nbsp; " VALUE=£Ü"infoseek£Ü"" + 
&nbsp;&nbsp; checked("infoseek", searchEngine) + "£¾£Ün" + 
&nbsp;&nbsp; "Infoseek |£Ün" + 
&nbsp;&nbsp; "£¼INPUT TYPE=£Ü"RADIO£Ü" NAME=£Ü"searchEngine£Ü"£Ün" + 
&nbsp;&nbsp; " VALUE=£Ü"lycos£Ü"" + 
&nbsp;&nbsp; checked("lycos", searchEngine) + "£¾£Ün" + 
&nbsp;&nbsp; "Lycos |£Ün" + 
&nbsp;&nbsp; "£¼INPUT TYPE=£Ü"RADIO£Ü" NAME=£Ü"searchEngine£Ü"£Ün" + 
&nbsp;&nbsp; " VALUE=£Ü"hotbot£Ü"" + 
&nbsp;&nbsp; checked("hotbot", searchEngine) + "£¾£Ün" + 
&nbsp;&nbsp; "HotBot£Ün" + 
&nbsp;&nbsp; "£¼BR£¾£Ün" + 
&nbsp;&nbsp; "£¼INPUT TYPE=£Ü"SUBMIT£Ü" VALUE=£Ü"Search£Ü"£¾£Ün" + 
&nbsp;&nbsp; "£¼/CENTER£¾£Ün" + 
&nbsp;&nbsp; "£¼/FORM£¾£Ün" + 
&nbsp;&nbsp; "£Ün" + 
&nbsp;&nbsp; "£¼/BODY£¾£Ün" + 
&nbsp;&nbsp; "£¼/HTML£¾£Ün"); 
&nbsp;&nbsp; } 
&nbsp;&nbsp; 
&nbsp;&nbsp; private String checked(String name1, String name2) { 
&nbsp;&nbsp; if (name1.equals(name2)) 
&nbsp;&nbsp; return(" CHECKED"); 
&nbsp;&nbsp; else 
&nbsp;&nbsp; return(""); 
&nbsp;&nbsp; } 
&nbsp;&nbsp;} 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ CustomizedSearchEngines.java 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ Ç°ÃæµÄSearchEnginesFrontEnd Servlet°ÑÊý¾Ý·¢ËÍµ½CustomizedSearchEngines Servlet¡£±¾ÀýÔÚÐí¶à·½ÃæÓëÇ°Ãæ½éÉÜHTTP×´Ì¬´úÂëÊ±µÄÀý×ÓÏàËÆ£¬Çø±ðÔÚÓÚ£¬±¾Àý³ýÁËÒª¹¹ÔìÒ»¸öÕë¶ÔËÑË÷ÒýÇæµÄURL²¢ÏòÓÃ»§·¢ËÍÒ»¸öÖØ¶¨ÏòÓ¦´ðÖ®Íâ£¬»¹Òª·¢ËÍ±£´æÓÃ»§Êý¾ÝµÄCookies¡£ 
&nbsp;&nbsp;package hall; 
&nbsp;&nbsp; 
&nbsp;&nbsp;import java.io.*; 
&nbsp;&nbsp;import javax.servlet.*; 
&nbsp;&nbsp;import javax.servlet.http.*; 
&nbsp;&nbsp;import java.net.*; 
&nbsp;&nbsp; 
&nbsp;&nbsp;public class CustomizedSearchEngines extends HttpServlet { 
&nbsp;&nbsp; public void doGet(HttpServletRequest request, 
&nbsp;&nbsp; HttpServletResponse response) 
&nbsp;&nbsp; throws ServletException, IOException { 
&nbsp;&nbsp; 
&nbsp;&nbsp; String searchString = request.getParameter("searchString"); 
&nbsp;&nbsp; Cookie searchStringCookie = 
&nbsp;&nbsp; new LongLivedCookie("searchString", searchString); 
&nbsp;&nbsp; response.addCookie(searchStringCookie); 
&nbsp;&nbsp; searchString = URLEncoder.encode(searchString); 
&nbsp;&nbsp; String numResults = request.getParameter("numResults"); 
&nbsp;&nbsp; Cookie numResultsCookie = 
&nbsp;&nbsp; new LongLivedCookie("numResults", numResults); 
&nbsp;&nbsp; response.addCookie(numResultsCookie); 
&nbsp;&nbsp; String searchEngine = request.getParameter("searchEngine"); 
&nbsp;&nbsp; Cookie searchEngineCookie = 
&nbsp;&nbsp; new LongLivedCookie("searchEngine", searchEngine); 
&nbsp;&nbsp; response.addCookie(searchEngineCookie); 
&nbsp;&nbsp; SearchSpec[] commonSpecs = SearchSpec.getCommonSpecs(); 
&nbsp;&nbsp; for(int i=0; i£¼commonSpecs.length; i++) { 
&nbsp;&nbsp; SearchSpec searchSpec = commonSpecs[i]; 
&nbsp;&nbsp; if (searchSpec.getName().equals(searchEngine)) { 
&nbsp;&nbsp; String url = 
&nbsp;&nbsp; searchSpec.makeURL(searchString, numResults); 
&nbsp;&nbsp; response.sendRedirect(url); 
&nbsp;&nbsp; return; 
&nbsp;&nbsp; } 
&nbsp;&nbsp; } 
&nbsp;&nbsp; response.sendError(response.SC_NOT_FOUND, 
&nbsp;&nbsp; "No recognized search engine specified."); 
&nbsp;&nbsp; } 
&nbsp;&nbsp; 
&nbsp;&nbsp; public void doPost(HttpServletRequest request, 
&nbsp;&nbsp; HttpServletResponse response) 
&nbsp;&nbsp; throws ServletException, IOException { 
&nbsp;&nbsp; doGet(request, response); 
&nbsp;&nbsp; } 
&nbsp;&nbsp;} 
]]></description>
		</item>
		<item>
			<title>ServletºÍJSP¸ÅÊö</title>
			<link>http://www.kingmx.com/article.php?id=12325</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[&nbsp;¡¡¡¡ 1.1 Java Servlet¼°ÆäÌØµã 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ServletÊÇJava¼¼Êõ¶ÔCGI±à³ÌµÄ»Ø´ð¡£Servlet³ÌÐòÔÚ·þÎñÆ÷¶ËÔËÐÐ£¬¶¯Ì¬µØÉú³ÉWebÒ³Ãæ¡£Óë´«Í³µÄCGIºÍÐí¶àÆäËûÀàËÆCGIµÄ¼¼ÊõÏà±È£¬Java Servlet¾ßÓÐ¸ü¸ßµÄÐ§ÂÊ£¬¸üÈÝÒ×Ê¹ÓÃ£¬¹¦ÄÜ¸üÇ¿´ó£¬¾ßÓÐ¸üºÃµÄ¿ÉÒÆÖ²ÐÔ£¬¸ü½ÚÊ¡Í¶×Ê£¨¸üÖØÒªµÄÊÇ£¬ Servlet³ÌÐòÔ±ÊÕÈëÒª±ÈPerl³ÌÐòÔ±¸ß:-£©£º 
&nbsp;&nbsp; 
&nbsp;&nbsp;¸ßÐ§¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;ÔÚ´«Í³µÄCGIÖÐ£¬Ã¿¸öÇëÇó¶¼ÒªÆô¶¯Ò»¸öÐÂµÄ½ø³Ì£¬Èç¹ûCGI³ÌÐò±¾ÉíµÄÖ´ÐÐÊ±¼ä½Ï¶Ì£¬Æô¶¯½ø³ÌËùÐèÒªµÄ¿ªÏúºÜ¿ÉÄÜ·´¶ø³¬¹ýÊµ¼ÊÖ´ÐÐÊ±¼ä¡£¶øÔÚServletÖÐ£¬Ã¿¸öÇëÇóÓÉÒ»¸öÇáÁ¿¼¶µÄJavaÏß³Ì´¦Àí£¨¶ø²»ÊÇÖØÁ¿¼¶µÄ²Ù×÷ÏµÍ³½ø³Ì£©¡£ 
&nbsp;&nbsp;ÔÚ´«Í³CGIÖÐ£¬Èç¹ûÓÐN¸ö²¢·¢µÄ¶ÔÍ¬Ò»CGI³ÌÐòµÄÇëÇó£¬Ôò¸ÃCGI³ÌÐòµÄ´úÂëÔÚÄÚ´æÖÐÖØ¸´×°ÔØÁËN´Î£»¶ø¶ÔÓÚServlet£¬´¦ÀíÇëÇóµÄÊÇN¸öÏß³Ì£¬Ö»ÐèÒªÒ»·ÝServletÀà´úÂë¡£ÔÚÐÔÄÜÓÅ»¯·½Ãæ£¬ServletÒ²±ÈCGIÓÐ×Å¸ü¶àµÄÑ¡Ôñ£¬±ÈÈç»º³åÒÔÇ°µÄ¼ÆËã½á¹û£¬±£³ÖÊý¾Ý¿âÁ¬½ÓµÄ»î¶¯£¬µÈµÈ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;·½±ã¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;ServletÌá¹©ÁË´óÁ¿µÄÊµÓÃ¹¤¾ßÀý³Ì£¬ÀýÈç×Ô¶¯µØ½âÎöºÍ½âÂëHTML±íµ¥Êý¾Ý¡¢¶ÁÈ¡ºÍÉèÖÃHTTPÍ·¡¢´¦ÀíCookie¡¢¸ú×Ù»á»°×´Ì¬µÈ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¹¦ÄÜÇ¿´ó¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;ÔÚServletÖÐ£¬Ðí¶àÊ¹ÓÃ´«Í³CGI³ÌÐòºÜÄÑÍê³ÉµÄÈÎÎñ¶¼¿ÉÒÔÇáËÉµØÍê³É¡£ÀýÈç£¬ServletÄÜ¹»Ö±½ÓºÍWeb·þÎñÆ÷½»»¥£¬¶øÆÕÍ¨µÄCGI³ÌÐò²»ÄÜ¡£Servlet»¹ÄÜ¹»ÔÚ¸÷¸ö³ÌÐòÖ®¼ä¹²ÏíÊý¾Ý£¬Ê¹µÃÊý¾Ý¿âÁ¬½Ó³ØÖ®ÀàµÄ¹¦ÄÜºÜÈÝÒ×ÊµÏÖ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¿ÉÒÆÖ²ÐÔºÃ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;ServletÓÃJava±àÐ´£¬Servlet API¾ßÓÐÍêÉÆµÄ±ê×¼¡£Òò´Ë£¬ÎªI-Planet Enterprise ServerÐ´µÄServletÎÞÐèÈÎºÎÊµÖÊÉÏµÄ¸Ä¶¯¼´¿ÉÒÆÖ²µ½Apache¡¢Microsoft IIS»òÕßWebStar¡£¼¸ºõËùÓÐµÄÖ÷Á÷·þÎñÆ÷¶¼Ö±½Ó»òÍ¨¹ý²å¼þÖ§³ÖServlet¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;½ÚÊ¡Í¶×Ê¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;²»½öÓÐÐí¶àÁ®¼ÛÉõÖÁÃâ·ÑµÄWeb·þÎñÆ÷¿É¹©¸öÈË»òÐ¡¹æÄ£ÍøÕ¾Ê¹ÓÃ£¬¶øÇÒ¶ÔÓÚÏÖÓÐµÄ·þÎñÆ÷£¬Èç¹ûËü²»Ö§³ÖServletµÄ»°£¬Òª¼ÓÉÏÕâ²¿·Ö¹¦ÄÜÒ²ÍùÍùÊÇÃâ·ÑµÄ£¨»òÖ»ÐèÒª¼«ÉÙµÄÍ¶×Ê£©¡£ 
&nbsp;&nbsp;¡¡¡¡ 1.2 JSP¼°ÆäÌØµã 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ JavaServer Pages£¨JSP£©ÊÇÒ»ÖÖÊµÏÖÆÕÍ¨¾²Ì¬HTMLºÍ¶¯Ì¬HTML»ìºÏ±àÂëµÄ¼¼Êõ£¬ÓÐ¹ØJSP»ù´¡¸ÅÄîµÄËµÃ÷Çë²Î¼û¡¶JSP¼¼Êõ¼ò½é ¡·¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ Ðí¶àÓÉCGI³ÌÐòÉú³ÉµÄÒ³Ãæ´ó²¿·ÖÈÔ¾ÉÊÇ¾²Ì¬HTML£¬¶¯Ì¬ÄÚÈÝÖ»ÔÚÒ³ÃæÖÐÓÐÏÞµÄ¼¸¸ö²¿·Ö³öÏÖ¡£µ«ÊÇ°üÀ¨ServletÔÚÄÚµÄ´ó¶àÊýCGI¼¼Êõ¼°Æä±äÖÖ£¬×ÜÊÇÍ¨¹ý³ÌÐòÉú³ÉÕû¸öÒ³Ãæ¡£JSPÊ¹µÃÎÒÃÇ¿ÉÒÔ·Ö±ð´´½¨ÕâÁ½¸ö²¿·Ö¡£ÀýÈç£¬ÏÂÃæ¾ÍÊÇÒ»¸ö¼òµ¥µÄJSPÒ³Ãæ£º 
&nbsp;&nbsp;£¼!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"£¾ 
&nbsp;&nbsp;£¼HTML£¾ 
&nbsp;&nbsp;£¼HEAD£¾£¼TITLE£¾»¶Ó­·ÃÎÊÍøÉÏÉÌµê£¼/TITLE£¾£¼/HEAD£¾ 
&nbsp;&nbsp;£¼BODY£¾ 
&nbsp;&nbsp;£¼H1£¾»¶Ó­£¼/H1£¾ 
&nbsp;&nbsp;£¼SMALL£¾»¶Ó­, 
&nbsp;&nbsp;£¼!-- Ê×´Î·ÃÎÊµÄÓÃ»§Ãû×ÖÎª"New User" --£¾ 
&nbsp;&nbsp;£¼% out.println(Utils.getUserNameFromCookie(request)); %£¾ 
&nbsp;&nbsp;ÒªÉèÖÃÕÊºÅÐÅÏ¢£¬Çëµã»÷ 
&nbsp;&nbsp;£¼A HREF="Account-Settings.html"£¾ÕâÀï£¼/A£¾£¼/SMALL£¾ 
&nbsp;&nbsp;£¼P£¾ 
&nbsp;&nbsp;Ò³ÃæµÄÆäÓàÄÚÈÝ¡£. 
&nbsp;&nbsp;£¼/BODY£¾£¼/HTML£¾ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ÏÂÃæÊÇJSPºÍÆäËûÀàËÆ»òÏà¹Ø¼¼ÊõµÄÒ»¸ö¼òµ¥±È½Ï£º 
&nbsp;&nbsp; 
&nbsp;&nbsp;JSPºÍActive Server Pages£¨ASP£©Ïà±È 
&nbsp;&nbsp; 
&nbsp;&nbsp;MicrosoftµÄASPÊÇÒ»ÖÖºÍJSPÀàËÆµÄ¼¼Êõ¡£JSPºÍASPÏà±È¾ßÓÐÁ½·½ÃæµÄÓÅµã¡£Ê×ÏÈ£¬¶¯Ì¬²¿·ÖÓÃJava±àÐ´£¬¶ø²»ÊÇVB Script»òÆäËûMicrosoftÓïÑÔ£¬²»½ö¹¦ÄÜ¸üÇ¿´ó¶øÇÒ¸üÒ×ÓÚÊ¹ÓÃ¡£µÚ¶þ£¬JSPÓ¦ÓÃ¿ÉÒÔÒÆÖ²µ½ÆäËû²Ù×÷ÏµÍ³ºÍ·ÇMicrosoftµÄWeb·þÎñÆ÷ÉÏ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;JSPºÍ´¿ServletÏà±È 
&nbsp;&nbsp; 
&nbsp;&nbsp;JSP²¢Ã»ÓÐÔö¼ÓÈÎºÎ±¾ÖÊÉÏ²»ÄÜÓÃServletÊµÏÖµÄ¹¦ÄÜ¡£µ«ÊÇ£¬ÔÚJSPÖÐ±àÐ´¾²Ì¬HTML¸ü¼Ó·½±ã£¬²»±ØÔÙÓÃ printlnÓï¾äÀ´Êä³öÃ¿Ò»ÐÐHTML´úÂë¡£¸üÖØÒªµÄÊÇ£¬½èÖúÄÚÈÝºÍÍâ¹ÛµÄ·ÖÀë£¬Ò³ÃæÖÆ×÷ÖÐ²»Í¬ÐÔÖÊµÄÈÎÎñ¿ÉÒÔ·½±ãµØ·Ö¿ª£º±ÈÈç£¬ÓÉÒ³ÃæÉè¼Æ×¨¼Ò½øÐÐHTMLÉè¼Æ£¬Í¬Ê±Áô³ö¹©Servlet³ÌÐòÔ±²åÈë¶¯Ì¬ÄÚÈÝµÄ¿Õ¼ä¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;JSPºÍ·þÎñÆ÷¶Ë°üº¬£¨Server-Side Include£¬SSI£©Ïà±È 
&nbsp;&nbsp; 
&nbsp;&nbsp;SSIÊÇÒ»ÖÖÊÜµ½¹ã·ºÖ§³ÖµÄÔÚ¾²Ì¬HTMLÖÐÒýÈëÍâ²¿´úÂëµÄ¼¼Êõ¡£JSPÔÚÕâ·½ÃæµÄÖ§³Ö¸üÎªÍêÉÆ£¬ÒòÎªËü¿ÉÒÔÓÃServlet¶ø²»ÊÇ¶ÀÁ¢µÄ³ÌÐòÀ´Éú³É¶¯Ì¬ÄÚÈÝ¡£ÁíÍâ£¬SSIÊµ¼ÊÉÏÖ»ÓÃÓÚ¼òµ¥µÄ°üº¬£¬¶ø²»ÊÇÃæÏòÄÇÐ©ÄÜ¹»´¦Àí±íµ¥Êý¾Ý¡¢·ÃÎÊÊý¾Ý¿âµÄ¡°ÕæÕýµÄ¡±³ÌÐò¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;JSPºÍjavascriptÏà±È 
&nbsp;&nbsp; 
&nbsp;&nbsp;javascriptÄÜ¹»ÔÚ¿Í»§¶Ë¶¯Ì¬µØÉú³ÉHTML¡£ËäÈ»javascriptºÜÓÐÓÃ£¬µ«ËüÖ»ÄÜ´¦ÀíÒÔ¿Í»§¶Ë»·¾³Îª»ù´¡µÄ¶¯Ì¬ÐÅÏ¢¡£³ýÁËCookieÖ®Íâ£¬HTTP×´Ì¬ºÍ±íµ¥Ìá½»Êý¾Ý¶ÔjavascriptÀ´Ëµ¶¼ÊÇ²»¿ÉÓÃµÄ¡£ÁíÍâ£¬ÓÉÓÚÊÇÔÚ¿Í»§¶ËÔËÐÐ£¬javascript²»ÄÜ·ÃÎÊ·þÎñÆ÷¶Ë×ÊÔ´£¬±ÈÈçÊý¾Ý¿â¡¢Ä¿Â¼ÐÅÏ¢µÈµÈ¡£]]></description>
		</item>
		<item>
			<title>JSP¼°Óï·¨¸ÅÒª</title>
			<link>http://www.kingmx.com/article.php?id=12326</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[11.1 ¸ÅÊö 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ JavaServer Pages£¨JSP£©Ê¹µÃÎÒÃÇÄÜ¹»·ÖÀëÒ³ÃæµÄ¾²Ì¬HTMLºÍ¶¯Ì¬²¿·Ö¡£HTML¿ÉÒÔÓÃÈÎºÎÍ¨³£Ê¹ÓÃµÄWebÖÆ×÷¹¤¾ß±àÐ´£¬±àÐ´·½Ê½Ò²ºÍÔ­À´µÄÒ»Ñù£»¶¯Ì¬²¿·ÖµÄ´úÂë·ÅÈëÌØÊâ±ê¼ÇÖ®ÄÚ£¬´ó²¿·ÖÒÔ¡°£¼%¡±¿ªÊ¼£¬ÒÔ¡°%£¾¡±½áÊø¡£ÀýÈç£¬ÏÂÃæÊÇÒ»¸öJSPÒ³ÃæµÄÆ¬¶Ï£¬Èç¹ûÎÒÃÇÓÃhttp://host/OrderConfirmation.jsp?title=Core+Web+ProgrammingÕâ¸öURL´ò¿ª¸ÃÒ³Ãæ£¬Ôò½á¹ûÏÔÊ¾¡°Thanks for ordering Core Web Programming¡±¡£ 
&nbsp;&nbsp;Thanks for ordering 
&nbsp;&nbsp;£¼I£¾£¼%= request.getParameter("title") %£¾£¼/I£¾ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ JSPÒ³ÃæÎÄ¼þÍ¨³£ÒÔ.jspÎªÀ©Õ¹Ãû£¬¶øÇÒ¿ÉÒÔ°²×°µ½ÈÎºÎÄÜ¹»´æ·ÅÆÕÍ¨WebÒ³ÃæµÄµØ·½¡£ËäÈ»´Ó´úÂë±àÐ´À´¿´£¬JSPÒ³Ãæ¸üÏóÆÕÍ¨WebÒ³Ãæ¶ø²»ÏóServlet£¬µ«Êµ¼ÊÉÏ£¬JSP×îÖÕ»á±»×ª»»³ÉÕý¹æµÄServlet£¬¾²Ì¬HTMLÖ±½ÓÊä³öµ½ºÍServlet service·½·¨¹ØÁªµÄÊä³öÁ÷¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ JSPµ½ServletµÄ×ª»»¹ý³ÌÒ»°ãÔÚ³öÏÖµÚÒ»´ÎÒ³ÃæÇëÇóÊ±½øÐÐ¡£Òò´Ë£¬Èç¹ûÄãÏ£ÍûµÚÒ»¸öÓÃ»§²»»áÓÉÓÚJSPÒ³Ãæ×ª»»³ÉServlet¶øµÈ´ýÌ«³¤µÄÊ±¼ä£¬Ï£ÍûÈ·±£ServletÒÑ¾­ÕýÈ·µØ±àÒë²¢×°ÔØ£¬Äã¿ÉÒÔÔÚ°²×°JSPÒ³ÃæÖ®ºó×Ô¼ºÇëÇóÒ»ÏÂÕâ¸öÒ³Ãæ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ÁíÍâÒ²Çë×¢Òâ£¬Ðí¶àWeb·þÎñÆ÷ÔÊÐí¶¨Òå±ðÃû£¬ËùÒÔÒ»¸ö¿´ÆðÀ´Ö¸ÏòHTMLÎÄ¼þµÄURLÊµ¼ÊÉÏ¿ÉÄÜÖ¸ÏòServlet»òJSPÒ³Ãæ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ³ýÁËÆÕÍ¨HTML´úÂëÖ®Íâ£¬Ç¶ÈëJSPÒ³ÃæµÄÆäËû³É·ÖÖ÷ÒªÓÐÈçÏÂÈýÖÖ£º½Å±¾ÔªËØ£¨Scripting Element£©£¬Ö¸Áî£¨Directive£©£¬¶¯×÷£¨Action£©¡£½Å±¾ÔªËØÓÃÀ´Ç¶ÈëJava´úÂë£¬ÕâÐ©Java´úÂë½«³ÉÎª×ª»»µÃµ½µÄServletµÄÒ»²¿·Ö£»JSPÖ¸ÁîÓÃÀ´´ÓÕûÌåÉÏ¿ØÖÆServletµÄ½á¹¹£»¶¯×÷ÓÃÀ´ÒýÈëÏÖÓÐµÄ×é¼þ»òÕß¿ØÖÆJSPÒýÇæµÄÐÐÎª¡£ÎªÁË¼ò»¯½Å±¾ÔªËØ£¬JSP¶¨ÒåÁËÒ»×é¿ÉÒÔÖ±½ÓÊ¹ÓÃµÄ±äÁ¿£¨Ô¤¶¨Òå±äÁ¿£©£¬±ÈÈçÇ°Ãæ´úÂëÆ¬¶ÏÖÐµÄrequest¾ÍÊÇÆäÖÐÒ»Àý¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ ×¢Òâ±¾ÎÄÒÔJSP 1.0¹æ·¶Îª»ù´¡¡£ºÍ0.92°æÏà±È£¬ÐÂ°æ±¾µÄJSP×÷ÁËÐí¶àÖØ´óµÄ¸Ä¶¯¡£ËäÈ»ÕâÐ©¸Ä¶¯Ö»»áÊ¹JSP±äµÃ¸üºÃ£¬µ«Ó¦×¢Òâ1.0µÄJSPÒ³Ãæ¼¸ºõºÍÔçÆÚµÄJSPÒýÇæÍêÈ«²»¼æÈÝ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 11.2 JSPÓï·¨¸ÅÒª±í JSPÔªËØ Óï·¨ ËµÃ÷ ±¸×¢ 
&nbsp;&nbsp;JSP±í´ïÊ½ £¼%= expression %£¾ ¼ÆËã±í´ïÊ½²¢Êä³ö½á¹û¡£ µÈ¼ÛµÄXML±í´ïÊÇ£º 
&nbsp;&nbsp;£¼jsp:expression£¾ 
&nbsp;&nbsp;expression 
&nbsp;&nbsp;£¼/jsp:expression£¾ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¿ÉÒÔÊ¹ÓÃµÄÔ¤¶¨Òå±äÁ¿°üÀ¨£ºrequest£¬response£¬out£¬session£¬application£¬config£¬pageContext¡£ÕâÐ©Ô¤¶¨Òå±äÁ¿Ò²¿ÉÒÔÔÚJSP ScriptletÖÐÊ¹ÓÃ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;JSP Scriptlet £¼% code %£¾ ²åÈëµ½service·½·¨µÄ´úÂë¡£ µÈ¼ÛµÄXML±í´ïÊÇ£º 
&nbsp;&nbsp;£¼jsp:scriptlet£¾ 
&nbsp;&nbsp;code 
&nbsp;&nbsp;£¼/jsp:scriptlet£¾ 
&nbsp;&nbsp; 
&nbsp;&nbsp;JSPÉùÃ÷ £¼%! code %£¾ ´úÂë±»²åÈëµ½ServletÀà£¨ÔÚservice·½·¨Ö®Íâ£©¡£ µÈ¼ÛµÄXML±í´ïÊÇ£º 
&nbsp;&nbsp;£¼jsp:declaration£¾ 
&nbsp;&nbsp;code 
&nbsp;&nbsp;£¼/jsp:declaration£¾ 
&nbsp;&nbsp; 
&nbsp;&nbsp;pageÖ¸Áî £¼%@ page att="val" %£¾ ×÷ÓÃÓÚServletÒýÇæµÄÈ«¾ÖÐÔÖ¸Áî¡£ µÈ¼ÛµÄXML±í´ïÊÇ 
&nbsp;&nbsp;£¼jsp:directive.page att="val"£Ü£¾¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;ºÏ·¨µÄÊôÐÔÈçÏÂ±í£¬ÆäÖÐ´ÖÌå±íÊ¾Ä¬ÈÏÖµ£º 
&nbsp;&nbsp; 
&nbsp;&nbsp;import="package.class" 
&nbsp;&nbsp;contentType="MIME-Type" 
&nbsp;&nbsp;isThreadSafe="true|false" 
&nbsp;&nbsp;session="true|false" 
&nbsp;&nbsp;buffer="size kb|none" 
&nbsp;&nbsp;autoflush="true|false" 
&nbsp;&nbsp;extends="package.class" 
&nbsp;&nbsp;info="message" 
&nbsp;&nbsp;errorPage="url" 
&nbsp;&nbsp;isErrorPage="true|false" 
&nbsp;&nbsp;language="java" 
&nbsp;&nbsp; 
&nbsp;&nbsp;includeÖ¸Áî £¼%@ include file="url" %£¾ µ±JSP×ª»»³ÉServletÊ±£¬Ó¦µ±°üº¬±¾µØÏµÍ³ÉÏµÄÖ¸¶¨ÎÄ¼þ¡£ µÈ¼ÛµÄXML±í´ïÊÇ£º 
&nbsp;&nbsp; 
&nbsp;&nbsp;£¼jsp:directive.include 
&nbsp;&nbsp;file="url"£Ü£¾. 
&nbsp;&nbsp; 
&nbsp;&nbsp;ÆäÖÐURL±ØÐëÊÇÏà¶ÔURL¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;ÀûÓÃjsp:include¶¯×÷¿ÉÒÔÔÚÇëÇóµÄÊ±ºò£¨¶ø²»ÊÇJSP×ª»»³ÉServletÊ±£©ÒýÈëÎÄ¼þ¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;JSP×¢ÊÍ £¼%-- comment --%£¾ ×¢ÊÍ£»JSP×ª»»³ÉServletÊ±±»ºöÂÔ¡£ Èç¹ûÒª°Ñ×¢ÊÍÇ¶Èë½á¹ûHTMLÎÄµµ£¬Ê¹ÓÃÆÕÍ¨µÄHTML×¢ÊÍ±ê¼Ç£¼-- comment --£¾¡£ 
&nbsp;&nbsp;jsp:include¶¯×÷ £¼jsp:include 
&nbsp;&nbsp;page="relative URL" 
&nbsp;&nbsp;flush="true"/£¾ µ±Servlet±»ÇëÇóÊ±£¬ÒýÈëÖ¸¶¨µÄÎÄ¼þ¡£ Èç¹ûÄãÏ£ÍûÔÚÒ³Ãæ×ª»»µÄÊ±ºò°üº¬Ä³¸öÎÄ¼þ£¬Ê¹ÓÃJSP includeÖ¸Áî¡£ 
&nbsp;&nbsp;×¢Òâ£ºÔÚÄ³Ð©·þÎñÆ÷ÉÏ£¬±»°üº¬ÎÄ¼þ±ØÐëÊÇHTMLÎÄ¼þ»òJSPÎÄ¼þ£¬¾ßÌåÓÉ·þÎñÆ÷¾ö¶¨£¨Í¨³£¸ù¾ÝÎÄ¼þÀ©Õ¹ÃûÅÐ¶Ï£©¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;jsp:useBean¶¯×÷ £¼jsp:useBean att=val*/£¾ »òÕß 
&nbsp;&nbsp;£¼jsp:useBean att=val*£¾ 
&nbsp;&nbsp;... 
&nbsp;&nbsp;£¼/jsp:useBean£¾ Ñ°ÕÒ»òÊµÀý»¯Ò»¸öJava Bean¡£ ¿ÉÄÜµÄÊôÐÔ°üÀ¨£º 
&nbsp;&nbsp;id="name" 
&nbsp;&nbsp;scope="page|request 
&nbsp;&nbsp;|session|application" 
&nbsp;&nbsp;class="package.class" 
&nbsp;&nbsp;type="package.class" 
&nbsp;&nbsp;beanName="package.class" 
&nbsp;&nbsp; 
&nbsp;&nbsp;jsp:setProperty¶¯×÷ £¼jsp:setProperty att=val*/£¾ ÉèÖÃBeanµÄÊôÐÔ¡£¼È¿ÉÒÔÉèÖÃÒ»¸öÈ·¶¨µÄÖµ£¬Ò²¿ÉÒÔÖ¸¶¨ÊôÐÔÖµÀ´×ÔÇëÇó²ÎÊý¡£ ºÏ·¨µÄÊôÐÔ°üÀ¨£º 
&nbsp;&nbsp;name="beanName" 
&nbsp;&nbsp;property="propertyName|*" 
&nbsp;&nbsp;param="parameterName" 
&nbsp;&nbsp;value="val" 
&nbsp;&nbsp; 
&nbsp;&nbsp;jsp:getProperty¶¯×÷ £¼jsp:getProperty 
&nbsp;&nbsp;name="propertyName" 
&nbsp;&nbsp;value="val"/£¾ ÌáÈ¡²¢Êä³öBeanµÄÊôÐÔ¡£ ¡¡ 
&nbsp;&nbsp;jsp:forward¶¯×÷ £¼jsp:forward 
&nbsp;&nbsp;page="relative URL"/£¾ °ÑÇëÇó×ªµ½ÁíÍâÒ»¸öÒ³Ãæ¡£ ¡¡ 
&nbsp;&nbsp;jsp:plugin¶¯×÷ £¼jsp:plugin 
&nbsp;&nbsp;attribute="value"*£¾ 
&nbsp;&nbsp;... 
&nbsp;&nbsp;£¼/jsp:plugin£¾ ¸ù¾Ýä¯ÀÀÆ÷ÀàÐÍÉú³ÉOBJECT»òÕßEMBED±ê¼Ç£¬ÒÔ±ãÍ¨¹ýJava PluginÔËÐÐJava Applet¡£ ¡¡ 
&nbsp;&nbsp; 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ 11.3 ¹ØÓÚÄ£°åÎÄ±¾£¨¾²Ì¬HTML£© 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ Ðí¶àÊ±ºò£¬JSPÒ³ÃæµÄºÜ´óÒ»²¿·Ö¶¼ÓÉ¾²Ì¬HTML¹¹³É£¬ÕâÐ©¾²Ì¬HTMLÒ²³ÆÎª¡°Ä£°åÎÄ±¾¡±¡£Ä£°åÎÄ±¾ºÍÆÕÍ¨HTML¼¸ºõÍêÈ«ÏàÍ¬£¬ËüÃÇ¶¼×ñ´ÓÏàÍ¬µÄÓï·¨¹æÔò£¬¶øÇÒÄ£°åÎÄ±¾Ò²ÊÇ±»ServletÖ±½Ó·¢ËÍµ½¿Í»§¶Ë¡£´ËÍâ£¬Ä£°åÎÄ±¾Ò²¿ÉÒÔÓÃÈÎºÎÏÖÓÐµÄÒ³ÃæÖÆ×÷¹¤¾ßÀ´±àÐ´¡£ 
&nbsp;&nbsp; 
&nbsp;&nbsp;¡¡¡¡ Î¨Ò»µÄÀýÍâÔÚÓÚ£¬Èç¹ûÒªÊä³ö¡°£¼%¡±£¬ÔòÄ£°åÎÄ±¾ÖÐÓ¦¸ÃÐ´³É¡°£¼£Ü%¡±¡£]]></description>
		</item>
		<item>
			<title>ÀûÓÃJSP½¨Á¢WebÕ¾µã</title>
			<link>http://www.kingmx.com/article.php?id=12327</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
JSPÊÇÓÉSunÎ¢ÏµÍ³¹«Ë¾ÓÚ1999Äê6ÔÂÍÆ³öµÄÒ»Ïî¼¼Êõ£¬ÊÇ»ùÓÚJavaServletÒÔ¼°Õû¸öjavaÌåÏµµÄWeb¿ª·¢¼¼Êõ£¬ÀûÓÃÕâÒ»¼¼Êõ¿ÉÒÔ½¨Á¢ÏÈ½ø¡¢°²È«ºÍ¿çÆ½Ì¨µÄ¶¯Ì¬ÍøÕ¾¡£
JSPÓëASP·Ç³£ÏàËÆ¡£Á½Õß¶¼Ìá¹©ÔÚHTML´úÂëÖÐ»ìºÏÄ³ÖÖ³ÌÐò´úÂë¡¢ÓÉÓïÑÔÒýÇæ½âÊÍÖ´ÐÐ³ÌÐò´úÂëµÄÄÜÁ¦¡£ÔÚASP»òJSP »·¾³ÏÂ£¬HTML´úÂëÖ÷Òª¸ºÔðÃèÊöÐÅÏ¢µÄÏÔÊ¾ÑùÊ½£¬¶ø³ÌÐò´úÂëÔòÓÃÀ´ÃèÊö´¦ÀíÂß¼­¡£ASPÏÂµÄ±à³ÌÓïÑÔÊÇ VBScript Ö®ÀàµÄ½Å±¾ÓïÑÔ£¬¶øJSP Ê¹ÓÃµÄÊÇJava¡£
TRS¼°ÆäJavaBeans
TRSÏµÍ³ÊÇ¹ú¼ÊÉÏµÚÒ»¸ö²ÉÓÃ¡°²¢ÐÐ¼ÆËã¡±Ëã·¨µÄÖÐÎÄÈ«ÎÄ¼ìË÷ÏµÍ³£¬ÆäÈ«ÎÄ¼ìË÷ÒýÇæ¿ÉÒÔÌá¹©¹ØÏµÐÍÊý¾Ý¿âËùÃ»ÓÐµÄÐÔÄÜ£¬²¢¿ÉÓë¹ØÏµÊý¾Ý¿âÐ­Í¬Ê¹ÓÃ£»ÒòÎªTRS¿É¶ÔÎÄ±¾ÄÚÈÝ½¨Á¢È«ÎÄË÷Òý£¬Ìá¹©¸ßÐ§µÄÈ«ÎÄ¼ìË÷¹¦ÄÜ¡£ËùÒÔÊ¹ÓÃTRS¿ÉÒÔ´ó´óÌá¸ßÍøÕ¾µÄ²éÑ¯ËÙ¶È¡£
TRS JavaBeansÊÇ»ùÓÚJava×é¼þ¼¼Êõ€€€€JavaBeans¿ª·¢µÄ£¬¾ßÓÐÁ¼ºÃµÄ¿çÆ½Ì¨ÌØÐÔ¡£±¾ÎÄ½«½éÉÜÀûÓÃJSP¡¢TRS¼°JavaBeans½¨Á¢Ò»¸öWebµÄ¹ý³Ì¡£
TRS JavaBeansÅäÖÃ²½Öè
¡¡¡¡ÒÔNTÏÂWebLogic5.1.0ÎªÀýËµÃ÷¡£
¡¡¡¡1.°²×°WebLogic5.1.0
¡¡¡¡2.ÐÞ¸ÄstartWebLogic.cmd
¡¡¡¡½«¡°set PRE_CLASSPATH=¡±¸ÄÎª¡°set PRE_CLASSPATH=%TRSBean.jarµÄÈ«Â·¾¶%;%TRSDemo.jarµÄÈ«Â·¾¶%¡±¡£
¡¡¡¡ÀýÈç£ºÈç¹ûTRSBean.jarÎ»ÓÚC:/TRSJavaBeans/lib/Ä¿Â¼ÏÂ,Ôò½«´ËÓï¾ä¸ÄÎª£º
¡¡¡¡set PRE_CLASSPATH=C:/TRSJavaBeans/lib/TRSBean.jar
¡¡¡¡3.ÐÞ¸Äweblogic.properties
¡¡¡¡½«Óï¾ä£º#weblogic.httpd.register.servlets=weblogic.servlet.ServletServletÇ°ÃæµÄ#ºÅÈ¥µô¡£ 
¡¡¡¡½«ÏÂÁÐÓï¾äÇ°µÄ¡°#¡±ºÅÈ¥µô£º

# weblogic.httpd.register.*.jsp=/
¡¡¡¡# weblogic.servlet.JSPServlet
¡¡¡¡#weblogic.httpd.initArgs.*.jsp=/
¡¡¡¡# pageCheckSeconds=1,/
¡¡¡¡# compileCommand=C:/java/bin/javac.exe,/
¡¡¡¡# workingDir=D:/weblogic/myserver/classfiles,/
¡¡¡¡# verbose=true

½Ó×Å½«¡°compileCommand=C:/java/bin/ javac.exe,/¡±¸ÄÎª¡°compileCommand=JAVA_ PATH/bin/javac.exe,/¡±£¬ÆäÖÐJAVA_PATHÎªÊµ¼ÊËùÓÃJDKµÄ°²×°¸ùÄ¿Â¼¡£
4.°²×°DEMO
½«TRSJavaBeans°²×°°üµÄDEMOÄ¿Â¼È«²¿¸´ÖÆµ½D:/weblogic/myserver/public_htmlÄ¿Â¼ÏÂ¡£
Íê³ÉÒÔÉÏÅäÖÃºó£¬ÎÒÃÇ¼´¿É½øÈëÉè¼Æ¿ª·¢½×¶Î¡£
¿ª·¢Ê¾Àý
ÉèÊý¾Ý¿âÎª:¡°news.Í¶×Ê¶¯Ì¬¡±,×Ö¶ÎÎª¡°±êÌâ¡±¡¢¡°ÄÚÈÝ¡±¡¢¡°ÈÕÆÚ¡±ºÍ¡°±àºÅ¡±(Î©Ò»ÐÔ×Ö¶Î)¡£
¡¡¡¡ÒÔÏÔÊ¾Ä³Ò»Ìõ¾ßÌå¼ÇÂ¼µÄÏêÏ¸ÄÚÈÝÎªÀý£¬ÖÁÓÚ·ÖÒ³ÏÔÊ¾¡¢È«ÎÄ¼ìË÷ºÍBBSµÈ£¬Æª·ùËùÏÞ£¬²»ÔÙ×¸Êö£¬¸ÐÐËÈ¤µÄÓÃ»§¿ÉÒÔ×Ô¼ºÊÔÒ»ÊÔ¡£Êµ¼ÊÔËÐÐ½á¹û¿ÉÒÔ²Î¿´Ò×ÐÅÍø£¨www.exin.net£©»ò±±¾©Í¶×ÊÆ½Ì¨£¨www.bjinvest.gov.cn£©¡£
jsp³ÌÐòÈçÏÂ£º

&lt;HTML&gt;
¡¡¡¡&lt;HEAD&gt;
¡¡¡¡&lt;TITLE&gt;ÐÂÎÅ&lt;/TITLE&gt;
¡¡¡¡&lt;link REL="stylesheet" href="mycss.css"TYPE="text/css"&gt;
¡¡¡¡&lt;META content="text/html; charset=GB2312"http-equiv=Content-Type&gt;
¡¡¡¡&lt;%@ page import="com.eprobiti.TRS.*"%&gt;
¡¡¡¡&lt;%@ page import="java.util.*"%&gt;
¡¡¡¡&lt;jsp:useBean id="TRSConn"scope ="session" class="com.eprobiti.TRS.TRSConnection"/&gt;
¡¡¡¡&lt;jsp:useBean id="TRSRS"scope ="page" class="com.eprobiti.TRS.TRSResultSet"/&gt;
¡¡¡¡&lt;/HEAD&gt;
¡¡¡¡&lt;BODY&gt;
¡¡¡¡&lt;%
¡¡¡¡String item_id=request.getParameter("id");
¡¡¡¡//²ÎÊýidÓÉURL»òÕßÇ°Ò»¸öÎÄ¼þµÄ±íµ¥Òþ²ØÓò´«¹ýÀ´
¡¡¡¡String dbname,ip,port,username,password;
¡¡¡¡dbname="news.±±¾©ÐÂÎÅ";
¡¡¡¡//TRSÊý¾Ý¿âÃû×Ö
¡¡¡¡ip="202.123.166.99"; //TRS·þÎñÆ÷IP
¡¡¡¡port="8888";//TRS·þÎñÆ÷¶Ë¿Ú
¡¡¡¡username="yourname";
¡¡¡¡// ¿ÉÒÔ¼ìË÷"news.±±¾©ÐÂÎÅ"µÄÓÃ»§Ãû
¡¡¡¡password="yourpassword";
¡¡¡¡// ¸ÃÓÃ»§Ãû¶ÔÓ¦µÄ¿ÚÁî
¡¡¡¡String filter="±àºÅ="+item_id;
¡¡¡¡//¶¨Òå¼ìË÷Ìõ¼þ
¡¡¡¡try {
¡¡¡¡ if (TRSConn.connect(ip,port,username,password)){ }
¡¡¡¡//½¨Á¢ÓëTRS·þÎñÆ÷µÄÁ¬½Ó
¡¡¡¡else {
¡¡¡¡ out.println("Connection Á¬½ÓÊ§°Ü£¡/n");
¡¡¡¡ }
¡¡¡¡ TRSRS=TRSConn.executeSelect(dbname,s1,"","", null, 0, 0, false);
¡¡¡¡// Ö´ÐÐ²éÑ¯²Ù×÷£¬Éú³É¼ÇÂ¼¼¯
¡¡¡¡ } catch(TRSException TRSe) {
¡¡¡¡ out.println("ResultSet Á¬½ÓÊ§°Ü£¡/n");
¡¡¡¡ }
¡¡¡¡try {
¡¡¡¡ TRSRS.moveFirst();
¡¡¡¡//¼ÇÂ¼¶¨Î»
¡¡¡¡%&gt;
¡¡¡¡&lt;p&gt;
¡¡¡¡&lt;center&gt;
¡¡¡¡&lt;table width=80%&gt;
¡¡¡¡&lt;tr align=center&gt;
¡¡¡¡&lt;td&gt;&lt;%=TRSRS.getString("±êÌâ")%&gt;
¡¡¡¡&lt;/td&gt;
¡¡¡¡&lt;/tr&gt;
¡¡¡¡&lt;tr align=center&gt;
¡¡¡¡&lt;td&gt;&lt;%=TRSRS.getString("ÈÕÆÚ")%&gt;
¡¡¡¡&lt;/td&gt;
¡¡¡¡&lt;/tr&gt;
¡¡¡¡&lt;tr&gt;
¡¡¡¡&lt;td&gt;&lt;%=TRSRS.getString("ÄÚÈÝ")%&gt;
¡¡¡¡&lt;/td&gt;
¡¡¡¡&lt;/tr&gt;
¡¡¡¡&lt;/table&gt;
¡¡¡¡&lt;/center&gt;
¡¡¡¡&lt;p&gt;
¡¡¡¡&lt;%
¡¡¡¡TRSRS.close();
¡¡¡¡} catch(TRSException TRSe) {}
¡¡¡¡%&gt;
¡¡¡¡&lt;/body&gt;
¡¡¡¡&lt;/html&gt;


]]></description>
		</item>
	</channel>
 </rss>
