﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-JAVA</title><link>http://www.blogjava.net/Jkallen/</link><description>    人生若只如初见，何事秋风悲画扇。</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 16:07:45 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 16:07:45 GMT</pubDate><ttl>60</ttl><item><title>是JVM导致Weblogic异常终止嘛？</title><link>http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Fri, 16 Oct 2009 00:58:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/298493.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/298493.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/298493.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 将ecslipse自动编译时生成的类的路径加入到Weblgoic的启动文件(startweblogic.cmd)中后，Weblogic启动异常.&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/298493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2009-10-16 08:58 <a href="http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>咨询一个自认为很奇怪的问题(在java中获取数据库连接时相关)</title><link>http://www.blogjava.net/Jkallen/archive/2008/07/15/215001.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Tue, 15 Jul 2008 08:28:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2008/07/15/215001.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/215001.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2008/07/15/215001.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/215001.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/215001.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">我用以下代码用来测试数据库连接是否正常：</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("start to registerDriver...");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DriverManager.registerDriver(new oracle.jdbc.OracleDriver());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info(pros.getProperty("dbURL")+"--"+pros.getProperty("user")+"--"+ pros.getProperty("password"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con = DriverManager.getConnection(pros.getProperty("dbURL"), pros.getProperty("user"), pros.getProperty("password"));;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (con != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st = con.createStatement();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = st.executeQuery("select 1 from dual");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rs.getInt(1) == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">然后我做了一个</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java application</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">桌面小应用程序（</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">extends FrameView</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">），在小应用程序中点击事件触发此段代码，如下：</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">private void dbTestMenuItemActionPerformed(java.awt.event.ActionEvent evt) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; //</span><span style="font-size: 10pt; color: maroon; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">从配置文件中读取连接相关属性</span><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br />
&nbsp;&nbsp;&nbsp; String info = "</span><span style="font-size: 10pt; color: maroon; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">数据库连接异常，请确认配置文件是参数是否正确。</span><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">";<br />
&nbsp;&nbsp;&nbsp; Properties per = new Properties();<br />
&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("start to test the db connection...");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; per.load(new FileInputStream(Content.configFile));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("system have loaded the config files successfully");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DbOper db = new DbOper();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (db.checkDBConnect(per)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info = "</span><span style="font-size: 10pt; color: maroon; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">数据库连接正常</span><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("</span><span style="font-size: 10pt; color: maroon; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">数据连接测试结果：</span><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">" + info);<br />
&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.error("Exception when test the DB connection, ",e);<br />
&nbsp;&nbsp;&nbsp; }</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp; if (aboutBox == null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JFrame mainFrame = AnalyseExcelApp.getApplication().getMainFrame();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aboutBox = new DBTestResultBox(mainFrame, info);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aboutBox.setLocationRelativeTo(mainFrame);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; AnalyseExcelApp.getApplication().show(aboutBox);<br />
}</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">但在运行时，程序头也不回地直接死了，调试时发现程序是在</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">con = DriverManager.getConnection(pros.getProperty("dbURL"), pros.getProperty("user"), pros.getProperty("password"));;<br />
</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这一行，不行了，也不报错，就直接在此行一直呆着，啥也不做</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">...</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">另外还有二种情况，也让我比较奇怪：</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1. </span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">若同样调用此段测试代码，但不是在</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java application</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中，而是直接在一个普通的</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类的</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">main</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">方法中，测可以测试通过。</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2. </span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">若数据库边的是本机的数据库，那么此段测试代码也可以通过，在</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java application</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">与</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类的</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">main</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">方法中均可以。</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">为什么，连接远程数据时，在</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java application</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中会无故</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">down</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">掉呢？</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">ps. </span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">排除数据库地址，用户名，密码等错误；我的JDBC驱动是ojdbc14.jar，JDK 1.5</span></p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/215001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2008-07-15 16:28 <a href="http://www.blogjava.net/Jkallen/archive/2008/07/15/215001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再次握手log4j</title><link>http://www.blogjava.net/Jkallen/archive/2008/07/11/214155.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 10 Jul 2008 23:42:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2008/07/11/214155.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/214155.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2008/07/11/214155.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/214155.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/214155.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; &nbsp;&nbsp;&nbsp;由于自己工作性质发生了些变化，人随境迁，回首时，发现真的是岁月如梭，时光如水。弹指间，从研发到维护，从总部到出差已经是四月有余了。在维护系统时，难免会时不时地跟代码再次打些交道。今天想再操刀做个小工具时，居然不太记得了log4j的配置，不得不从apache再重新down了相关的jar与DOC，匆匆看看了一下，快点写下来，日后肯定还用得着，同...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2008/07/11/214155.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/214155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2008-07-11 07:42 <a href="http://www.blogjava.net/Jkallen/archive/2008/07/11/214155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax拾荒</title><link>http://www.blogjava.net/Jkallen/archive/2007/04/11/109882.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Wed, 11 Apr 2007 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2007/04/11/109882.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/109882.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2007/04/11/109882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/109882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/109882.html</trackback:ping><description><![CDATA[<p>用ajax有段时间了总结一下：<br><br>用xmlhttp去server取数据的时候,有如下二种方法<br>1:在server端通过response向流里写数据<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_72_385_Open_Image onclick="this.style.display='none'; Codehighlighter1_72_385_Open_Text.style.display='none'; Codehighlighter1_72_385_Closed_Image.style.display='inline'; Codehighlighter1_72_385_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_72_385_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_72_385_Closed_Text.style.display='none'; Codehighlighter1_72_385_Open_Image.style.display='inline'; Codehighlighter1_72_385_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;sendMsg2Stream(HttpServletResponse&nbsp;response,String&nbsp;message)</span><span id=Codehighlighter1_72_385_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_72_385_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_79_335_Open_Image onclick="this.style.display='none'; Codehighlighter1_79_335_Open_Text.style.display='none'; Codehighlighter1_79_335_Closed_Image.style.display='inline'; Codehighlighter1_79_335_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_79_335_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_79_335_Closed_Text.style.display='none'; Codehighlighter1_79_335_Open_Image.style.display='inline'; Codehighlighter1_79_335_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span id=Codehighlighter1_79_335_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_79_335_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">charset</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">gb2312</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cache-Control</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">no-cache</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Pragma</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">no-cache</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;response.setContentType(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/xml</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;response.getOutputStream().write(StringUtil.getUTF8Bytes(message));<br><img id=Codehighlighter1_354_382_Open_Image onclick="this.style.display='none'; Codehighlighter1_354_382_Open_Text.style.display='none'; Codehighlighter1_354_382_Closed_Image.style.display='inline'; Codehighlighter1_354_382_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_354_382_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_354_382_Closed_Text.style.display='none'; Codehighlighter1_354_382_Open_Image.style.display='inline'; Codehighlighter1_354_382_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception&nbsp;e)</span><span id=Codehighlighter1_354_382_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_354_382_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;e.printStackTrace();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;}</span></span></div>
<p><br>&nbsp;<br>&nbsp;StringUtil.getUTF8Bytes是自写的一个类，因为xmlhttp中传数据的时候默认是UTF-8传的。<br>&nbsp;这样可以防止乱码出现。<br>&nbsp;<br>&nbsp;在客户端JS中：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_42_135_Open_Image onclick="this.style.display='none'; Codehighlighter1_42_135_Open_Text.style.display='none'; Codehighlighter1_42_135_Closed_Image.style.display='inline'; Codehighlighter1_42_135_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_42_135_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_42_135_Closed_Text.style.display='none'; Codehighlighter1_42_135_Open_Image.style.display='inline'; Codehighlighter1_42_135_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;function&nbsp;finishedAction(originalRequest)</span><span id=Codehighlighter1_42_135_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_42_135_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;res&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;originalRequest.responseText;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">当然也可以返回xml</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">dbrglqx</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).innerHTML&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;res;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>&nbsp;<br>在server中假如返回一些字符串这样很方便，但如何想动态组合成一些list的option时，可能不太方便了，<br>这时可以通过JS的eval方法直接取一个页面内容。具体如下：<br>在server中返回的是一个页面，如在spring MVC中可能如下：<br>return new ModelAndView("redirect:data.html");<br>在返回前主可以做一些别的手术，典型的如request.setAttribute(name,value);<br>然后在JSP中进行解剖,如JSP中(这种情况下，把它当时在js文件就OK了)：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Pragma</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">No-cache</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cache-Control</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">no-cache</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;response.setDateHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Expires</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">%&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>var&nbsp;targetOrgObj</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.myForm.targetOrgId;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>var&nbsp;optionsCount</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">targetOrgObj.options.length;<br><img id=Codehighlighter1_270_303_Open_Image onclick="this.style.display='none'; Codehighlighter1_270_303_Open_Text.style.display='none'; Codehighlighter1_270_303_Closed_Image.style.display='inline'; Codehighlighter1_270_303_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_270_303_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_270_303_Closed_Text.style.display='none'; Codehighlighter1_270_303_Open_Image.style.display='inline'; Codehighlighter1_270_303_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(var&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">optionsCount</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_270_303_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_270_303_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;targetOrgObj.options[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">c:forEach&nbsp;var</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">varValue</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;items</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">${values}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;var&nbsp;oOption</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.createElement(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">option</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img id=Codehighlighter1_427_444_Open_Image onclick="this.style.display='none'; Codehighlighter1_427_444_Open_Text.style.display='none'; Codehighlighter1_427_444_Closed_Image.style.display='inline'; Codehighlighter1_427_444_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_427_444_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_427_444_Closed_Text.style.display='none'; Codehighlighter1_427_444_Open_Image.style.display='inline'; Codehighlighter1_427_444_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;oOption.text</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;c:out&nbsp;value=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">$</span><span id=Codehighlighter1_427_444_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_427_444_Open_Text><span style="COLOR: #000000">{varValue.orgName}</span></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;/&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_483_498_Open_Image onclick="this.style.display='none'; Codehighlighter1_483_498_Open_Text.style.display='none'; Codehighlighter1_483_498_Closed_Image.style.display='inline'; Codehighlighter1_483_498_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_483_498_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_483_498_Closed_Text.style.display='none'; Codehighlighter1_483_498_Open_Image.style.display='inline'; Codehighlighter1_483_498_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;oOption.value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;c:out&nbsp;value=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">$</span><span id=Codehighlighter1_483_498_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_483_498_Open_Text><span style="COLOR: #000000">{varValue.orgId}</span></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">c:</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;test</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">${id==6}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">c:</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;test</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">${varValue.departmentCode&nbsp;==&nbsp;currentMeterRd}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;oOption.selected</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><img src="http://www.blogjava.net/Images/dot.gif">&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>&nbsp;</p>
<p>myForm的定义要弄清楚，它应该在你所(发送)请求的页面的document里的对象 </p>
<p>JS中(没什么好想的)<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_38_78_Open_Image onclick="this.style.display='none'; Codehighlighter1_38_78_Open_Text.style.display='none'; Codehighlighter1_38_78_Closed_Image.style.display='inline'; Codehighlighter1_38_78_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_38_78_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_38_78_Closed_Text.style.display='none'; Codehighlighter1_38_78_Open_Image.style.display='inline'; Codehighlighter1_38_78_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;showResponse(originalRequest)</span><span id=Codehighlighter1_38_78_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_38_78_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;eval(originalRequest.responseText);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>&nbsp;<br>其它：<br>以上都是通过xmlhttp来用AJAX的，这样可以通过参数直接控制同步还是异步。<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">var&nbsp;dbgl&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Ajax.Request(<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;uri,&nbsp;<br><img id=Codehighlighter1_39_199_Open_Image onclick="this.style.display='none'; Codehighlighter1_39_199_Open_Text.style.display='none'; Codehighlighter1_39_199_Closed_Image.style.display='inline'; Codehighlighter1_39_199_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_39_199_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_39_199_Closed_Text.style.display='none'; Codehighlighter1_39_199_Open_Image.style.display='inline'; Codehighlighter1_39_199_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;</span><span id=Codehighlighter1_39_199_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_39_199_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;method:&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">get</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;parameters:&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">method=getYearFhqx&amp;userId=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">userId</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&amp;timeStamp=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">+</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Date().getTime(),<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;asynchronous:&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;onComplete:&nbsp;showResponse<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>&nbsp;&nbsp;<br>最近用DWR用感觉不错，挺好的！它的util中还提供了不少的有用 &amp; 常用的方法。不过一直不知道DWR中如何同步传输，今天找到了：<br>在DWR的engine.js文件，有setAsync方法，就是设置调用是否是同步的，还是异步的。</p>
<p>js 代码<br>&nbsp;<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">DWREngine.setAsync(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><img src="http://www.blogjava.net/Images/dot.gif">&nbsp;<img src="http://www.blogjava.net/Images/dot.gif">&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>DWREngine.setAsync(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);</span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/109882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2007-04-11 13:53 <a href="http://www.blogjava.net/Jkallen/archive/2007/04/11/109882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在servlet JSP applet与JS之间穿梭</title><link>http://www.blogjava.net/Jkallen/archive/2007/03/30/107373.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 29 Mar 2007 21:47:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2007/03/30/107373.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/107373.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2007/03/30/107373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/107373.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/107373.html</trackback:ping><description><![CDATA[
		<font color="#000080">　　一直想来涂些东西，越来越感觉自己好多好多东西都不懂，懂的东西又好肤浅！惭愧！惭愧！<br /><br />  　这儿涂些关于applet的东西。时间不多，希望涂完后还可以休息下，开始吧：<br /><br />　　首先自己做一个applet，然后打成JAR包(在Eclipse中可以用<font color="#ff0000"><b><a target="_blank" title="fatjar" href="http://fjep.sourceforge.net">fatjar</a></b></font>这个插件来完成)这里涉及到给applet签名：<br /><br />　　如何给applet签名(参考)：<br /><br />　　没有经过数字签名的Applet在默认情况下没有写本地文件的权限。那么让我们准备签名代码吧。<br />首先用keytool命令产生用来签名的key。下面这个命令产生一个叫"mykey"的key，它存储在我们新建的叫"mystore"的keystore中。<br /><br />　　keytool -genkey -alias mykey -keystore mystore<br /><br />　　接下来它会问一些问题包括keystore的密码，key的密码等，如下所示：<br /><br />　　输入keystore密码：  storepass<br />　　您的名字与姓氏是什么？<br />  　　[Unknown]：  AYellow<br />　　您的组织单位名称是什么？<br />  　　[Unknown]：  我的组织单位<br />　　您的组织名称是什么？<br />  　　[Unknown]：  我的组织<br />　　您所在的城市或区域名称是什么？<br />  　　[Unknown]：  北京<br />　　您所在的州或省份名称是什么？<br />  　　[Unknown]：  北京<br />　　该单位的两字母国家代码是什么<br />　　  [Unknown]：  CN<br />　　CN=AYellow, OU=我的组织单位, O=我的组织, L=北京, ST=北京, C=CN 正确吗？<br />　　  [否]：  Y<br /><br />　　输入&lt;mykey&gt;的主密码<br />        （如果和 keystore 密码相同，按回车）：  keypass<br /><br />　　完成后会在当前目录下生成一个叫mystore的文件，这个文件包含了我们的key。用jarsigner命令签名我们的代码test.jar（需要输入keystore和key的密码）：<br /><br />　　</font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font color="#000080">
						<span style="color: rgb(0, 0, 0);">jarsigner </span>
						<span style="color: rgb(0, 0, 0);">-</span>
						<span style="color: rgb(0, 0, 0);">keystore mystore myJarName.jar mykey<br /><br />　　Enter Passphrase </span>
						<span style="color: rgb(0, 0, 255);">for</span>
						<span style="color: rgb(0, 0, 0);"> keystore: storepass<br />　　Enter key password </span>
						<span style="color: rgb(0, 0, 255);">for</span>
						<span style="color: rgb(0, 0, 0);"> mykey: keypass</span>
				</font>
		</div>
		<font color="#000080">
				<br />
				<br />　　再次运行Applet，在Applet加载的时候会出现一个对话框，说该Applet由不可信任的发行者签名并宣称代码是安全的，是不是要对Applet授权。选择"授权于会话"，然后点击我们的按钮，看看是不是成功的创建了文件？<br /><br />　　辅助:写一个CLASS，通过其可在applet中调用JSP中的JS代码<br /></font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font color="#000080">
						<span style="color: rgb(0, 0, 255);">public</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">class</span>
						<span style="color: rgb(0, 0, 0);"> CallJavascript {<br />    </span>
						<span style="color: rgb(0, 0, 255);">public</span>
						<span style="color: rgb(0, 0, 0);"> CallJavascript() {<br />    }<br /><br />    </span>
						<span style="color: rgb(0, 128, 0);">/**</span>
						<span style="color: rgb(0, 128, 0);">
								<br />     *<br />     * </span>
						<span style="color: rgb(128, 128, 128);">@param</span>
						<span style="color: rgb(0, 128, 0);"> ob Object 这是一个applet对象<br />     * </span>
						<span style="color: rgb(128, 128, 128);">@param</span>
						<span style="color: rgb(0, 128, 0);"> str String<br />     </span>
						<span style="color: rgb(0, 128, 0);">*/</span>
						<span style="color: rgb(0, 0, 0);">
								<br />    </span>
						<span style="color: rgb(0, 0, 255);">public</span>
						<span style="color: rgb(0, 0, 0);"> String callJs(Object ob, String str) {<br />        String jscmd </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> str;<br />        System.out.println(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">javasriptL</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">+</span>
						<span style="color: rgb(0, 0, 0);"> str);<br />        String jsresult </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />        </span>
						<span style="color: rgb(0, 0, 255);">boolean</span>
						<span style="color: rgb(0, 0, 0);"> success </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">false</span>
						<span style="color: rgb(0, 0, 0);">;<br />        </span>
						<span style="color: rgb(0, 0, 255);">try</span>
						<span style="color: rgb(0, 0, 0);"> {<br />            Method getw </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">, eval </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />            Object jswin </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />            Class c </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> Class.forName(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">netscape.javascript.JSObject</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);<br />            </span>
						<span style="color: rgb(0, 128, 0);">/*</span>
						<span style="color: rgb(0, 128, 0);"> does it in IE too </span>
						<span style="color: rgb(0, 128, 0);">*/</span>
						<span style="color: rgb(0, 0, 0);">
								<br />            Method ms[] </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> c.getMethods();<br />            </span>
						<span style="color: rgb(0, 0, 255);">for</span>
						<span style="color: rgb(0, 0, 0);"> (</span>
						<span style="color: rgb(0, 0, 255);">int</span>
						<span style="color: rgb(0, 0, 0);"> i </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">0</span>
						<span style="color: rgb(0, 0, 0);">; i </span>
						<span style="color: rgb(0, 0, 0);">&lt;</span>
						<span style="color: rgb(0, 0, 0);"> ms.length; i</span>
						<span style="color: rgb(0, 0, 0);">++</span>
						<span style="color: rgb(0, 0, 0);">) {<br />                </span>
						<span style="color: rgb(0, 0, 255);">if</span>
						<span style="color: rgb(0, 0, 0);"> (ms[i].getName().compareTo(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">getWindow</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">) </span>
						<span style="color: rgb(0, 0, 0);">==</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">0</span>
						<span style="color: rgb(0, 0, 0);">)<br />                    getw </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> ms[i];<br />                </span>
						<span style="color: rgb(0, 0, 255);">else</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">if</span>
						<span style="color: rgb(0, 0, 0);"> (ms[i].getName().compareTo(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">eval</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">) </span>
						<span style="color: rgb(0, 0, 0);">==</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">0</span>
						<span style="color: rgb(0, 0, 0);">)<br />                    eval </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> ms[i];<br />            }<br /><br />            Object a[] </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> Object[</span>
						<span style="color: rgb(0, 0, 0);">1</span>
						<span style="color: rgb(0, 0, 0);">];<br />            a[</span>
						<span style="color: rgb(0, 0, 0);">0</span>
						<span style="color: rgb(0, 0, 0);">] </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> ob; </span>
						<span style="color: rgb(0, 128, 0);">/*</span>
						<span style="color: rgb(0, 128, 0);"> this is the applet </span>
						<span style="color: rgb(0, 128, 0);">*/</span>
						<span style="color: rgb(0, 0, 0);">
								<br />            jswin </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> getw.invoke(c, a); </span>
						<span style="color: rgb(0, 128, 0);">/*</span>
						<span style="color: rgb(0, 128, 0);"> this yields the JSObject </span>
						<span style="color: rgb(0, 128, 0);">*/</span>
						<span style="color: rgb(0, 0, 0);">
								<br />            a[</span>
						<span style="color: rgb(0, 0, 0);">0</span>
						<span style="color: rgb(0, 0, 0);">] </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> jscmd;<br />            Object result </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> eval.invoke(jswin, a);<br />            </span>
						<span style="color: rgb(0, 0, 255);">if</span>
						<span style="color: rgb(0, 0, 0);">(result</span>
						<span style="color: rgb(0, 0, 0);">!=</span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">){<br />                </span>
						<span style="color: rgb(0, 0, 255);">if</span>
						<span style="color: rgb(0, 0, 0);"> (result </span>
						<span style="color: rgb(0, 0, 255);">instanceof</span>
						<span style="color: rgb(0, 0, 0);"> String){<br />                    jsresult </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> (String) result;<br />                }</span>
						<span style="color: rgb(0, 0, 255);">else</span>
						<span style="color: rgb(0, 0, 0);">{<br />                    jsresult </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> result.toString();<br />                }<br />            }<br />            <br />            success </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">true</span>
						<span style="color: rgb(0, 0, 0);">;<br />        }</span>
						<span style="color: rgb(0, 0, 255);">catch</span>
						<span style="color: rgb(0, 0, 0);"> (InvocationTargetException ite) {<br />            ite.printStackTrace();<br />            jsresult </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">""</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">+</span>
						<span style="color: rgb(0, 0, 0);"> ite.getTargetException();<br />        } </span>
						<span style="color: rgb(0, 0, 255);">catch</span>
						<span style="color: rgb(0, 0, 0);"> (Exception ex) {<br />            ex.printStackTrace();<br />            jsresult </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">""</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">+</span>
						<span style="color: rgb(0, 0, 0);"> ex;<br />        }<br /><br />        </span>
						<span style="color: rgb(0, 0, 255);">if</span>
						<span style="color: rgb(0, 0, 0);"> (success){<br />            System.out.println(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">eval succeeded, result is </span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">+</span>
						<span style="color: rgb(0, 0, 0);"> jsresult);<br />        }</span>
						<span style="color: rgb(0, 0, 255);">else</span>
						<span style="color: rgb(0, 0, 0);">{<br />            System.out.println(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">eval failed with error </span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 0);">+</span>
						<span style="color: rgb(0, 0, 0);"> jsresult);<br />        }<br />        </span>
						<span style="color: rgb(0, 0, 255);">return</span>
						<span style="color: rgb(0, 0, 0);"> jsresult;<br />    }<br />}</span>
				</font>
		</div>
		<font color="#000080">
				<br />
				<br />　　可以看到其中主要用到了netscape.javascript.JSObject这个object（&lt;%=jdk_home%&gt;\jre\lib\plugin.jar(jdk1.5)），它允许 Java 代码访问 JavaScript 方法和属性<br />主要通过反射用到了JsObject的getWindow与evel二个方法来完成此类<br />JSObject主要方法如下：<br /></font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font color="#000080">
						<span style="color: rgb(0, 0, 0);">Method         描述<br />call               Calls a JavaScript 方法<br />eval              Evaluates a JavaScript expression<br />getMember         Retrieves a named member of a JavaScript object<br />getSlot          Retrieves an indexed member of a JavaScript object<br />removeMember    Removes a named member of a JavaScript object<br />setMember          Sets a named member of a JavaScript object<br />setSlot          Sets an indexed member of a JavaScript object<br />toString          Converts a JSObject to a string</span>
				</font>
		</div>
		<font color="#000080">
				<br />
				<br />　　可想而知，用CallJS就如下所示了：<br /></font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font color="#000080">
						<span style="color: rgb(0, 0, 0);">CallJavascript calljs </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> CallJavascript();<br />String type </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> calljs.callJs(</span>
						<span style="color: rgb(0, 0, 255);">this</span>
						<span style="color: rgb(0, 0, 0);">, </span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">document.pmMstForm.type.value;</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);<br />or<br />calljs.callJs(</span>
						<span style="color: rgb(0, 0, 255);">this</span>
						<span style="color: rgb(0, 0, 0);">, </span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">waiting()</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);</span>
				</font>
		</div>
		<font color="#000080">
				<br />
				<br />
				<br />　　如何通过APPLET与Servlet通信，这个很简单了。因为applet本来就是一个jar包了。不过，将欲传输的对象序列化到流里面(较大些的，<br />如持久化对象)，也可以放到一个请求(request)中(相对较小的字符串等)。如下所示：<br /><br /></font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font color="#000080">
						<span style="color: rgb(0, 0, 255);">import</span>
						<span style="color: rgb(0, 0, 0);"> java.net.URL;<br /></span>
						<span style="color: rgb(0, 0, 255);">import</span>
						<span style="color: rgb(0, 0, 0);"> java.net.URLConnection;<br /></span>
						<span style="color: rgb(0, 0, 255);">import</span>
						<span style="color: rgb(0, 0, 0);"> java.io.ObjectInputStream;<br /></span>
						<span style="color: rgb(0, 0, 255);">import</span>
						<span style="color: rgb(0, 0, 0);"> java.io.IOException;<br /></span>
						<span style="color: rgb(0, 0, 255);">import</span>
						<span style="color: rgb(0, 0, 0);"> java.util.Map;<br /></span>
						<span style="color: rgb(0, 0, 255);">import</span>
						<span style="color: rgb(0, 0, 0);"> java.io.ObjectOutputStream;<br /></span>
						<span style="color: rgb(0, 0, 255);">import</span>
						<span style="color: rgb(0, 0, 0);"> java.util.List;<br /></span>
						<span style="color: rgb(0, 0, 255);">import</span>
						<span style="color: rgb(0, 0, 0);"> java.util.Iterator;<br /><br /></span>
						<span style="color: rgb(0, 128, 0);">/**</span>
						<span style="color: rgb(0, 128, 0);">
								<br /> *<br /> * &lt;p&gt;Title:&lt;/p&gt;<br /> *<br /> * &lt;p&gt;Description: &lt;/p&gt;<br /> *<br /> * &lt;p&gt;Copyright: Copyright (c) 2006&lt;/p&gt;<br /> *<br /> * &lt;p&gt;Company: &lt;/p&gt;<br /> *<br /> * </span>
						<span style="color: rgb(128, 128, 128);">@author</span>
						<span style="color: rgb(0, 128, 0);"> not attributable<br /> * </span>
						<span style="color: rgb(128, 128, 128);">@version</span>
						<span style="color: rgb(0, 128, 0);"> 1.0<br /> </span>
						<span style="color: rgb(0, 128, 0);">*/</span>
						<span style="color: rgb(0, 0, 0);">
								<br />
						</span>
						<span style="color: rgb(0, 0, 255);">public</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">class</span>
						<span style="color: rgb(0, 0, 0);"> DataTransferUtil {<br />    </span>
						<span style="color: rgb(0, 0, 255);">public</span>
						<span style="color: rgb(0, 0, 0);"> DataTransferUtil() {<br />    }<br /><br />    </span>
						<span style="color: rgb(0, 0, 255);">public</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">static</span>
						<span style="color: rgb(0, 0, 0);"> Map getData(Map paraMap, List list, URL strURL) {<br /><br />        URL url </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />        URLConnection urlcon </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />        ObjectInputStream ois </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />        ObjectOutputStream oos </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />        </span>
						<span style="color: rgb(0, 0, 255);">try</span>
						<span style="color: rgb(0, 0, 0);"> {<br />            url </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> strURL;<br />            urlcon </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> url.openConnection();<br />            Iterator iter </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> paraMap.keySet().iterator();<br />            </span>
						<span style="color: rgb(0, 0, 255);">while</span>
						<span style="color: rgb(0, 0, 0);"> (iter.hasNext()) {<br />                String key </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> (String) iter.next();<br />                urlcon.addRequestProperty(key, (String) paraMap.get(key));<br />            }<br />            urlcon.setUseCaches(</span>
						<span style="color: rgb(0, 0, 255);">false</span>
						<span style="color: rgb(0, 0, 0);">);<br />            urlcon.setDoInput(</span>
						<span style="color: rgb(0, 0, 255);">true</span>
						<span style="color: rgb(0, 0, 0);">);<br />            urlcon.setDoOutput(</span>
						<span style="color: rgb(0, 0, 255);">true</span>
						<span style="color: rgb(0, 0, 0);">);<br /><br />            urlcon.setRequestProperty(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">Content-type</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">, </span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">application/octest-stream</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);<br />            oos </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> ObjectOutputStream(urlcon.getOutputStream());<br />            oos.writeObject(list);<br />            </span>
						<span style="color: rgb(0, 0, 255);">if</span>
						<span style="color: rgb(0, 0, 0);"> (oos </span>
						<span style="color: rgb(0, 0, 0);">!=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">) {<br />                oos.flush();<br />                oos.close();<br />            }<br /><br />            ois </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> ObjectInputStream(urlcon.getInputStream());</span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">开始取得servlet中返回的数据</span>
						<span style="color: rgb(0, 128, 0);">
								<br />
						</span>
						<span style="color: rgb(0, 0, 0);">
								<br />            Map mapRtn </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> (Map) ois.readObject();<br /><br />            </span>
						<span style="color: rgb(0, 0, 255);">return</span>
						<span style="color: rgb(0, 0, 0);"> mapRtn;<br /><br />        } </span>
						<span style="color: rgb(0, 0, 255);">catch</span>
						<span style="color: rgb(0, 0, 0);"> (IOException ioe) {<br />            ioe.printStackTrace();<br />            </span>
						<span style="color: rgb(0, 0, 255);">return</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />        } </span>
						<span style="color: rgb(0, 0, 255);">catch</span>
						<span style="color: rgb(0, 0, 0);"> (ClassNotFoundException cnfe) {<br />            cnfe.printStackTrace();<br />            </span>
						<span style="color: rgb(0, 0, 255);">return</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />        } </span>
						<span style="color: rgb(0, 0, 255);">finally</span>
						<span style="color: rgb(0, 0, 0);"> {<br />            </span>
						<span style="color: rgb(0, 0, 255);">try</span>
						<span style="color: rgb(0, 0, 0);"> {<br />                </span>
						<span style="color: rgb(0, 0, 255);">if</span>
						<span style="color: rgb(0, 0, 0);"> (ois </span>
						<span style="color: rgb(0, 0, 0);">!=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">) {<br />                    ois.close();<br />                }<br />            } </span>
						<span style="color: rgb(0, 0, 255);">catch</span>
						<span style="color: rgb(0, 0, 0);"> (IOException ioe) {<br />                ioe.printStackTrace();<br />            }<br />        }<br />    }<br />}</span>
				</font>
		</div>
		<font color="#000080">
				<br />
				<br />　　应用的时候可以如下：<br /></font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font color="#000080">
						<span style="color: rgb(0, 0, 0);">DataTransferUtil util</span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> DataTransferUtil();<br />Map paraMap</span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> HashMap();<br />paraMap.put(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">method</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">,</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">import</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);<br />Map map</span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);">util.getData(paraMap,list,url);</span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">取得servlet返回的数据（经过封装）</span>
				</font>
		</div>
		<font color="#000080">
				<br />
				<br />　　这儿第二个参数放了一个LIST，可以根据具体情况使用。只是到了Servet端的servlet获取的时候做相应的处理就OK了（马上可以看到）。<br />这样applet就把数据传输到url的servlet中去了。<br />servlet中发生了些什么呢？<br /><br /></font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font color="#000080">
						<span style="color: rgb(0, 0, 0);">response.setContentType(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">application/octest-stream</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);<br />        </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">req.setCharacterEncoding("gb2312");</span>
						<span style="color: rgb(0, 128, 0);">
								<br />
						</span>
						<span style="color: rgb(0, 0, 0);">        log.debug(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">is handlRequest<img src="http://www.blogjava.net/images/dot.gif" />.</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);<br />        </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">准备传输数据</span>
						<span style="color: rgb(0, 128, 0);">
								<br />
						</span>
						<span style="color: rgb(0, 0, 0);">        ObjectOutputStream oos </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />        ObjectInputStream ois </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">;<br />        Map rtnMap </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> HashMap();<br /><br /><br />        </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">执行方法</span>
						<span style="color: rgb(0, 128, 0);">
								<br />
						</span>
						<span style="color: rgb(0, 0, 0);">        </span>
						<span style="color: rgb(0, 0, 255);">try</span>
						<span style="color: rgb(0, 0, 0);"> {<br />            String method </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> (String)request.getHeader(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">method</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);<br />            ois </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> ObjectInputStream(</span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> BufferedInputStream(request.getInputStream()));<br />            <img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" />.</span>
				</font>
		</div>
		<font color="#000080">
				<br />            <br />　　呵呵，放在request中的数据request.getHeader取了出来，流中的数据也取了出来。<br />　　最后要想往applet中返回结果，则同样做如下处理即可：<br /><br /></font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font color="#000080">
						<span style="color: rgb(0, 0, 0);">oos </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> ObjectOutputStream(response.getOutputStream());<br />oos.writeObject(rtnMap);   </span>
				</font>
		</div>
		<font color="#000080">  <br /><br />  　OK， 差不多啦！序列化也要注意些问题，如对象类型，前后顺序。 <br /><br /><br />　　小结：通过以上，可以实现如下功能：<br />　　1：将做好的APPLET打成JAR包后，通过签名可以将其工嵌入到JSP中运行。<br />　　2: 就可以实现在applet中调用JSP中JS，对程序做出相应的处理。<br />　　3: 数据在applet与servelt通信。<br /><br />  　最后我们就可以在JSP Applet与Servlet三者之间就以放心地跑了。<br /><br /><br />　　做项目过程看到的好的代码丢了还真舍不得！写得比较急，可能有蛮多的地方连语句都不通。敬请谅解!<br />    <br />    近来加班狂多(现在天都已经亮了，相信也有不少同仁跟我一样)，又不能上网！都好几个月没更新了。挺想念这儿的，真的！愿与君共勉!<br /><br /><br /><br /><br /><br /></font>
<img src ="http://www.blogjava.net/Jkallen/aggbug/107373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2007-03-30 05:47 <a href="http://www.blogjava.net/Jkallen/archive/2007/03/30/107373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在HQL中绕过中文乱码查询</title><link>http://www.blogjava.net/Jkallen/archive/2006/10/13/74946.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Fri, 13 Oct 2006 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/10/13/74946.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/74946.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/10/13/74946.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/74946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/74946.html</trackback:ping><description><![CDATA[
		<p>　　以下是我在hibernate查询(通过Spring)中碰到的一个小问题及其解决方法，简单但实用，希望也有益于各同友。　<br /><br />　　在用hibernate查询中假如用到一个带中文的参数，如：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">String hql </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">from Customer user where 1=1 and userr.mc like '%惠止南国%'</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Session session </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> getHibernateTemplate().getSessionFactory().openSession();</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">Spring</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">Transaction tx </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> session.beginTransaction();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Query qry </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> session.createQuery(sql);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />List returnList </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> qry.list();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />tx.commit();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />session.close();</span>
		</div>
		<p>
				<br />　　在执行过程中在eclpise的console台中可以看到hibernate经过底层将其译成SQL后成了:<br /><br />　　select ... from Customer user  where 1=1 and userr.hh like '%??????%'<br /><br />　　的样子。我试过将其以不同的方式编码，可是都没有将其最终以正确的结果返回。暂且不谈此方法应该如何写，我主要是想说通过用另外一种查询方法:在HQL中绑定参数预编译机制来解决这个乱码问题。<br /><br />　　参数绑定机制有如下优点：<br />　　a　安全感，防止恶意用户非法调用DB的存储过程<br />　　b　利用底层数据库编译SQL的功能，提高数据库查询性能。预编译是指底层数据库系统只能编译SQL语句一次，把编译出来的可执行代码保存在缓存中，如果有多次执行相同的SQL语句，不需要重新编译，只要从缓存中读取即可。<br /><br />　　将上面的执行过程改成如下：<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">List params </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> ArrayList();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />String hql </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">from Customer user where 1=1 and userr.mc like ?</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />params.add(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">'%</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> form.get(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">zdmlmc</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">).toString() </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%'</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Object[] objs </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> params.toArray();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Session session </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> getHibernateTemplate().getSessionFactory().openSession();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Transaction tx </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> session.beginTransaction();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Query qry </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> session.createQuery(sql);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> (objs </span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 判断是否确认参数名称</span>
				<span style="COLOR: #008000">
						<br />
						<img id="Codehighlighter1_378_473_Open_Image" onclick="this.style.display='none'; Codehighlighter1_378_473_Open_Text.style.display='none'; Codehighlighter1_378_473_Closed_Image.style.display='inline'; Codehighlighter1_378_473_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_378_473_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_378_473_Closed_Text.style.display='none'; Codehighlighter1_378_473_Open_Image.style.display='inline'; Codehighlighter1_378_473_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span id="Codehighlighter1_378_473_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_378_473_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000">(objs.length</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000"> (</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> i </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">; i </span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000"> objs.length; i</span>
						<span style="COLOR: #000000">++</span>
						<span style="COLOR: #000000">) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   qry.setParameter(i, objs[i]);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />List returnList </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> qry.list();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />tx.commit();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />session.close();</span>
		</div>
		<p>
				<br />　　这样就可以看到在console中最后所执行的SQL:<br /><br />　　select ... from Customer user  where 1=1 and userr.mc like '%惠止南国%'</p>
		<p>　　在上面中有这样的语句：<br /><br />　　qry.setParameter(i, objs[i]);<br /><br />　　这是属于按参数位置绑定中的绑定任意的参数类型。<br /><br />　　<font color="#000080"><strong>org.hibernate.Query的参数绑定形式可以分为<br /><br /></strong>　　1　按参数位置绑定<br /><br />　　2　按参数位置绑定<br /></font><font style="BACKGROUND-COLOR: #000080"><br /></font>　　<font color="#000080"><strong>Query绑定参数类型可以分为：<br /></strong></font><br />　　<font color="#000080">1　参数与持久化类实体绑定<br /></font></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">Customer cus </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Customer();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">省略其它初始化<img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">以下是按参数位置绑定</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">　　query.setEntity(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">pa_name</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,customer);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> or <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">按参数位置绑定</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">　　query.setEntity(index_location,customer);</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">index_location是其在HQL中的下标位置，从0开始</span>
		</div>
		<p>
				<br />　<font color="#000080">　2　绑定任意类型参数<br /></font><br />　　上面中的qry.setParameter(...)就是这种类型,我们qry.setParameter(i, objs[i]);中是省略了第三个参数即Hibernate映射类型,如：<br /><br />　　qry.setParameter(i, objs[i],Hibernate.STRING);<br /><br />　　对于有些参数，Hibernate能根据参数值的java类型推断出对应的映射类型，此时不再要在setParameter()中显式指定映射类型。如上<br /><br />　　<font color="#000080">3　将命名参数与一个对象属性绑定<br /></font><br />　　setProperties()方法<br /><br />　　个人觉得这个跟ORM技术的ibatis中的SQLMAP有些许相似。它是用setProperties()方法。如：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">String hql </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">from Customer user where 1=1 and userr.mc like :sna</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Customer cus </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Customer();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />cus.setMc(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">惠止南国</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Session session </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> getHibernateTemplate().getSessionFactory().openSession();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Transaction tx </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> session.beginTransaction();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />List returnList </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> session.createQuery(sql).setProperties(cus).list();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />tx.commit();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />session.close();</span>
		</div>
		<p>
				<font color="#ff0000">Attention：对于日期型数据不能用setProperties()方法通过实体来绑定。</font>
		</p>
		<p>
				<br /> </p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/74946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-10-13 11:44 <a href="http://www.blogjava.net/Jkallen/archive/2006/10/13/74946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVSNT配置及其与eclipse集成开发项目管理</title><link>http://www.blogjava.net/Jkallen/archive/2006/09/17/70127.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Sun, 17 Sep 2006 05:00:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/09/17/70127.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/70127.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/09/17/70127.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/70127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/70127.html</trackback:ping><description><![CDATA[
		<p>　　CVSNT是服务器管理工具,再在客户端下个WINCVS就可以(关于wincvs使用,可以在网上找下，因为eclipse已经很好地集成了cvs)就可以一起协同工作了。这二天我从下载CVSNT到用eclipse新建项目，共享项目，不同的客户端导入项目都在公司局域网内的不同机子上测试通过。记录如下：<br /><br />　　首先从<a href="http://www.cvsnt.org/">http://www.cvsnt.org</a>处下得你想要的cvsnt版本，我下的是2.5.03，安装完成后。从程序中打开cvsnt control panel（CVSNT 控制面板）。下面开始配置CVSNT，主要是创建资源并让它可以通过客户端的IDE （eclipse）来访问。</p>
		<p>　　<strong>开始配置cvsnt</strong>：<br /></p>
		<p>　　<font color="#008000">a　查看运行状态：<br /></font>　　在about面板有个cvsnt  和 cvsnt lock二个选项，这儿可以对其进行start,stop服务</p>
		<p>　　<font color="#008000">b　添加资源<br /></font>　　在repository config面板中可以添加删除资源，这儿主要设定了repository 的name and  root值。如我在这儿将name设置为\mycvs，root为e:\mycvs。创建后会在对应的目录下生成cvsroot文件夹及cvs相关配置文件。 OK,确定。这个地方可以要重启服务才能生效</p>
		<p>　　<font color="#008000">c　兼容：<br /></font>　　在conpatibility option 面板上选择兼容的版本，<font color="#ff1493">注意一定要勾上respond as cvs 1.11.2 to version request</font>，为了与eclipse中的cvs兼容(在eclipse中的cvs版本很可能与你cvsnt版本不同)。<br /><br />　　好了，现在服务器上的资源路径已经设定好了。<br /><br /><br />　　<strong>通过IDE共享一个工程</strong>　　<br /><br /><br />　　打开eclipse新建一个项目，然后在项目上右击/team/share project （小组/共享项目），在弹出的share  project whith cvs reposity对话框中选择一个cvs路径(第一次当然是新建了)，在host中填入CVSNT的主机地址如：192.168.12.17，在repository path中填入cvsnt中的name值如：/mycvs。user中写cvsnt所分配的用户名，password中写入密码(下面将会讲些cvs中如何管理用户)。在connection type中一般选择pserver连接类型。然后就是记住密码什么的...  :-)。OK ,NEXT提示一路完成！<br /><br />    <br />　　<strong>在客户端从cvs上导入共享工程：<br /></strong><br /><br />　　在客户端的eclipse中打开cvs视图，根据CVSNT的路径及其给你所分配的用户相关信息新建一个CVS的资源路径。ok,开始引入共享工程了：<br /><br />　　可以直接从cvs中check out出来，也可以从new/project/cvs/projects from cvs。选中你刚刚把建立cvsnt资源路径,你可以在use an existing module中看到所有的共享项目了。然后选择一个你想导入的项目check out出来到本机....</p>
		<p>　　全部完成^_^，本来想剪几个图上来的，有些麻烦，太不方便了。不过过程比较简单，很快就可以搞定。客户端将cvsnt上的工程检出是比较简单的。主要是在cvsnt上的相关配置。我在网上找了些资料，完成了如添加不同的用户。介绍有个cvsnt的GUI工具可以直接图形化操作。看介绍很easy ,下载URL:<a href="http://www.kdeopen.com">http://www.kdeopen.com</a>(偶一直打不开，郁闷，希望各位运气比我好) 。我只好在控制台下添加删除用户了。<br /></p>
		<p>　　<strong>cvsnt用户管理<br /><br /></strong>　　在用户管理中以下是cvs的一些命令参数<br />　　Usage: cvs passwd [-a] [-x] [-X] [-r real_user] [-R] [-D domain] [username]<br />      　  -a      Add user<br />       　 -x      Disable user<br />      　  -X      Delete user<br />      　  -r      Alias username to real system user<br />      　  -R      Remove alias to real system user<br />      　  -D      Use domain password<br /></p>
		<p>　　服务器工作在CVSNT用户单一验证方式下的时候，文件passwd定义了CVSNT的用户信息，这里面保存着用户名，用户密码，以及别名信息。默认状态下 没有该文件，但是我们可以在CVSNT还工作在混合验证方式下时，用系统管理员登录，通过添加用户命令来让CVSNT自动建立一个passwd文件。<br /><br />　<font color="#008000">　登录：login <br /></font>　　cvs -d :pserver:administrator@127.0.0.1:/mycvs login<br /><br />　<font color="#008000">　添加用户<br /></font>　　cvs -d :pserver:administrator@127.0.0.1:/mycvs passwd -a zyx<br />　　<br />　　之后系统提示输入密码，输入后服务器会新建一个passwd文件。该文件的内容很简单，形式如下：<br />　　<br />　　zyx:YT2p2NmdmUlEg:</p>
		<p>　　以第一行为例：zyx为用户名，YT2p2NmdmUlEg为CVS使用UNIX标准加密函数对密码进行加密后的结果。<br /></p>
		<p>　　若想以混合验证的方式验证得对应一个window的系统用户名(zyinxin)，这时就用参数-r来指定,如：<br />      cvs -d :pserver:administrator@127.0.0.1:/mycvs passwd -r zyinxin -a zyx　<br /><br />　　这时生成文件内容如下：<br />　　zyx:YT2p2NmdmUlEg:zyinxin <br />　　zyinxin为该用户的别名(它是参考系统用户)，<br /><br />　　注意：这个文件是不能在客户端进行修改的，不能checkout出来。</p>
		<p>　　添加完成后你可以通过login来测试用户zyx是否创建成功</p>
		<p>　<font color="#008000"><em>　</em>删除用户:<br /></font>　　cvs -d :pserver:administrator@127.0.0.1:/mycvs passwd -x zyx<br /><br /><br /><br /><br />　　<em>附：参考了网上一些资料，刚刚学习，愿一起进步。谢谢！</em></p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/70127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-09-17 13:00 <a href="http://www.blogjava.net/Jkallen/archive/2006/09/17/70127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jakarta Commons(转)</title><link>http://www.blogjava.net/Jkallen/archive/2006/08/24/65438.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 24 Aug 2006 01:43:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/08/24/65438.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/65438.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/08/24/65438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/65438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/65438.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 偶在http://www.dingl.com/转来的Jakarta Commons是Jakarta的子项目，它创建和维护着许多独立软件包，这些包一般与其他框架或产品无关，其中收集了大量小型、实用的组件，大部分面向服务器端编程。 　　Commons的包分成两部分：Sandbox，Commons代码库。Sandbox是一个测试平台，用来检验各种设想、计划。本文介绍的组件属于Commons代码库，文章将...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2006/08/24/65438.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/65438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-08-24 09:43 <a href="http://www.blogjava.net/Jkallen/archive/2006/08/24/65438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle select语句学习</title><link>http://www.blogjava.net/Jkallen/archive/2006/07/28/60508.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Fri, 28 Jul 2006 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/07/28/60508.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/60508.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/07/28/60508.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/60508.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/60508.html</trackback:ping><description><![CDATA[
		<p>来了新任务,关于数据查询分析系统的,所以重温一下相关东西,顺便记一下。<br /><br />刚刚看了下racle单行函数，主要是字符，数字，日期，转换，通用五个方面。<br /><br /><font color="#000000"><strong>1&gt;字符处理<br /></strong></font><br />upper(str)---将字符串str全部转换成大写<br />lower(str)---将字符串str全部转换成小写<br />initcap(str)---将字符串中每个单词的首字母大写<br />concat(str1,str2)---将字符串str1与str2连接起来(也可以通过'||'号直接相连)<br />substr(str,a,b)---取字符串str中的指定字符，从位置a开始取长度为b的字符串，假如a为正则从左边开始，否则从右边开始<br />instr(str,'z')---取得str字符串中从左边开始每一次出现z字符的下标位置(下标从1开始)<br />lpad(str,12,'*')---左填充，即将字符串str长度填充到12，假如其不足12位则在左边以*号填充<br />rpad(str,12,'*')---右填充，同上<br />length(str)---计算字符串str的长度<br /><br /><strong>2&gt;数字函数<br /></strong><br />round(45.926,2)---将前一数保留指定的小数位，并四舍五入(45.93)，假如指定位是负数则意为在小数点左边保留指定位,如round(45.923,-1)=50,rount(45.923,0)=46,round(45.93,-2)=0,round(55.93,-2)=100<br />trunc(45.926,2)---同上，得不四舍五入(45.92)<br />mod(1600,300)---求余(100)<br /><br /><strong>3&gt;日期型函数<br /></strong><br />oracle中默认的格式是：DD-MON-RR。<br />oracle中有个到当前系统时间--sysdate，如：<br />select sysdate from dual <br /><br />可对日期进行自述运算：<br />select (sysdate-mybirthday)/7 from person<br /><br />months_between('01-sep-95','11-jan-94')---取得二个日期之间的间隔月数(19.6774194)<br />add_months('11-jan-94',6)---给指定日期加上指定的月份后得到一个新的日期(11-jul-94)<br />next_day('01-sep-85','friday')---取得当前日期中下个周五的日期(01-jul-95)<br />last_day('01-feb-95')---取得当前日期中月份的最后一天(28-feb-95)<br /><br />round进行四舍五入，trunc则否,以下是我的操作结果：<br />sysdate为：<br />SYSDATE<br />----------<br />28-7月 -06</p>
		<p> select <br /> round(sysdate,'month') RM,<br /> round(sysdate,'year') RY,<br /> trunc(sysdate,'month') TM,<br /> trunc(sysdate,'year') TY<br /> from dual;</p>
		<p>RM         RY         TM         TY<br />---------- ---------- ---------- ----------<br />01-8月 -06 01-1月 -07 01-7月 -06 01-1月 -06<br /></p>
		<p>
				<br />
				<strong>4&gt;转换函数<br /></strong>
				<br />隐式转换:系统自动转换,如：<br />varchar2 or char to number<br />varchar2 or char to date<br />number to varchar2<br />date to varchar2<br /><br />显式转换：人为以函数加以转换<br />日期，字符，数据三者之间可以相互转换:日期&lt;--&gt;字符&lt;--&gt;数据<br />日期格式:YYYY<br /><br /><em>日期--&gt;字符</em><br />select to_char(sysdate,'yyyy-mm-dd') ch from dual</p>
		<p>CH<br />----------<br />2006-07-28<br /><br /><em>数字--&gt;字符<br /></em>to_char(number,'format_model'),oramat_model有如下：<br />9---用对应数字表示<br />0---强制用０表示<br />$---加一$符号<br />L---前加本地货币单位表示<br />.---十进制点<br />,---千进制点<br /><br />select to_char(0917,'l9999.99') local from dual<br />LOCAL<br />------------------<br />         RMB917.00<br /><br /><em>字符--&gt;日期</em><br />tselect to_date('19830917','yyyy-mm-dd') bir from dual<br />BIR<br />----------<br />17-9月 -83<br /><br /><em>字符--&gt;数字</em><br />select to_number('19821217','999999999') mybr from dual<br />      MYBR<br />----------<br />  19821217</p>
		<p>注：所有函数均可以嵌套使用</p>
		<p>
				<strong>5&gt;通用函数<br /></strong>
				<br />nvl(expr1,expr2)---expr1为空则显示expr2,否则显示expr1<br />nvl2(expr1,expr2,expr3)---expr1为空则显示expr2,否则显示expr3<br />nullif(expr1,expr2)---二个相等则显示空符,否则显示expr1<br />coalesce(expr1,expr2,...,exprn)---从expr1开始依次找到不为空的expr，找到就显示，直到最后，否则显</p>
		<p>示exprn<br />case表达式，如下图:</p>
		<p>
				<img src="http://www.blogjava.net/images/blogjava_net/jkallen/9085/r_oracle_case.bmp" /> <br /><br /><strong>6&gt;多表查询</strong><br />对普通的多表查询，也就是不加where条件的时候实际上查询结果是各表的笛卡尔集<br />外连接：oracle实现外连接时在=号的二边加+号就OK，当+在左边时称为右连接，反之为左连接,它常常用来当要求未受限制对象的表数据也要求显示时，如下：<br />select * from student</p>
		<p>ID NAME                 ADDRESS<br />-------------------- --------------<br />1 zhangshan            zhejiang<br />3 lishi                hangzhou<br />7 lily                 guangzhou</p>
		<p>select * from person</p>
		<p>ID NAME                 ADDRESS<br />- -------------------- -----------<br />1 zhangshan            zhejiang<br />3 lishi                hangzhou<br />7 lily                 guangzhou</p>
		<p>select p.id,p.sex,s.id,s.name,s.address from person p ,student s where p.id(+) = s.id</p>
		<p>ID SEX          ID NAME                 ADDRESS<br />-- ---- ---------- -------------------- ------------<br /> 1 boy           1 zhangshan            zhejiang<br /> 3 girl          3 lishi                hangzhou<br />                 7 lily                 guangzhou</p>
		<p>select p.id,p.sex,s.id,s.name,s.address from person p ,student s where p.id = s.id(+)</p>
		<p>ID SEX          ID NAME                 ADDRESS<br />-- ---- ---------- -------------------- --------------<br /> 1 boy           1 zhangshan            zhejiang<br /> 2 girl<br /> 3 girl          3 lishi                hangzhou<br /> 4 boy<br /> 5 girl</p>
		<p>self-join，就是同一张表连接，用自连接的时候要注意排除重复的记录（自身，循环重复等），比如说找出student表中所有住在同一个地方的人。<br />select * from student</p>
		<p> ID NAME                 ADDRESS<br />--- -------------------- ---------<br />  1 zhangshan            zhejiang<br />  3 lishi                hangzhou<br />  7 lily                 guangzhou<br />  2 name2                guangzhou<br />  4 name4                guangzhou<br />  5 name5                hangzhou<br />  6 name6                shanghai<br />  8 name8                shanghai</p>
		<p>没有排除重复记录时的结果：<br /> select t1.name,t2.name <br /> from student t1, student t2<br /> where t1.address = t2.address</p>
		<p>NAME                 NAME<br />-------------------- --------------<br />lily                 lily<br />name2                lily<br />name4                lily<br />lily                 name2<br />name2                name2<br />name4                name2<br />lily                 name4<br />name2                name4<br />name4                name4<br />lishi                lishi<br />name5                lishi</p>
		<p>NAME                 NAME<br />-------------------- --------------<br />lishi                name5<br />name5                name5<br />name6                name6<br />name8                name6<br />name6                name8<br />name8                name8<br />zhangshan            zhangshan</p>
		<p>已选择18行</p>
		<p>排除重复与循环记录之后：<br />select t1.name,t2.name,t1.address<br /> from student t1, student t2<br /> where t1.address = t2.address<br />and t1.id &gt; t2.id</p>
		<p>NAME                 NAME                 ADDRESS<br />-------------------- -------------------- -------------------<br />lily                 name2                guangzhou<br />name4                name2                guangzhou<br />lily                 name4                guangzhou<br />name5                lishi                hangzhou<br />name8                name6                shanghai</p>
		<p>cross join,无条件连接，实际上跟不带where时一样得到的是笛卡尔集</p>
		<p>natural join（也可以直接记作join），根据表中同名栏位来连接记录,若表中可能出现多个同名栏位，则用using(col_name)来指定所栏位。colname不能指定表的别名！限制条件用on来指定<br />select id,p.sex,id,s.name from person p join student s using(id);</p>
		<p>  ID SEX          ID NAME<br />---- ---- ---------- --------------------<br />   1 boy           1 zhangshan<br />   2 girl          2 name2<br />   3 girl          3 lishi<br />   4 boy           4 name4<br />   5 girl          5 name5</p>
		<p>在sql标准语法中,左(右)连接用left(right) out join,限制条件用on就可以了。</p>
		<p>full out join完全外连接,顾名思义就是左外连接与右外连接都有<br />select id,p.sex,id,s.name from person p full join student s using(id);</p>
		<p>  ID SEX          ID NAME<br />---- ---- ---------- ------------------<br />   1 boy           1 zhangshan<br />   3 girl          3 lishi<br />   2 girl          2 name2<br />   4 boy           4 name4<br />   5 girl          5 name5<br />   8               8 name8<br />   6               6 name6<br />   7               7 lily<br /><br /><br /></p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/60508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-07-28 10:56 <a href="http://www.blogjava.net/Jkallen/archive/2006/07/28/60508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>prototype.js之ajax.request学习笔记(一)</title><link>http://www.blogjava.net/Jkallen/archive/2006/07/21/59445.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Fri, 21 Jul 2006 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/07/21/59445.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/59445.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/07/21/59445.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/59445.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/59445.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这二天用prototype.js中的ajax.request做了些东西,闲时看了下源码,体会如下：		　　在用AJAX部分前，有如下一些函数得了解一下：　　Class变量														var				 Class 				=				 																								{  create: 						function...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2006/07/21/59445.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/59445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-07-21 16:47 <a href="http://www.blogjava.net/Jkallen/archive/2006/07/21/59445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>