﻿<?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-software5168</title><link>http://www.blogjava.net/software5168/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 18:55:51 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 18:55:51 GMT</pubDate><ttl>60</ttl><item><title>iframe高度自动调整(通过IE,firefox,opera测试)</title><link>http://www.blogjava.net/software5168/archive/2009/04/21/266752.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Tue, 21 Apr 2009 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2009/04/21/266752.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/266752.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2009/04/21/266752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/266752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/266752.html</trackback:ping><description><![CDATA[1.index.html<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;iframe id="mainIframe" scrolling="no" frameborder="0" width="100%" src="a.html"&gt;&lt;/iframe&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="page('a.html')"&gt;a页面&lt;/a&gt;&lt;a href="#" onclick="page('b.html')"&gt;b页面&lt;/a&gt;<br />
<br />
2 a.html&nbsp; //内嵌页面<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;script language="javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;changeHight();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;<br />
<br />
3. b.html&nbsp; //内嵌页面<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script language="javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;changeHight();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;<br />
<br />
4. page.js<br />
&nbsp;function changeHight(){<br />
&nbsp; var iFrm = parent.document.getElementById("mainIframe");<br />
&nbsp;&nbsp;&nbsp;&nbsp; var subWeb = iFrm.contentDocument;<br />
&nbsp;&nbsp;&nbsp;&nbsp; if(subWeb){<br />
&nbsp;&nbsp;&nbsp; if (subWeb.body.scrollHeight&gt;480)<br />
&nbsp;&nbsp;&nbsp;iFrm.height = subWeb.body.scrollHeight+20;<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iFrm.height=500;<br />
&nbsp; }&nbsp;<br />
&nbsp; if(top.document.frames["mainIframe"].document &amp;&amp; window.document.body.scrollHeight!="0"){<br />
&nbsp; &nbsp;parent.document.getElementById("mainIframe").style.height=window.document.body.scrollHeight;<br />
&nbsp; }<br />
&nbsp; if(top.document.frames["mainIframe"].document &amp;&amp; window.document.body.scrollHeight=="0"){<br />
&nbsp; &nbsp;parent.document.getElementById("mainIframe").style.height=500;<br />
&nbsp; }<br />
}<br />
<br />
function page(page){<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("mainIframe").src=page;<br />
}<br />
<br />
<br />
<br />
造成IE,FireFox,Opera中Iframe显示差异原因在于<br />
1.iframe在FireFox中取法为parent.document.getElementById("mainIframe").contentDocument,而在ie,opera中为parent.document.getElementById("mainIframe").document<br />
2.当页面无滚动时，window.document.body.scrollHeight在IE中能取到，fireFox和Opera中取不到。 
<img src ="http://www.blogjava.net/software5168/aggbug/266752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2009-04-21 14:05 <a href="http://www.blogjava.net/software5168/archive/2009/04/21/266752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件上传下载</title><link>http://www.blogjava.net/software5168/archive/2009/02/26/256852.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Thu, 26 Feb 2009 09:11:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2009/02/26/256852.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/256852.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2009/02/26/256852.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/256852.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/256852.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.myapp/index.html&lt;html&gt;&lt;head&gt;文件操作&lt;iframe&nbsp;id="iframefile"&nbsp;scrolling="no"&nbsp;frameborder="0"&nbsp;width="100%"&nbsp;src="/myapp/fileUpload.jsp"&gt;&lt;/iframe&gt;&l...&nbsp;&nbsp;<a href='http://www.blogjava.net/software5168/archive/2009/02/26/256852.html'>阅读全文</a><img src ="http://www.blogjava.net/software5168/aggbug/256852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2009-02-26 17:11 <a href="http://www.blogjava.net/software5168/archive/2009/02/26/256852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何控制单选、复选、列表框</title><link>http://www.blogjava.net/software5168/archive/2007/08/09/135402.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Thu, 09 Aug 2007 01:17:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2007/08/09/135402.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/135402.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2007/08/09/135402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/135402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/135402.html</trackback:ping><description><![CDATA[一些频繁使用的javascript页面控制，做个总结。<br>下面是部分代码。<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;script language="javascript"&gt;<br>&nbsp;function a(){<br>&nbsp;&nbsp;window.document.getElementsByName("dx")[0].checked=true;<br>&nbsp;}<br>&nbsp;function b(){<br>&nbsp;&nbsp;window.document.getElementsByName("dx")[0].checked=false;<br>&nbsp;}<br>&nbsp;function c(){<br>&nbsp;&nbsp;window.document.getElementsByName("fx")[0].checked=true;<br>&nbsp;}<br>&nbsp;function d(){<br>&nbsp;&nbsp;window.document.getElementsByName("fx")[0].checked=false;<br>&nbsp;}<br>&nbsp;function e(){<br>&nbsp;&nbsp;for(i=0;i&lt;window.document.getElementsByName("fx").length;i++){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;if(!window.document.getElementsByName("fx")[i].checked){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;window.document.getElementsByName("fx")[i].checked=true;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;}<br>&nbsp;function f(){<br>&nbsp;&nbsp;for(i=0;i&lt;window.document.getElementsByName("fx").length;i++){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;if(window.document.getElementsByName("fx")[i].checked){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;window.document.getElementsByName("fx")[i].checked=false;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;}<br>&nbsp;function g(){<br>&nbsp;&nbsp;window.document.getElementById("lbka")[1].selected=true;<br>&nbsp;}<br>&nbsp;function h(){<br>&nbsp;&nbsp;alert("选择号为:"+window.document.getElementById("lbka").selectedIndex + "&nbsp;&nbsp;&nbsp; 值为:" +window.document.getElementById("lbka")[window.document.getElementById("lbka").selectedIndex].value+"&nbsp;&nbsp;&nbsp; 文本值为:" + window.document.getElementById("lbka")[window.document.getElementById("lbka").selectedIndex].text);<br>&nbsp;}<br>&nbsp;function m(){<br>&nbsp;&nbsp;sel = false;<br>&nbsp;&nbsp;var val="";<br>&nbsp;&nbsp;&nbsp; &nbsp;for(i=0;i&lt;window.document.getElementsByName("dx").length;i++){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;if(window.document.getElementsByName("dx")[i].checked){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;val = window.document.getElementsByName("dx")[i].value;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;sel=true;<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;} &nbsp;<br>&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp; &nbsp;if(sel){<br>&nbsp;&nbsp;&nbsp;alert("单选值为:"+val);<br>&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; &nbsp;}else{<br>&nbsp;&nbsp;&nbsp;alert("请选择文件");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;return false;<br>&nbsp;&nbsp;}&nbsp;&nbsp;<br>&nbsp;}<br>&nbsp;function j(){<br>&nbsp;&nbsp;var sel = false;<br>&nbsp;&nbsp;var val="";<br>&nbsp;&nbsp;&nbsp; &nbsp;for(i=0;i&lt;window.document.getElementsByName("fx").length;i++){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;if(window.document.getElementsByName("fx")[i].checked){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(val==""){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;val=window.document.getElementsByName("fx")[i].value;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}else{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;val = val + "," +window.document.getElementsByName("fx")[i].value;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp;&nbsp; &nbsp;if(val==""){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;alert("请选择文件");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;return false;<br>&nbsp;&nbsp;&nbsp; &nbsp;}else{<br>&nbsp;&nbsp;&nbsp;alert("复选值为:"+val);<br>&nbsp;&nbsp;}<br>&nbsp;}<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;table id="table1" width="100%"&nbsp; border="1" align="center" cellpadding="0" cellspacing="0"&gt;<br>&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&lt;td&gt;文件&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;列表框&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;单选&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;复选&lt;/td&gt;<br>&nbsp;&lt;/tr&gt;<br>&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&lt;td&gt;文件A&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;&lt;select name="lbka"&gt;&lt;option value="lbka1"&gt;文件A1&lt;/option&gt;&lt;option value="lbka2"&gt;文件A2&lt;/option&gt;&lt;/select&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;&lt;input type="radio" name="dx" value="dxa"&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;&lt;input type="checkbox" name="fx" value="fxa"&gt;&lt;/td&gt;<br>&nbsp;&lt;/tr&gt;<br>&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&lt;td&gt;文件B&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;&lt;select name="lbkb"&gt;&lt;option value="lbkb1"&gt;文件B1&lt;/option&gt;&lt;option value="lbkb2"&gt;文件B2&lt;/option&gt;&lt;/select&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;&lt;input type="radio" name="dx" value="dxb"&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;&lt;input type="checkbox" name="fx" value="fxb"&gt;&lt;/td&gt;<br>&nbsp;&lt;/tr&gt;<br>&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&lt;td colspan="4"&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="a();"&gt;单选A选中&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="b();"&gt;单选A不选中&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="c();"&gt;复选A选中&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="d();"&gt;复选A不选中&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="e();"&gt;复选全选&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="f();"&gt;复选全不选&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="g();"&gt;选中列表框文件A2&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="h();"&gt;取得选中列表框A的值,文本&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="m();"&gt;判断单选选择&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="j();"&gt;判断复选选择&lt;/a&gt;<br>&nbsp;&nbsp;&lt;/td&gt;<br>&nbsp;&lt;/tr&gt;<br>&lt;/table&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;
<img src ="http://www.blogjava.net/software5168/aggbug/135402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2007-08-09 09:17 <a href="http://www.blogjava.net/software5168/archive/2007/08/09/135402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何动态控制表单元素</title><link>http://www.blogjava.net/software5168/archive/2007/08/08/135271.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Wed, 08 Aug 2007 08:11:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2007/08/08/135271.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/135271.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2007/08/08/135271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/135271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/135271.html</trackback:ping><description><![CDATA[主要通过javascript实现，理解IE的DOM结构，并调用元素的固定方法，可以实现表单元素的动态增删。<br>下面是部分代码。<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;script language="javascript"&gt;<br>&nbsp;function add(){<br>&nbsp;&nbsp;//取得表格<br>&nbsp;&nbsp;var table = document.getElementById("table1");<br>&nbsp;&nbsp;//取得行数;<br>&nbsp;&nbsp;var num = table.rows.length;<br>&nbsp;&nbsp;//增加一行<br>&nbsp;&nbsp;var newrow1 = table.insertRow(num-1);<br>&nbsp;&nbsp;var cell1 = newrow1.insertCell();<br>&nbsp;&nbsp; &nbsp;&nbsp;var cell2 = newrow1.insertCell();<br>&nbsp;&nbsp; &nbsp;&nbsp;var cell3 = newrow1.insertCell();<br>&nbsp;&nbsp; &nbsp;&nbsp;var cell4 = newrow1.insertCell();<br>&nbsp;&nbsp;//增加行元素<br>&nbsp;&nbsp;var inputcell2 = document.createElement("&lt;input size='32' name=''&gt;");<br>&nbsp;&nbsp; &nbsp;&nbsp;cell2.appendChild(inputcell2);<br>&nbsp;&nbsp;var inputcell4_1 = document.createElement("&lt;input size='32' name=''&gt;");<br>&nbsp;&nbsp;var inputcell4_2 = document.createElement("&lt;input type='button' value='删除元素'onClick='del(this);'/&gt;");<br>&nbsp;&nbsp; &nbsp;&nbsp;cell4.appendChild(inputcell4_1);<br>&nbsp;&nbsp;cell4.appendChild(inputcell4_2);<br>&nbsp;&nbsp;//刷新标签显示<br>&nbsp;&nbsp;frash();<br>&nbsp;}<br>&nbsp;function del(obj){<br>&nbsp;&nbsp;//取得按钮所在行<br>&nbsp;&nbsp;var i = obj.parentNode.parentNode.rowIndex;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;var tab = document.getElementById("table1");<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//删除按钮所在行<br>&nbsp;&nbsp;tab.deleteRow(i-1);&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;frash();<br>&nbsp;}<br>&nbsp;function frash(){<br>&nbsp;&nbsp;var table = document.getElementById("table1");<br>&nbsp;&nbsp; &nbsp;&nbsp;var num = table.rows.length;<br>&nbsp;&nbsp; &nbsp;&nbsp;//计算动态元素个数<br>&nbsp;&nbsp;var n = num-2;<br>&nbsp;&nbsp; &nbsp;&nbsp;for(i=1;i&lt;=n;i++){<br>&nbsp;&nbsp;&nbsp;//设置标签值<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;table.rows[i].cells[0].innerText="元素"+i+"属性A";<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//设置属性值<br>&nbsp;&nbsp;&nbsp;table.rows[i].cells[1].childNodes[0].setAttribute("name","ysa"+i);<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;table.rows[i].cells[2].innerText="元素"+i+"属性B";<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;table.rows[i].cells[3].childNodes[0].setAttribute("name","ysb"+i);<br>&nbsp;&nbsp; &nbsp;&nbsp;} <br>&nbsp;}<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;table id="table1" width="100%"&nbsp; border="1" align="center" cellpadding="0" cellspacing="0"&gt;<br>&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&lt;td&gt;标签1&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;&lt;input name="a"&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;标签2&lt;/td&gt;<br>&nbsp;&nbsp;&lt;td&gt;&lt;input name="b"&gt;&lt;/td&gt;<br>&nbsp;&lt;/tr&gt;<br>&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&lt;td colspan="4" align="center"&gt;&lt;a href="#" onclick="add();"&gt;增加元素&lt;/a&gt;&lt;/td&gt;<br>&nbsp;&lt;/tr&gt;<br>&lt;/table&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;
<img src ="http://www.blogjava.net/software5168/aggbug/135271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2007-08-08 16:11 <a href="http://www.blogjava.net/software5168/archive/2007/08/08/135271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何实现页面打印</title><link>http://www.blogjava.net/software5168/archive/2007/08/08/135193.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Wed, 08 Aug 2007 03:27:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2007/08/08/135193.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/135193.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2007/08/08/135193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/135193.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/135193.html</trackback:ping><description><![CDATA[页面打印通常直接调用IE中打印命令，并通过class控制打印范围。当页面文件内容过多，无法完整打印时，可以通过javascript控制缩放实现完整打印。<br>下面是部分代码。<br>&lt;<a class=keyurl href="http://www.it130.net/html/index.htm" target=_blank><u><font color=#0000ff>html</font></u></a>&gt; <br>&lt;head&gt; <br>&lt;title&gt;***上海市眼病防治中心病人结帐费用报表***&lt;/title&gt; <br>&lt;meta http-equiv="Content-Type" content="text/<a class=keyurl href="http://www.it130.net/html/index.htm" target=_blank><u><font color=#0000ff>html</font></u></a>; charset=gb2312"&gt; <br>&lt;!--media=print 这个属性可以在打印时有效--&gt; <br>&lt;style media=print&gt; <br>.Noprint{display:none;} <br>.PageNext{page-break-after: always;} <br>&lt;/style&gt; <br>&lt;style&gt; <br>body,td,th <br>{ <br>font-size: 12px; <br>} <br>.tdp <br>{ <br>border-bottom: 1 solid #000000; <br>border-left: 1 solid #000000; <br>border-right: 0 solid #ffffff; <br>border-top: 0 solid #ffffff; <br>} <br>.tabp <br>{ <br>border-color: #000000; <br><br>border-collapse:collapse; <br>} <br>.NOPRINT { <br>font-family: "宋体"; <br>font-size: 12px; <br>} <br><br>&lt;/style&gt; <br>&lt;script language="javascript"&gt;<br>　　var i=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function zoomL(){<br>&nbsp;　　&nbsp;&nbsp;&nbsp;i++;<br>&nbsp;　　&nbsp;&nbsp;&nbsp;document.getElementById("f").style.zoom=1+i/3;<br>　　}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function zoomS(){<br>&nbsp;　　&nbsp;&nbsp;&nbsp;i--;<br>&nbsp;　　&nbsp;&nbsp;&nbsp;document.getElementById("f").style.zoom=1+i/3;<br>　　}<br>&lt;/script&gt;<br>&lt;/head&gt; <br><br>&lt;body &gt; <br>&lt;OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0 V<strong>IE</strong>WASTEXT&gt; &lt;/OBJECT&gt; <br>&lt;input type=button value=打印 onclick="document.all.WebBrowser.ExecWB(6,1)" class="NOPRINT"&gt; <br>&lt;input type=button value=直接打印 onclick="document.all.WebBrowser.ExecWB(6,6)" class="NOPRINT"&gt; <br>&lt;input type=button value=页面设置 onclick="document.all.WebBrowser.ExecWB(8,1)" class="NOPRINT"&gt; <br>&lt;input type=button value=打印预览 onclick="document.all.WebBrowser.ExecWB(7,1)" class="NOPRINT"&gt; <br>&lt;input type=button value=放大 onclick="zoomL();" class="NOPRINT"&gt; <br>&lt;input type=button value=缩小 onclick="zoomS();" class="NOPRINT"&gt; <br>&lt;br/&gt; <br>&lt;table width="90%" border="0" align="center" cellpadding="0" cellspacing="0"&gt; <br>&lt;tr align="center"&gt; <br>&lt;td colspan="5"&gt;&lt;font size="3"&gt;上海市眼病防治中心病人结帐费用报表（A） &lt;/font&gt;&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;tr&gt; <br>&lt;td&gt;汇总人次 5&lt;/td&gt; <br>&lt;td&gt;费用合计 15853.12&lt;/td&gt; <br>&lt;td&gt;统计日期 &lt;/td&gt; <br>&lt;td&gt;制表人 023&lt;/td&gt; <br>&lt;td&gt;制表日期：2004-05-13&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;/table&gt; <br><br>&lt;table width="90%" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#000000" class="tabp" id="f"&gt; <br>&lt;tr&gt; <br>&lt;td &gt;姓名&lt;/td&gt; <br>&lt;td &gt;住院号&lt;/td&gt; <br>&lt;td &gt;科室&lt;/td&gt; <br>&lt;td &gt;结帐日期&lt;/td&gt; <br>&lt;td &gt;出院日期&lt;/td&gt; <br>&lt;td &gt;费用合计&lt;/td&gt; <br>&lt;td &gt;医保交易费用&lt;/td&gt; <br>&lt;td &gt;分类给付费用&lt;/td&gt; <br>&lt;td &gt;非医保交易费&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;tr&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt;&nbsp;<br>&lt;td &gt;&amp;nbsp;&lt;/td&gt;&nbsp;<br>&lt;/tr&gt; <br>&lt;/table&gt; <br>&lt;hr align="center" width="90%" size="1" n<a class=keyurl href="http://www.it130.net/OS/index.htm" target=_blank><u><font color=#0000ff>os</font></u></a>hade class="NOPRINT" &gt; <br>&lt;!--分页--&gt; <br>&lt;div class="PageNext"&gt;&lt;/div&gt; <br>&lt;table width="90%" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#000000" class="tabp"&gt; <br>&lt;tr&gt; <br>&lt;td &gt;第2页&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;tr&gt; <br>&lt;td &gt;看到分页了吧&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;tr&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;tr&gt; <br>&lt;td &gt;&amp;nbsp;&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;tr&gt; <br>&lt;td &gt;&lt;table width="100%" border="0" cellspacing="0" cellpadding="0"&gt; <br>&lt;tr&gt; <br>&lt;td width="50%" &gt;这样的报表 <br>对一般的要求就够了。&lt;/td&gt; <br>&lt;td&gt;&amp;nbsp;&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;/table&gt;&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;/table&gt; <br><br>&lt;table width="780%" border="1" class="Noprint"&gt;<br>&lt;tr&gt;<br>&lt;td&gt;能不能打印&lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;/table&gt;<br><br>&lt;/body&gt; <br>&lt;/<a class=keyurl href="http://www.it130.net/html/index.htm" target=_blank><u><font color=#0000ff>html</font></u></a>&gt;<br>
<img src ="http://www.blogjava.net/software5168/aggbug/135193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2007-08-08 11:27 <a href="http://www.blogjava.net/software5168/archive/2007/08/08/135193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何同时提交表单中的文件和文本</title><link>http://www.blogjava.net/software5168/archive/2007/08/08/135184.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Wed, 08 Aug 2007 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2007/08/08/135184.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/135184.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2007/08/08/135184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/135184.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/135184.html</trackback:ping><description><![CDATA[<p>思路是把表单类型设置为enctype="multipart/form-data"，其他表单中文本数据通过javascript处理，附加在action后面，后台通过request.getParameter()取得。上传文件调用commons-fileupload.jar中方法。<br><br>下面是部分代码。<br>&lt;form&nbsp; name="ajform" action="/da.do" method="post" enctype="multipart/form-data"&gt;<br>&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&lt;input name="a" value=""&gt;&lt;/td&gt;&lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&lt;input name="b" type="file"&gt;&lt;/td&gt;&lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&lt;a href="#" onclick="checksubmit();"&gt;提交&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;<br>&lt;/form&gt;</p>
&lt;script language="javascript"&gt;<br>&nbsp;&nbsp;&nbsp;function checksubmit(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var value&nbsp;&nbsp;= "/da.do?formAction=save";&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = value+"&amp;a="+ window.document.getElementById("a").value;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.document.ajform.action=value;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.document.ajform.submit();<br>&nbsp;&nbsp;&nbsp;}<br>&lt;/script&gt;<br><br>String a = request.getParameter("a");<br>try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//文件上传目录&#8220;/file/wj&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;String filepath= request.getSession().getServletContext().getRealPath("/")+"file"+File.separator+"wj";<br>&nbsp;&nbsp;&nbsp;//文件上传临时目录&#8220;/file/temp&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;String tempPath = request.getSession().getServletContext().getRealPath("/")+"file"+File.separator+"temp";<br>&nbsp;&nbsp;&nbsp;&nbsp;File dir = new File(filepath);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//建立目录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!dir.exists()){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;dir.mkdirs();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;File dir1 = new File(tempPath);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if(!dir1.exists()){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;dir1.mkdirs();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;DiskFileUpload fu = new DiskFileUpload();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//设置最大文件尺寸，这里是10MB<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fu.setSizeMax(10485760);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置缓冲区大小，这里是4kb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fu.setSizeThreshold(4096);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置临时目录：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fu.setRepositoryPath(tempPath);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;List fileItems = fu.parseRequest(request);<br>&nbsp;&nbsp;&nbsp;&nbsp;Iterator iter = fileItems.iterator();<br>&nbsp;&nbsp;&nbsp;&nbsp;while (iter.hasNext()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileItem item = (FileItem) iter.next();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fileName = item.getName();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//判断是否为文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(fileName!=null){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取文件名<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name = fileName.substring(fileName.lastIndexOf(File.separator)+1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fileName!=null&amp;&amp; !fileName.equals("")) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;File file = new File(filepath+File.separator+name);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.write(file);<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; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;} catch (Exception e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;} 
<img src ="http://www.blogjava.net/software5168/aggbug/135184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2007-08-08 10:52 <a href="http://www.blogjava.net/software5168/archive/2007/08/08/135184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最简单的视频页面</title><link>http://www.blogjava.net/software5168/archive/2007/01/12/93506.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Fri, 12 Jan 2007 10:34:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2007/01/12/93506.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/93506.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2007/01/12/93506.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/93506.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/93506.html</trackback:ping><description><![CDATA[&lt;html&gt;<br />&lt;head&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;embed height=240 name=aa style="BORDER-BOTTOM:#2a8a21 3px solid;BORDER-LEFT:#2a8a21 3px  solid;BORDER-RIGHT:#2a8a21 3px solid;BORDER-TOP:#2a8a21 3px solid" <br /> type=audio/x-pn-realaudio-plugin width=320 loop="no" console="clip1" reset="false"<br /> controls="ImageWindow" src="a1.rmvb"&gt;<br />&lt;/embed&gt;&lt;br&gt;<br />&lt;embed height=30 type=audio/x-pn-realaudio-plugin width=320  console="clip1"  reset="false" autostart="false" controls="controlpanel"&gt;<br />&lt;/embed&gt;&lt;br&gt;<br />&lt;embed height=30 type=audio/x-pn-realaudio-plugin width=320  console="clip1"  reset="false" autostart="false" controls="statusbar"&gt;<br />&lt;/embed&gt;&lt;br&gt;<br />&lt;Script Language=JavaScript&gt;<br />function OpenFile(txt){<br /> document.aa.src=txt.value;<br />}<br />&lt;/Script&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<img src ="http://www.blogjava.net/software5168/aggbug/93506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2007-01-12 18:34 <a href="http://www.blogjava.net/software5168/archive/2007/01/12/93506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ant 模板</title><link>http://www.blogjava.net/software5168/archive/2006/12/14/87658.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Thu, 14 Dec 2006 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/12/14/87658.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/87658.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/12/14/87658.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/87658.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/87658.html</trackback:ping><description><![CDATA[1。EJB打包<br />&lt;?xml version="1.0"?&gt;<br />&lt;project name="jartest" default="jar" basedir="."&gt;<br />&lt;property name="build.dir" value="${basedir}/build" /&gt;<br />&lt;property name="build.classes.dir" value="${build.dir}/classes" /&gt;<br />&lt;target name="jar" description="打包成Jar"&gt;<br />&lt;jar jarfile="${basedir}/ejbfile.jar"&gt;<br />&lt;fileset dir="${build.classes.dir}"&gt;<br />&lt;include name="**/*.class" /&gt;<br />&lt;/fileset&gt;<br />&lt;metainf dir="${basedir}/META-INF "&gt;<br />&lt;include name="**" /&gt;<br />&lt;/metainf&gt;<br />&lt;/jar&gt;<br />&lt;/target&gt;<br />&lt;/project&gt;<br /><br />2。web应用打包<br />&lt;?xml version="1.0"?&gt;<br />&lt;project name="wartest" default="war" basedir="."&gt;<br />&lt;target name="war" description="创建WEB发布包"&gt;<br />&lt;war warfile="${basedir}/EJBTest.war" webxml="${basedir}/WEB-INF/web.xml"&gt;<br />&lt;fileset dir="${basedir}"&gt;<br />&lt;include name="**"/&gt;<br />&lt;exclude name="build.xml" /&gt;<br />&lt;exclude name="/WEB-INF/web.xml" /&gt;<br />&lt;/fileset&gt;<br />&lt;/war&gt;<br />&lt;/target&gt;<br />&lt;/project&gt;<img src ="http://www.blogjava.net/software5168/aggbug/87658.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-12-14 11:03 <a href="http://www.blogjava.net/software5168/archive/2006/12/14/87658.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>电子书下载连接</title><link>http://www.blogjava.net/software5168/archive/2006/12/13/87382.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Wed, 13 Dec 2006 01:18:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/12/13/87382.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/87382.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/12/13/87382.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/87382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/87382.html</trackback:ping><description><![CDATA[ejb3.0实例教程<a href="http://book.knowsky.com/down/818.html"><br />http://book.knowsky.com/down/818.html</a><br /><br />J2EE应用与BEA WebLogic Server(第二版)<br /><a href="http://www.itepub.net/html/ebookcn/2006/0523/40144.html">http://www.itepub.net/html/ebookcn/2006/0523/40144.html</a><br /><br />JavaScript权威指南第四版<br /><a href="http://www.itepub.net/html/ebookcn/2006/0523/40153.html">http://www.itepub.net/html/ebookcn/2006/0523/40153.html</a><br /><br />Jbuilder2006<br /><a href="http://www.borland.com/downloads/download_jbuilder.html">http://www.borland.com/downloads/download_jbuilder.html</a><br />JBuilder2006破解<br /><a href="http://www.54bk.com/user1/2690/archives/2005/21893.html">http://www.54bk.com/user1/2690/archives/2005/21893.html</a><br /><img src ="http://www.blogjava.net/software5168/aggbug/87382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-12-13 09:18 <a href="http://www.blogjava.net/software5168/archive/2006/12/13/87382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>springMVC小结_1</title><link>http://www.blogjava.net/software5168/archive/2006/10/09/74084.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Mon, 09 Oct 2006 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/10/09/74084.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/74084.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/10/09/74084.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/74084.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/74084.html</trackback:ping><description><![CDATA[
		<br />1.web.xml中配置Spring的servlet和servlet-mapping<br />   &lt;servlet&gt;<br />        &lt;servlet-name&gt;example&lt;/servlet-name&gt;<br />        &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;<br />        &lt;init-param&gt; <br />            &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; <br />            &lt;param-value&gt;/WEB-INF/application-servlet.xml&lt;/param-value&gt; <br />        &lt;/init-param&gt; <br />        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />    &lt;/servlet&gt;<br />    &lt;servlet-mapping&gt;<br />        &lt;servlet-name&gt;example&lt;/servlet-name&gt;<br />        &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;<br />    &lt;/servlet-mapping&gt;<br />2.配置spring配置文件application-servlet.xml<br />   &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;<br />     &lt;property name="prefix"&gt;<br />         &lt;value&gt;/page/&lt;/value&gt;<br />     &lt;/property&gt;<br />     &lt;property name="suffix"&gt;<br />         &lt;value&gt;.jsp&lt;/value&gt;<br />     &lt;/property&gt;<br />   &lt;/bean&gt;<br />   &lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt;<br />        &lt;property name="mappings"&gt;<br />            &lt;props&gt;<br />                &lt;prop key="/login.do"&gt;loginAction&lt;/prop&gt;<br />            &lt;/props&gt;<br />        &lt;/property&gt;<br />   &lt;/bean&gt;<br />   &lt;bean id="loginAction" class="loginAction"&gt;<br />        &lt;property name="commandClass"&gt;<br />            &lt;value&gt; LoginActionVo  &lt;/value&gt;<br />        &lt;/property&gt;<br />        &lt;property name="formView"&gt;<br />            &lt;value&gt;login&lt;/value&gt;<br />        &lt;/property&gt;<br />        &lt;property name="sessionForm"&gt;<br />            &lt;value&gt;true&lt;/value&gt;<br />        &lt;/property&gt;<br />        &lt;property name="serviceLocator"&gt;<br />            &lt;ref bean="servicelocator" /&gt;<br />        &lt;/property&gt;<br /> &lt;/bean&gt;<br />3.新建類繼承SimpleFormController﹐並複寫protected Object formBackingObject(HttpServletRequest request) 和 protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response,<br /> Object cmd, BindException ex)。常用結構為<br />   protected Object formBackingObject(HttpServletRequest request){<br />      LoginActionVo  loginActionVo   = new LoginActionVo ();<br />      request.setAttribute(" loginActionVo", loginActionVo);<br />      return loginActionVo;<br />   }<br />   protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response,<br />       Object cmd, BindException ex){<br />      LoginActionVo  loginActionVo =(LoginActionVo)cmd;<br />      Map map = new HashMap();<br />     map.put(" loginActionVo", loginActionVo);<br />     request.getSession().setAttribute(this.getFormSessionAttributeName(), loginActionVo);<br />     return new ModelAndView("login",map);<br />  }<br /><p>4.將jsp頁面參數和VO進行綁定。綁定的方法為頁面元素name和VO對象對應﹐當進行深層次的綁定時﹐要注意﹐在變量的get方法中進行初始化。在servlet2.4容器中可以不用c:out標籤<br />輸入框綁定﹕&lt;input name="user.name"  value = "&lt;c:out value="${loginActionVo.user.name}"/&gt;" type="text" disabled="disabled"  size="14" maxlength="14" /&gt;&lt;/td&gt;<br />VO為﹕<br /> public class loginActionVo{<br />    private User user;<br />    public User getUser(User user){<br />      if( user == null){<br />         user = new User();<br />      }<br />      return user;<br />   }<br /> }<br /><br />   <br /></p><img src ="http://www.blogjava.net/software5168/aggbug/74084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-10-09 15:14 <a href="http://www.blogjava.net/software5168/archive/2006/10/09/74084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>springMVC心得</title><link>http://www.blogjava.net/software5168/archive/2006/09/17/70138.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Sun, 17 Sep 2006 06:11:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/09/17/70138.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/70138.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/09/17/70138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/70138.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/70138.html</trackback:ping><description><![CDATA[
		<p>以SimpleFormController為例<br />1。spring 接收一個請求後首先會判斷"get"還是"post"方法<br /><br />2。1 "get"方法時<br />         2。1。1 首先創建一個command對象﹐通過調用AbstractFormController的formBackingObject方法得到﹐通常是一個pojo﹐根據name用來和提交的數據綁定。<br />          2。1。2 然後會創建一個BindException對象﹐裡面包括command對象﹐和其他一些屬性。<br />           2。1。3 判斷sessionForm 屬性﹐默認為false。如果為true﹐就會把command對象對象保存在session裡     面。session中key為類名+".FORM." + command對象名。可以通過request.getSession().getAttribute(this.getFormSessionAttributeName(request));得到command對象。<br />      <br />   2。1。4 調用AbstractFormController的referenceData方法。這個方法默認為空﹐可以復寫來初始化頁面參數。<br /><br />2。1。5 返回ModelAndView對象﹐返回formview頁面。</p>
		<p>2 。2 “post”方法時<br />   2。2。1 首先得到command對象,如果SessionForm = false﹐調用formBackingObjectde創建<br />                     如果SessionForm = true,從request.getSession中得到原command對象﹐然後將command對象從<br />                     Session中刪除。<br />  2。2。2  然後會創建一個ServletRequestDataBinder對象﹐裡面包括command對象﹐和其他一些屬性。<br />                   這個過程將調用initBinder()﹔可以複寫這個方法初始化數據。<br /> 2。2。3 調用processFormSubmission(HttpServletRequest request, HttpServletResponse response, Object command,  BindException errors)。有錯誤時返回formview頁面﹐否則進入successview頁面。這個過程將調用onSubmit(Object command)﹐必須複寫這個方法放入業務邏輯。<br /> <br />   <br /><br /><br /><br /><br /></p>
<img src ="http://www.blogjava.net/software5168/aggbug/70138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-09-17 14:11 <a href="http://www.blogjava.net/software5168/archive/2006/09/17/70138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>springMVC第四個例子</title><link>http://www.blogjava.net/software5168/archive/2006/09/06/68084.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Wed, 06 Sep 2006 10:03:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/09/06/68084.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/68084.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/09/06/68084.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/68084.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/68084.html</trackback:ping><description><![CDATA[
		<p>1./WEB-INF/web.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" <br /> xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>" <br /> xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" <br /> xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a><br /> <a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>"&gt;<br />&lt;!--<br />&lt;!DOCTYPE web-app<br />    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"<br />    "<a href="http://java.sun.com/dtd/web-app_2_3.dtd">http://java.sun.com/dtd/web-app_2_3.dtd</a>"&gt;<br />&lt;web-app&gt;<br />--&gt;<br /> <br /> &lt;!--<br /> &lt;context-param&gt;<br />     &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />     &lt;param-value&gt;/WEB-INF/application-servlet.xml&lt;/param-value&gt;<br />   &lt;/context-param&gt;<br /> &lt;listener&gt;<br />     &lt;listener-class&gt;<br />       org.springframework.web.context.ContextLoaderListener<br />     &lt;/listener-class&gt;<br />   &lt;/listener&gt;<br />   --&gt;<br /> &lt;servlet&gt; <br />        &lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />        &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;  <br />  &lt;init-param&gt; <br />          &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; <br />          &lt;param-value&gt;/WEB-INF/application-servlet.xml&lt;/param-value&gt; <br />      &lt;/init-param&gt;<br />  &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />    &lt;/servlet&gt; <br /> <br />    &lt;servlet-mapping&gt; <br />        &lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />        &lt;url-pattern&gt;*.do&lt;/url-pattern&gt; <br />    &lt;/servlet-mapping&gt; <br /> <br />&lt;!--<br /> &lt;taglib&gt; <br />      &lt;taglib-uri&gt;/spring&lt;/taglib-uri&gt; <br />      &lt;taglib-location&gt;/WEB-INF/spring.tld&lt;/taglib-location&gt; <br /> &lt;/taglib&gt;<br />--&gt; <br />&lt;/web-app&gt;<br /><br />2./WEB-INF/application-servlet.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt; <br />&lt;!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "<a href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</a>"&gt; <br />&lt;beans&gt; <br />    &lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt; <br />        &lt;property name="mappings"&gt; <br />            &lt;props&gt; <br />                &lt;prop key="/login.do"&gt;loginAction&lt;/prop&gt; <br />            &lt;/props&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt; <br />    <br />    &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; <br />        &lt;property name="viewClass"&gt; <br />            &lt;value&gt;org.springframework.web.servlet.view.JstlView&lt;/value&gt; <br />        &lt;/property&gt; <br />        &lt;property name="prefix"&gt; <br />            &lt;value&gt;/&lt;/value&gt; <br />        &lt;/property&gt; <br />        &lt;property name="suffix"&gt; <br />            &lt;value&gt;.jsp&lt;/value&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt; <br />    <br />    &lt;bean id="loginAction" class="onlyfun.caterpillar.LoginAction"&gt; <br />        &lt;property name="commandName"&gt;<br />         &lt;value&gt;command&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="commandClass"&gt; <br />            &lt;value&gt;onlyfun.caterpillar.LoginForm&lt;/value&gt; <br />        &lt;/property&gt; <br />        &lt;property name="successView"&gt; <br />            &lt;value&gt;success&lt;/value&gt; <br />        &lt;/property&gt; <br />        &lt;property name="formView"&gt; <br />            &lt;value&gt;form&lt;/value&gt; <br />        &lt;/property&gt;<br />       &lt;property name="user"&gt;          <br />            &lt;ref local="user" /&gt;<br />        &lt;/property&gt;<br />    &lt;/bean&gt; <br />   <br />   &lt;bean id="user" class="onlyfun.caterpillar.User"&gt;<br />     &lt;property name="username"&gt;<br />         &lt;value&gt;111&lt;/value&gt;<br />     &lt;/property&gt;<br />     &lt;property name="password"&gt;<br />         &lt;value&gt;111&lt;/value&gt;<br />     &lt;/property&gt;<br />    &lt;/bean&gt;<br />&lt;/beans&gt;</p>
		<p>
				<br />
				<br />3./form.jsp<br />&lt;<a href="mailto:%@taglib">%@taglib</a> prefix="spring" uri="<a href="http://www.springframework.org/tags&quot;%">http://www.springframework.org/tags"%</a>&gt; <br />&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br />&lt;html&gt; <br />&lt;head&gt;&lt;title&gt;Login&lt;/title&gt;&lt;/head&gt; <br />&lt;body&gt;<br /> &lt;spring:bind path="command.*"&gt; <br />        &lt;font color="red"&gt;&lt;b&gt;${status.errorMessage}&lt;/b&gt;&lt;/font&gt;&lt;br&gt; <br />    &lt;/spring:bind&gt; <br />       請輸入使用者名稱與密碼：&lt;p&gt;     <br />    &lt;form name="loginform" action="login.do" method="post"&gt; <br />     &lt;spring:bind path="command.username"&gt;   <br />          名稱 &lt;input type="text" name="${status.expression}" value="${status.value}"/&gt;<br />          &lt;font color="red"&gt;${status.errorMessage}&lt;/font&gt;&lt;br&gt;<br />     &lt;/spring:bind&gt;<br />     &lt;spring:bind path="command.password"&gt;  <br />          密碼 &lt;input type="password" name="${status.expression}" value="${status.value}"/&gt;<br />          &lt;font color="red"&gt;${status.errorMessage}&lt;/font&gt;&lt;br&gt;<br />     &lt;/spring:bind&gt; <br />        &lt;input type="submit" value="確定"/&gt; <br />    &lt;/form&gt; <br />      注意：輸入錯誤會再回到這個頁面中。  <br />&lt;/body&gt; <br />&lt;/html&gt;<br /><br />4./index.jsp<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />  &lt;head&gt;<br />  &lt;/head&gt; <br />  &lt;body&gt;   <br />    begin......<br />    &lt;%<br />     response.sendRedirect("login.do");<br />    %&gt;<br />  &lt;/body&gt;<br />&lt;/html&gt;<br /><br />5./success.jsp<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br />&lt;<a href="mailto:%@taglib">%@taglib</a> prefix="c" uri="<a href="http://java.sun.com/jsp/jstl/core&quot;%">http://java.sun.com/jsp/jstl/core"%</a>&gt;<br />&lt;html&gt; <br />&lt;head&gt;&lt;title&gt;Login Success&lt;/title&gt;&lt;/head&gt; <br />&lt;body&gt; <br />    &lt;H1&gt;&lt;c:out value="用戶名﹕${user}"/&gt;&lt;/H1&gt; <br />&lt;/body&gt; <br />&lt;/html&gt;<br /><br />6./WEB-INF/classes/onlyfun/caterpillar/LoginAction.class<br />package onlyfun.caterpillar; </p>
		<p>import org.springframework.validation.BindException;<br />import org.springframework.web.servlet.mvc.SimpleFormController; <br />import org.springframework.web.servlet.*; </p>
		<p>public class LoginAction extends SimpleFormController { <br />    private User user;<br />    protected ModelAndView onSubmit(Object command,BindException errors) throws Exception { <br />       LoginForm form = (LoginForm) command; <br />       String username = user.getUsername();<br />       String password = user.getPassword();<br />       if(username.equals(form.getUsername()) &amp;&amp; <br />         password.equals(form.getPassword())) { <br />          return new ModelAndView(this.getSuccessView(),"user", form.getUsername());<br />       }<br />       else { <br />        errors.reject("loginfail", "使用者名稱或密碼錯誤"); <br />        if(!(username.equals(form.getUsername()))){<br />         errors.rejectValue("username", "error", null, "使用者名稱錯誤");<br />        }<br />       if(!(password.equals(form.getPassword()))){<br />         errors.rejectValue("password", "error", null, "密碼錯誤"); <br />        }       <br />           return new ModelAndView(this.getFormView(),errors.getModel()); <br />       } <br />    }<br />    public User getUser() {<br />     return user;<br />    }<br />    public void setUser(User user) {<br />     this.user = user;<br />    } <br />}</p>
		<p>
				<br />
				<br />7./WEB-INF/classes/onlyfun/caterpillar/LoginForm.class<br />package onlyfun.caterpillar; </p>
		<p>public class LoginForm { <br />    private String username; <br />    private String password; <br />    <br />    public void setUsername(String username) { <br />       this.username = username; <br />    } <br />    <br />    public void setPassword(String password) { <br />       this.password = password; <br />    } <br />    <br />    public String getUsername() { <br />       return username; <br />    } <br />    <br />    public String getPassword() { <br />       return password; <br />    } <br />}<br /><br />8./WEB-INF/tags/spring.tld<br /><br />9./WEB-INF/tags/c.tld<br /><br />10./WEB-INF/classes/onlyfun/caterpillar/User.class<br />package onlyfun.caterpillar;</p>
		<p>public class User {<br /> private String username;<br /> private String password;<br /> public String getPassword() {<br />  return password;<br /> }<br /> public void setPassword(String password) {<br />  this.password = password;<br /> }<br /> public String getUsername() {<br />  return username;<br /> }<br /> public void setUsername(String username) {<br />  this.username = username;<br /> }<br />}</p>
<img src ="http://www.blogjava.net/software5168/aggbug/68084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-09-06 18:03 <a href="http://www.blogjava.net/software5168/archive/2006/09/06/68084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ServletConfig与ServletContext的区别</title><link>http://www.blogjava.net/software5168/archive/2006/09/05/67752.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Tue, 05 Sep 2006 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/09/05/67752.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/67752.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/09/05/67752.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/67752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/67752.html</trackback:ping><description><![CDATA[ HttpServletRequest,HttpServletResponse:这两个属性的作用范围最小。<br />    时间上：只是本身请求和应答完成就失效，当然转发是把当前的request对象取出来传给另一<br />          个资源，其实本身的request对象还是只生存到本次请求结束，response也同样。<br />    空间上：只能发送请求的客户端有效。<br /><br />    HttpSession:一次连结到客户端关闭，时间作用范围比上面两个大，空间任用范围相同。<br /><br />    ServletConfig:从一个servlet被实例化后，对任何客户端在任何时候访问有效，但仅对本servlet<br />    有效，一个servlet的ServletConfig对象不能被另一个servlet访问。<br /><br />    ServletContext:对任何servlet，任何人在任何时间都有效，这才是真正全局的对象。<br /><br />    那么，ServletConfig参数和ServletContext参数到底应该如何使用，如何取得？<br /><br />    一般来说，对整个应用的配置，为了不使用“硬编码”，应该配置为ServletContext参数，比如字<br />    符集设定。<br />    &lt;web-app&gt;<br />        .................<br />        &lt;init-param&gt;<br />            &lt;param-name&gt;charset&lt;/param-name&gt; <br />            &lt;param-value&gt;GB2312&lt;/param-value&gt; <br />        &lt;/init-param&gt;<br />        .................<br />    &lt;/web-app&gt;<br />    注意以上格式只是2。0以后的标准格式，旧容器（引擎）采用服务商自己的格式配置。注意它的<br />    父元素应该是&lt;web-app&gt;也就是说它是对一个应用作用的。<br /><br />    而如果只有一个特定的servlet要设定的参数，其它servlet不能共享，应该配置为ServletConfig<br />    参数，如一个读取附件的servlet要用到绝对目录，而别的servlet不会用到：<br />    &lt;servlet&gt;<br />            &lt;servlet-name&gt;GetAtt&lt;/servlet-name&gt;<br />        &lt;servlet-class&gt;mail.GetAttServlet&lt;/servlet-class&gt;<br />        &lt;init-param&gt;<br />            &lt;param-name&gt;absPath&lt;/param-name&gt; <br />            &lt;param-value&gt;/usr/mail/ax/axman/Maildir/&lt;/param-value&gt; <br />        &lt;/init-param&gt;<br />    &lt;/servlet&gt;<br />    不用说，因为在&lt;servlet&gt;标签中已经指定了name和class,也就是说只有mail.GetAttServlet这个<br />    servlet中才能取到path,而别的Servlet是不能取到的。<br /><br />    那么如何访问这两个对象的参数呢？<br />    访问ServletConfig参数：<br />        首先要取得ServletConfig对象，然后调用它的getInitParameter();方法。要访问<br />    ServletConfig对象，jsp中直接使用config内置对象，但因为你的JSP编译后的servlet一般不会被<br />    加到web.xml中的，所以一般不会通过jsp来取对本JSP编译后的servlet的配置参数，那么在servlet<br />    中要得到ServletConfig对象有两种方法：<br /><br />    在inii()方法中取到：通过init的重载方法传递<br /><br />    .....<br />    public class Test extends HttpServlet <br />    {<br />        ServletConfig config;<br />        public void init(ServletConfig config) throws ServletException {<br />            this.config = config;<br />        }<br />        ..................<br />    }<br />    然后在下面的方法中就可以访问config对象。但要注意，为了确保能从构造方法中到到当前servlet的<br />    config对象，应该调用父类的构造方法：<br />    .....<br />    public class Test extends HttpServlet <br />    {<br />        ServletConfig config;<br />        public void init(ServletConfig config) throws ServletException {<br />            super.init(config);<br />            this.config = config;<br />        }<br />        ..................<br />    }<br /><br />    通过getServletConfig()方法直接到时，这样做的好处是不必调手工传递属性，想在任何时候都可<br />    以得到。<br /><br />    还有第三种方法，要自己实现一些接口，这里作为一般讨论就不介绍了。<br /><br />    要访问ServletContext对象，只要从现有的ServletConfig对象getServletContext（）就可以了，然后<br />    调用它的getInitParameter()方法就可以获取它的参数。<br /><br />    按说：ServletContext对象的作用域比ServletConfig作用域大，为什么要从ServletConfig中到得<br />    ServletContext对象呢？我个人认为：容器保存了很多个ServletContext对象，请求时容器到底取哪一个<br />    给你呢？那就取其中包含ServletConfig信息的那个给你，就是说取ServletConfig对象的父级对象。就好<br />    象HttpSession要从requset中取得一样，就是取那个包含当前requese对象的session对象给你，这只是我<br />    的个人想法，还没有来得及看具体实现。反正就这么用吧。 <img src ="http://www.blogjava.net/software5168/aggbug/67752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-09-05 10:26 <a href="http://www.blogjava.net/software5168/archive/2006/09/05/67752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring + jsf</title><link>http://www.blogjava.net/software5168/archive/2006/08/25/65776.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Fri, 25 Aug 2006 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/25/65776.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/65776.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/25/65776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/65776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/65776.html</trackback:ping><description><![CDATA[
		<div>JSF和Spring集成的资料比较少,原理是获得彼此的上下文引用,以此进一步获得各自管理的bean,这是可能的,因为两者是web应用框架都遵循servlet规范,为二者整合提供了可能和基础.</div>
		<div> </div>
		<div>在Spring中ApplicationContext是相当重要的类,对于web应用,它还包装了javax.servlet.ServletContext,为web应用提供了所有可以利用的数据,包括可管理bean,Faces中通过FacesContext类可以获得所有可以利用的资源,同样包括JSF的可管理支持bean,它们都围绕着ServletContext提供了自己的门面,通过各自的门面在Servlet容器的世界里彼此相通.</div>
		<div>本文介绍两种方式,实现二者集成:</div>
		<div>1.         通过写自己的类来完成二者的连通,实际上只是获得彼此世界里存活的bean,对于JSF中事件处理可能需要更进一步的构思和编码,为了这点,第二个方法介绍了一种框架.</div>
		<div>2.         使用框架完成二者集成.</div>
		<div> </div>
		<div>一  自己动手,下面的代码以示例为主,其它涉及的类和接口略去.</div>
		<div>这个工具类提供在JSF世界里查找Spring管理的bean.也实现在Spring中查找JSF组件的方法.</div>
		<div>package com.skysoft.rbac.dao;</div>
		<div> </div>
		<div>import org.springframework.context.ApplicationContext;</div>
		<div>import org.springframework.web.context.support.WebApplicationContextUtils;</div>
		<div>import javax.faces.context.FacesContext;</div>
		<div>import javax.servlet.ServletContext;</div>
		<div>import javax.faces.el.ValueBinding;</div>
		<div>import javax.faces.FactoryFinder;</div>
		<div>import javax.faces.application.Application;</div>
		<div>import javax.faces.application.ApplicationFactory;</div>
		<div> </div>
		<div>public final class SpringFacesUtil {</div>
		<div>  public SpringFacesUtil() {</div>
		<div>  }</div>
		<div>  /**</div>
		<div>   * 从Spring中查找bean.</div>
		<div>   * @param beanname String</div>
		<div>   * @return Object</div>
		<div>   */</div>
		<div>  public static Object findBean(String beanname) {</div>
		<div>    ServletContext context = (ServletContext) FacesContext.getCurrentInstance().</div>
		<div>        getExternalContext().getContext();</div>
		<div>    ApplicationContext appctx = WebApplicationContextUtils.</div>
		<div>        getRequiredWebApplicationContext(context);</div>
		<div>    return appctx.getBean(beanname);</div>
		<div>  }</div>
		<div>  /**</div>
		<div>   * 从JSF中查找bean.</div>
		<div>   * @param beanname String</div>
		<div>   * @return Object</div>
		<div>   */</div>
		<div>  public static Object lookupBean(String beanname) {</div>
		<div>    Object obj = getValueBinding(getJsfEl(beanname)).getValue(FacesContext.</div>
		<div>        getCurrentInstance());</div>
		<div>    return obj;</div>
		<div>  }</div>
		<div> </div>
		<div>  private static ValueBinding getValueBinding(String el) {</div>
		<div>    return getApplication().createValueBinding(el);</div>
		<div>  }</div>
		<div> </div>
		<div>  private static Application getApplication() {</div>
		<div>    ApplicationFactory appFactory = (ApplicationFactory) FactoryFinder.</div>
		<div>        getFactory(FactoryFinder.APPLICATION_FACTORY);</div>
		<div>    //FactoryFinder.FACES_CONTEXT_FACTORY</div>
		<div>    //FactoryFinder.RENDER_KIT_FACTORY</div>
		<div>    return appFactory.getApplication();</div>
		<div>  }</div>
		<div> </div>
		<div>  private static String getJsfEl(String value) {</div>
		<div>    return "#{" + value + "}";</div>
		<div>  }</div>
		<div>}</div>
		<div>下面定义一个由JSF管理的bean:</div>
		<div>package com.skysoft.rbac.dao;</div>
		<div> </div>
		<div>import javax.servlet.ServletContext;</div>
		<div> </div>
		<div>import org.springframework.context.ApplicationContext;</div>
		<div>import org.springframework.web.context.support.WebApplicationContextUtils;</div>
		<div>import org.skysoft.struts.jsf.util.FacesUtils;</div>
		<div> </div>
		<div>public class ServiceLocatorBean</div>
		<div>    implements ServiceLocator {</div>
		<div>  private static final String DAO_SERVICE_BEAN_NAME = "userDAO";</div>
		<div>  //这个dao就是由Spring提供的管理bean,这个dao可以使用Hibernate实现.</div>
		<div>  private UserDAO dao;</div>
		<div> </div>
		<div>  public ServiceLocatorBean() {</div>
		<div>    this.dao = (UserDAO)SpringFacesUtil.findBean(DAO_SERVICE_BEAN_NAME);</div>
		<div>  }</div>
		<div> </div>
		<div>  public UserDAO getDao() {</div>
		<div>    return dao;</div>
		<div>  }</div>
		<div>}</div>
		<div>下面是一个使用ServiceLocatorBean的类.</div>
		<div>public class UserDAOImp</div>
		<div>    extends HibernateDaoSupport implements UserDAO {</div>
		<div>  private UserDAO dao;</div>
		<div>  private List list;</div>
		<div> </div>
		<div>  public UserDAOImp() {}</div>
		<div> </div>
		<div>  public List getList() {</div>
		<div>    if (list == null) {</div>
		<div>      list = dao.getList();</div>
		<div>    }</div>
		<div>    return list;</div>
		<div>  }</div>
		<div> </div>
		<div>  public UserDAO getDao() {</div>
		<div>    return dao;</div>
		<div>  }</div>
		<div> </div>
		<div>  public void setDao(UserDAO dao) {</div>
		<div>    this.dao = dao;</div>
		<div>  }</div>
		<div>}</div>
		<div> </div>
		<div>在faces-config.xml中的配置:</div>
		<div>       &lt;managed-bean&gt;</div>
		<div>              &lt;managed-bean-name&gt;serviceLocatorBean&lt;/managed-bean-name&gt;</div>
		<div>              &lt;managed-bean-class&gt;com.skysoft.rbac.dao.ServiceLocatorBean&lt;/managed-bean-class&gt;</div>
		<div>              &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;</div>
		<div>       &lt;/managed-bean&gt;</div>
		<div>       &lt;managed-bean&gt;</div>
		<div>              &lt;managed-bean-name&gt;User&lt;/managed-bean-name&gt;</div>
		<div>              &lt;managed-bean-class&gt;com.skysoft.rbac.User&lt;/managed-bean-class&gt;</div>
		<div>              &lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;</div>
		<div>              &lt;managed-property&gt;</div>
		<div>                     &lt;property-name&gt;serviceLocator&lt;/property-name&gt;</div>
		<div>                     &lt;property-class&gt;com.skysoft.rbac.dao.ServiceLocatorBean&lt;/property-class&gt;</div>
		<div>                     &lt;value&gt;#{serviceLocatorBean}&lt;/value&gt;</div>
		<div>              &lt;/managed-property&gt;</div>
		<div>       &lt;/managed-bean&gt;</div>
		<div>在applicationContext.xml中的配置:</div>
		<div>       &lt;bean id="userDAO" class="com.skysoft.rbac.dao.UserDAOImp"&gt;</div>
		<div>              &lt;property name="sessionFactory"&gt;</div>
		<div>                     &lt;ref local="sessionFactory" /&gt;</div>
		<div>              &lt;/property&gt;</div>
		<div>       &lt;/bean&gt;</div>
		<div>二 使用框架</div>
		<div>1 介绍</div>
		<div>这个框架是Spring相关项目,提供一个包de.mindmatters.faces.spring,这个包包含JSF和Spring框架综合集成的粘合代码,这些代码以独立于一个实现的方式完成,这样它能和任何JSF实现一起使用.</div>
		<div>本包的提供的代码主要目的是尽可能透明的集成两个框架,主要特征:</div>
		<div>l         JSF/JSP开发者应该能访问Spring管理的Beans,就好象它们是由JSF管理的.</div>
		<div>l         JSF可管理beans应能集成入Spring.</div>
		<div>l         RequestHandledEvent事件也应该能被发布到Spring.</div>
		<div>2  JSF配置集成</div>
		<div>本包构造了一个基于faces配置文件(e.g. /WEB-INF/faces-config.xml)的WebApplicationContext类, 让它成为遵循"spring-beans" DTD配置文件(e.g. defined in /WEB-INF/applicationContext.xml)来配置的ApplicationContext的孩子,这样依从"faces-config" DTD的WebApplicationContext就是全特征的,即自动拥有如下功能: </div>
		<div>l         JSF可管理beans实现了Spring的*Aware interfaces:</div>
		<div>ApplicationContextAware </div>
		<div>BeanFactoryAware </div>
		<div>BeanNameAware </div>
		<div>ResourceLoaderAware </div>
		<div>ServletContextAware </div>
		<div>l         JSF可管理beans实现Spring的lifecycle interfaces:</div>
		<div>InitializingBean </div>
		<div>DisposableBean </div>
		<div>l         实现Spring的FactoryBean interface</div>
		<div>l         实现Spring的ApplicationListener interface </div>
		<div>l         发布ApplicationEvent事件.</div>
		<div>l         从资源中读取消息.</div>
		<div>等等,更多可看Spring.</div>
		<div>3 访问方式</div>
		<div>1) 从JSF中程序化的访问Spring管理的beans.</div>
		<div>因为在FacesWebApplicationContext和ApplicationContext之间有层次关系,所以你的JSF可管理支持beans能容易的实现ApplicationContextAware接口,并能通过getBean方法访问它而不管它是否定义在FacesWebApplicationContext中还是定义在父ApplicationContext类对象中.</div>
		<div>2) 通过JSF EL从JSF中访问Spring管理的beans.</div>
		<div>能够使用JSF EL访问beans无论你引用的bean由JSF管理还是由Spring管理.两个bean上下文在存取时间合并.</div>
		<div>a) 直接访问:</div>
		<div>如果一个带有请求名字的bean只存在于Spring上下文内的话,这个bean被使用,bean的singleton属性设置被完全保持.</div>
		<div>b) 区域化访问(scoped access):</div>
		<div>如果你要从JSF定义bean的作用域的能力上得益还想让那个bean由Spring管理,那么就要在两个上下文中定义,只是对于JSF上下文中的定义的类类型要使用de.mindmatters.faces.spring.SpringBeanFactory类,你还应该设置那个bean的singleton属性到false,因这能覆盖你的作用域设置.在你使用JSF EL访问bean时,你总能获得一个遵从你在JSF上下文中定义的作用域设置的由Spring管理的bean的实例.</div>
		<div> </div>
		<div>三 用法</div>
		<div>通常,就象设置任何其它JSF web应用一样设置你的web应用,下面的样例配置展示怎样使能上面提到的特征。</div>
		<div>
				<b>在web.xml</b>
				<b>配置中必须加入下列配置条目,</b>
				<b>同时注意把该库的jsf-spring.jar</b>
				<b>放在适当的位置.</b>
		</div>
		<div>&lt;web-app&gt;</div>
		<div>    .........</div>
		<div>    &lt;!--</div>
		<div>        过滤器用于向Spring发布RequestHandledEvent,它应该影射到和FacesServlet url相同的模式.</div>
		<div>    --&gt;    </div>
		<div>    &lt;filter&gt;</div>
		<div>        &lt;filter-name&gt;RequestHandled&lt;/filter-name&gt;</div>
		<div>        &lt;filter-class&gt;de.mindmatters.faces.spring.support.RequestHandledFilter&lt;/filter-class&gt;</div>
		<div>    &lt;/filter&gt;</div>
		<div>       </div>
		<div>    &lt;filter-mapping&gt;</div>
		<div>        &lt;filter-name&gt;RequestHandled&lt;/filter-name&gt;</div>
		<div>        &lt;url-pattern&gt;*.faces&lt;/url-pattern&gt;</div>
		<div>    &lt;/filter-mapping&gt;</div>
		<div> </div>
		<div>    &lt;!--</div>
		<div>    这个侦听器用于装入Spring beans的父应用上下文.</div>
		<div>    --&gt;</div>
		<div>    &lt;listener&gt;</div>
		<div>        &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;</div>
		<div>    &lt;/listener&gt;</div>
		<div>    .........</div>
		<div>&lt;/web-app&gt;</div>
		<div>下面的一些说明,都可以通过下载这个Spring相关项目得到,列在这里只为演示上面的说明的功能.</div>
		<div>WEB-INF/faces-config.xml </div>
		<div>&lt;!-- 一个纯JSF管理的bean --&gt;</div>
		<div>&lt;managed-bean&gt;</div>
		<div>    &lt;managed-bean-name&gt;jsfBean&lt;/managed-bean-name&gt;</div>
		<div>    &lt;managed-bean-class&gt;example.NameBean&lt;/managed-bean-class&gt;</div>
		<div>    &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;</div>
		<div>    &lt;managed-property&gt;</div>
		<div>        &lt;property-name&gt;name&lt;/property-name&gt;</div>
		<div>    &lt;/managed-property&gt;</div>
		<div>&lt;/managed-bean&gt;</div>
		<div>&lt;!--一个SpringBeanScope用来定义Spring可管理bean的作用域.--&gt;</div>
		<div>       &lt;managed-bean&gt;</div>
		<div>              &lt;managed-bean-name&gt;scopedAccessSpringBean&lt;/managed-bean-name&gt;</div>
		<div>       &lt;managed-bean-class&gt;de.mindmatters.faces.spring.SpringBeanScope&lt;/managed-bean-class&gt;</div>
		<div>              &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;</div>
		<div>       &lt;/managed-bean&gt;</div>
		<div>&lt;!-- 这是一个纯JSF可管理bean,它持有一个到Spring可管理bean的一个引用. --&gt;</div>
		<div>&lt;managed-bean&gt;</div>
		<div>    &lt;managed-bean-name&gt;referencingBean&lt;/managed-bean-name&gt;</div>
		<div>    &lt;managed-bean-class&gt;example.ReferencingBean&lt;/managed-bean-class&gt;</div>
		<div>    &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;</div>
		<div>    &lt;managed-property&gt;</div>
		<div>        &lt;property-name&gt;referencedBean&lt;/property-name&gt;</div>
		<div>        &lt;value&gt;#{managedPropertyAccessSpringBean}&lt;/value&gt;</div>
		<div>    &lt;/managed-property&gt;</div>
		<div>&lt;/managed-bean&gt;</div>
		<div>WEB-INF/applicationContext.xml (partial)</div>
		<div>&lt;!-- 一个纯Spring的可管理bean --&gt;</div>
		<div>&lt;bean id="directAccessSpringBean" class="example.NameBean"/&gt;</div>
		<div>&lt;!-- 一个向JSF作用域提供的可管理bean.  --&gt;</div>
		<div>&lt;bean id="scopedAccessSpringBean" class="example.NameBean" singleton="false"/&gt;</div>
		<div>&lt;!-- 一个纯Spring的可管理bean,它由一个JSF可管理bean引用.(当然了,它也能被直接访问啦.) --&gt;</div>
		<div>&lt;bean id="managedPropertyAccessSpringBean" class="example.NameBean" singleton="false"/&gt;</div>
		<div>参考:</div>
		<div>
				<a href="http://jsf-spring.sourceforge.net/">http://jsf-spring.sourceforge.net/</a>   JSF-Spring,Spring相关项目官方站点,提供本文介绍的框架下载以及实例下载.</div>
		<div>
				<a href="http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-jsf.html">http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-jsf.html</a> 一篇关于JSF和Spring的文章.</div>
<img src ="http://www.blogjava.net/software5168/aggbug/65776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-25 14:06 <a href="http://www.blogjava.net/software5168/archive/2006/08/25/65776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>springMVC 第三個例子</title><link>http://www.blogjava.net/software5168/archive/2006/08/24/65526.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Thu, 24 Aug 2006 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/24/65526.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/65526.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/24/65526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/65526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/65526.html</trackback:ping><description><![CDATA[1./home.xsl<br />&lt;?xml version="1.0"?&gt;<br />&lt;xsl:stylesheet version="1.0" xmlns:xsl="<a href="http://www.w3.org/1999/XSL/Transform">http://www.w3.org/1999/XSL/Transform</a>"&gt;<br />    &lt;xsl:output method="html" omit-xml-declaration="yes" /&gt;<br />    &lt;xsl:template match="/"&gt;<br />        &lt;html&gt;<br />            &lt;head&gt;&lt;title&gt;Hello!&lt;/title&gt;&lt;/head&gt;<br />            &lt;body&gt;<br />                &lt;h1&gt;My First Words&lt;/h1&gt;<br />                &lt;xsl:for-each select="wordList/word"&gt;<br />                    &lt;xsl:value-of select="."/&gt;&lt;br /&gt;<br />                &lt;/xsl:for-each&gt; <br />            &lt;/body&gt;<br />        &lt;/html&gt;<br />    &lt;/xsl:template&gt;<br />&lt;/xsl:stylesheet&gt;<br /><br />2./index.html<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />  &lt;head&gt;    <br />  &lt;/head&gt;<br />  &lt;body&gt;<br />   &lt;center&gt;&lt;input type="button" value="xslt" onclick="location.href='home.htm'"&gt;&lt;/center&gt;<br />  &lt;/body&gt;<br />&lt;/html&gt;<br /><br />3./WEB-INF/web.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" <br /> xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>" <br /> xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" <br /> xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a><br /> <a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>"&gt; <br /> &lt;servlet&gt; <br />        &lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />        &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;<br />  &lt;init-param&gt; <br />         &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; <br />         &lt;param-value&gt;/WEB-INF/application-servlet.xml&lt;/param-value&gt; <br />     &lt;/init-param&gt;  <br />    &lt;/servlet&gt;  <br />    &lt;servlet-mapping&gt; <br />        &lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />        &lt;url-pattern&gt;*.htm&lt;/url-pattern&gt; <br />    &lt;/servlet-mapping&gt;   <br />&lt;/web-app&gt;<br /><br />4./WEB-INF/application-servlet.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt; <br />&lt;!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "<a href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</a>"&gt; <br />&lt;beans&gt; <br />    &lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt; <br />        &lt;property name="mappings"&gt; <br />            &lt;props&gt; <br />                &lt;prop key="/home.htm"&gt;homeAction&lt;/prop&gt; <br />            &lt;/props&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt;   <br />    &lt;bean id="bundleViewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"&gt; <br />        &lt;property name="basename"&gt; <br />            &lt;value&gt;views&lt;/value&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt;   <br />    &lt;bean id="homeAction" class="xslt.HomePageController"/&gt; <br />&lt;/beans&gt;<br /><br />5./WEB-INF/classes/views_zh_TW.properties<br />home.class=xslt.HomePage<br />home.stylesheetLocation=/home.xsl<br />home.root=wordList<br /><br />6./WEB-INF/classes/xslt/HomePage.class<br />package xslt;<br />import java.util.*;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br />import org.jdom.Element;<br />import org.jdom.output.DOMOutputter;<br />import org.springframework.web.servlet.view.xslt.AbstractXsltView;<br />import org.w3c.dom.Node;<br />public class HomePage extends AbstractXsltView {<br />  protected Node createDomNode( <br />          Map model, String rootName, HttpServletRequest req, HttpServletResponse res<br />      ) throws Exception {    <br />          org.jdom.Document doc = new org.jdom.Document();<br />          Element root = new Element(rootName);<br />          doc.setRootElement(root);<br />          List words = (List) model.get("wordList");<br />          for (Iterator it = words.iterator(); it.hasNext();) {<br />              String nextWord = (String) it.next();<br />              Element e = new Element("word");<br />              e.setText(nextWord);<br />              root.addContent(e);<br />          }<br />          // convert JDOM doc to a W3C Node and return<br />          return new DOMOutputter().output( doc );<br />      }<br />}<br /><br /><br />7./WEB-INF/classes/xslt/HomePageController.class<br />package xslt;<br />import java.util.*;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br />import org.springframework.web.servlet.ModelAndView;<br />import org.springframework.web.servlet.mvc.AbstractController;<br />public class HomePageController extends AbstractController{<br /> protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {<br />  Map map = new HashMap();<br />     List wordList = new ArrayList();         <br />     wordList.add("hello");<br />     wordList.add("world");        <br />     map.put("wordList", wordList);       <br />     return new ModelAndView("home", map);<br /> }<br />}<br /><img src ="http://www.blogjava.net/software5168/aggbug/65526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-24 15:18 <a href="http://www.blogjava.net/software5168/archive/2006/08/24/65526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM</title><link>http://www.blogjava.net/software5168/archive/2006/08/24/65491.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Thu, 24 Aug 2006 04:50:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/24/65491.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/65491.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/24/65491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/65491.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/65491.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN-LEFT: 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo2; tab-stops: list 24.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 14pt">Abstract<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">Java</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的世界裡，要操控</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，最簡單的方法莫過於使用</span>
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。在這裡我簡單的介紹如何用</span>
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">從無到有的建立一分</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、當有一份</span>
				<span lang="EN-US">XML file</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">時，如何將這個</span>
				<span lang="EN-US">XML file</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">讀進程式裡及如何利用</span>
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">將</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">透過</span>
				<span lang="EN-US">XSLT</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">轉成</span>
				<span lang="EN-US">HTML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是由</span>
				<span lang="EN-US">Brett Mclaughlin</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">Jason Hunter</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">編寫，在</span>
				<span lang="EN-US">
						<a href="http://www.jdom.org/">http://www.jdom.org</a>
				</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可免費下載。</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN-LEFT: 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo2; tab-stops: list 24.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 14pt; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">建立、新增、刪除、輸出</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 14pt">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">範例</span>
				<span lang="EN-US">1</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">展示如何建立、新增、刪除及輸出一份</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，每份</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">裡是由一個</span>
				<span lang="EN-US">Document</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">類別代表，所以一開始我們要先</span>
				<span lang="EN-US">new</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一個</span>
				<span lang="EN-US">Document</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在建構</span>
				<span lang="EN-US">Document</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">時應指明根節點，如果沒有指明，在建構應由</span>
				<span lang="EN-US">setRootElement</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">設定。基本上</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都可以化成一個樹狀結構，所以，在產生根節點之後，就由根節點開始增加子節點，新增的方式是呼叫</span>
				<span lang="EN-US">Element.addContent</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">將新的節點加入。刪除如果知道是某節點以下的子節點，則可呼叫</span>
				<span lang="EN-US">Element.getChildren</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">取得所有子節點，再找出要刪除的點節予以刪除。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">當建立好</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之後，通常我們會希望將它輸出到檔案，</span>
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供了</span>
				<span lang="EN-US">XMLOutputter</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">類別供我們輸出之用，輸出前要先設定編碼方式，不然，會以</span>
				<span lang="EN-US">UTF-8</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">為預設值，</span>
				<span lang="EN-US">setNewlines</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">則是指明輸出時是否要幫我們斷行，方便閱讀，如果沒有加這行指令，預設是不會斷行，那麼所有資料將在同一行上。</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">===== </span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">範例</span>
				<span lang="EN-US"> 1 =====</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import org.jdom.*;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import org.jdom.output.*;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import java.io.*;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import java.util.List;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">public class myCreate {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>public myCreate() {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>String[] strChapter = { "XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">簡論</span>
				<span lang="EN-US">", "</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">編寫</span>
				<span lang="EN-US">XML", "</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">剖析</span>
				<span lang="EN-US">XML", "</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">約制</span>
				<span lang="EN-US">XML", "</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">驗正</span>
				<span lang="EN-US">XML", "</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">轉換</span>
				<span lang="EN-US">XML" };</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>Element elmtRoot = new Element("Article");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>Document docJDOM = new Document(elmtRoot);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>//</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">新增</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>for(int i=0; i&lt;6; i++) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>Element elmtChapter = new Element("Chapter");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>elmtChapter.addContent(strChapter[i]);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>elmtChapter.setAttribute("sort", new Integer(i).toString());</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>
						<span style="mso-spacerun: yes"> </span>elmtRoot.addContent(elmtChapter);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>//</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">刪除</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>List lstChapter = elmtRoot.getChildren("Chapter");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>lstChapter.remove(4);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>//</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">輸出</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>OutputXML(docJDOM, "e:/myJDOM.xml");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>private void OutputXML(Document docXML, String strFilename) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>XMLOutputter fmt = new XMLOutputter();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>try {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>fmt.setEncoding("big5");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>fmt.setNewlines(true);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>FileWriter fwXML = new FileWriter(strFilename);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>fmt.output(docXML, fwXML);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>fwXML.close();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>catch (IOException e) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>
						<span style="mso-spacerun: yes"> </span>e.printStackTrace();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>public static void main(String[] args) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>myCreate myCreate1 = new myCreate();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN-LEFT: 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo2; tab-stops: list 24.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 14pt; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">讀進一份</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 14pt">XML file<o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目前</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最常被拿來應用的領域之一大概就是當作設定檔，因此，如何從檔案中讀入一份已存在的</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">更為重要。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是利用</span>
				<span lang="EN-US">SAX</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或</span>
				<span lang="EN-US">DOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">來剖析</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用</span>
				<span lang="EN-US">SAX</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">會比</span>
				<span lang="EN-US">DOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，所以一般都是用</span>
				<span lang="EN-US">SAX</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，如果對</span>
				<span lang="EN-US">SAX</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不熟悉，在</span>
				<span lang="EN-US">
						<a href="http://www.saxproject.org/">http://www.saxproject.org/</a>
				</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相關文件資料。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">範例</span>
				<span lang="EN-US">2</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就是用</span>
				<span lang="EN-US">SAX</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">建立</span>
				<span lang="EN-US">Document</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在建立</span>
				<span lang="EN-US">SAXBuilder</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">時傳入的參數指出是否用</span>
				<span lang="EN-US">DTD</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">驗正</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的合法性，</span>
				<span lang="EN-US">true</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示要，</span>
				<span lang="EN-US">false</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示不要。當呼叫</span>
				<span lang="EN-US">build</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之後</span>
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就已經幫我們用</span>
				<span lang="EN-US">SAX</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">建立好一棵</span>
				<span lang="EN-US">XML Tree</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，如此我們就可以很方便由</span>
				<span lang="EN-US">Tree</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中找到我們要的節點。</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">===== </span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">範例</span>
				<span lang="EN-US"> 2 =====</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import org.jdom.*;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import org.jdom.input.*;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import org.jdom.output.*;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import java.io.*;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import java.util.List;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">public class myRead {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>public myRead() {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>Document docJDOM;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>//</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">利用</span>
				<span lang="EN-US">SAX</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">建立</span>
				<span lang="EN-US">Document</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>SAXBuilder bSAX = new SAXBuilder(false);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>try {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>docJDOM = bSAX.build(new File("e:/myJDOM.xml"));</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>catch (JDOMException e) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>e.printStackTrace();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>return;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>//</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在根節點中加入一個新的子節點</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>Element elmtRoot = docJDOM.getRootElement();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>Element elmtChapter = new Element("Chapter");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>elmtChapter.setText("</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">驗正</span>
				<span lang="EN-US">XML");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>elmtChapter.setAttribute("sort", "4");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>elmtRoot.addContent(elmtChapter);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>//</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">印出所有根節點的子節點</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>List lstChildren = elmtRoot.getChildren("Chapter");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>for(int i=0; i&lt;lstChildren.size(); i++) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>Element elmtChild = (Element) lstChildren.get(i);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>System.out.println("Child " + i);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>System.out.println("<span style="mso-spacerun: yes">  </span>Text:" + elmtChild.getText());</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>System.out.println("<span style="mso-spacerun: yes">  </span>Attribute:" + elmtChild.getAttributeValue("sort"));</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>//</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">輸出到檔案</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>OutputXML(docJDOM, "e:/myJDOM2.xml");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>private void OutputXML(Document docXML, String strFilename) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>XMLOutputter fmt = new XMLOutputter();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>try {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>fmt.setEncoding("big5");</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>fmt.setNewlines(true);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>FileWriter fwXML = new FileWriter(strFilename);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>fmt.output(docXML, fwXML);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>fwXML.close();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>catch (IOException e) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>e.printStackTrace();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>public static void main(String[] args) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>myRead myRead1 = new myRead();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN-LEFT: 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo2; tab-stops: list 24.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">4.<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 14pt; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">轉換</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 14pt">XML</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 14pt; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">到</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 14pt">HTML<o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">要將</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">轉成</span>
				<span lang="EN-US">HTML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">當然要先寫好</span>
				<span lang="EN-US">XSL</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，但是即使寫好</span>
				<span lang="EN-US">XSL</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也並不提供</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">轉換，幸好在</span>
				<span lang="EN-US">JDOM</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安裝好之後，就會有</span>
				<span lang="EN-US">Apache</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">Xalan</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，它可以幫我們做這樣的轉換。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">要使用</span>
				<span lang="EN-US">Apache</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">Xalan</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，首先確定</span>
				<span lang="EN-US">xalan.jar</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">classpath</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">裡。</span>
				<span lang="EN-US">Xalan</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的第一個用法是在命令列執行，指令如下…</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">C:\&gt; java org.apache.xalan.xslt.Process –IN XML</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件</span>
				<span lang="EN-US"> –XSL XSL</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">樣版</span>
				<span lang="EN-US"> –OUT </span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">輸出檔名</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 24pt">
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">命令列的用法在一般的運用裡是很方便，但是我們有興趣的是在程式裡怎麼用。範例</span>
				<span lang="EN-US">4</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供了一個簡單的</span>
				<span lang="EN-US">sample</span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">===== </span>
				<span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">範例</span>
				<span lang="EN-US"> 4 =====</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import javax.xml.transform.TransformerFactory;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import javax.xml.transform.Transformer;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import javax.xml.transform.TransformerException;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import javax.xml.transform.TransformerConfigurationException;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">import javax.xml.transform.stream.*;</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">public class myGenHTML {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>public myGenHTML(String strXML, String strXSL, String strHTML) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>try {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>GenHTML(strXML, strXSL, strHTML);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>catch (TransformerConfigurationException e) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>e.printStackTrace();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>catch (TransformerException e) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">      </span>e.printStackTrace();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>private void GenHTML(String strXMLFile, String strXSLFile, String strHTMLFile) throws TransformerConfigurationException, TransformerException</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>{</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>TransformerFactory myFactory = TransformerFactory.newInstance();</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>Transformer myTransformer = myFactory.newTransformer(new StreamSource(strXSLFile));</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>myTransformer.transform(new StreamSource(strXMLFile), new StreamResult(strHTMLFile));</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>public static void main(String[] args) {</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>myGenHTML myGenHTML1 = new myGenHTML(args[0], args[1], args[2]);</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>}</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">}</span>
		</p>
<img src ="http://www.blogjava.net/software5168/aggbug/65491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-24 12:50 <a href="http://www.blogjava.net/software5168/archive/2006/08/24/65491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>springMVC 第二個例子</title><link>http://www.blogjava.net/software5168/archive/2006/08/23/65304.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Wed, 23 Aug 2006 08:29:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/23/65304.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/65304.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/23/65304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/65304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/65304.html</trackback:ping><description><![CDATA[
		<p>1./WEB-INF/web.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" <br /> xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>" <br /> xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" <br /> xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a><br /> <a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>"&gt;<br /> <br /> &lt;servlet&gt; <br />        &lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />        &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;<br />  &lt;init-param&gt; <br />         &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; <br />         &lt;param-value&gt;/WEB-INF/application-servlet.xml&lt;/param-value&gt; <br />     &lt;/init-param&gt;  <br />    &lt;/servlet&gt; <br /> <br />    &lt;servlet-mapping&gt; <br />        &lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />        &lt;url-pattern&gt;*.do&lt;/url-pattern&gt; <br />    &lt;/servlet-mapping&gt; <br /> <br /> &lt;welcome-file-list&gt;<br />     &lt;welcome-file&gt;form.jsp&lt;/welcome-file&gt;<br />   &lt;/welcome-file-list&gt;<br />&lt;/web-app&gt;<br /><br /><br />2./WEB-INF/application-servlet.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt; <br />&lt;!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "<a href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</a>"&gt; <br />&lt;beans&gt; <br />    &lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt; <br />        &lt;property name="mappings"&gt; <br />            &lt;props&gt; <br />                &lt;prop key="/login.do"&gt;loginAction&lt;/prop&gt; <br />            &lt;/props&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt; <br />    <br />    &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; <br />        &lt;property name="viewClass"&gt; <br />            &lt;value&gt;org.springframework.web.servlet.view.InternalResourceView&lt;/value&gt; <br />        &lt;/property&gt; <br />        &lt;property name="prefix"&gt; <br />            &lt;value&gt;/&lt;/value&gt; <br />        &lt;/property&gt; <br />        &lt;property name="suffix"&gt; <br />            &lt;value&gt;.jsp&lt;/value&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt; <br />    <br />    &lt;bean id="loginAction" class="onlyfun.caterpillar.LoginAction"&gt; <br />        &lt;property name="commandClass"&gt; <br />            &lt;value&gt;onlyfun.caterpillar.LoginForm&lt;/value&gt; <br />        &lt;/property&gt; <br />        &lt;property name="successView"&gt; <br />            &lt;value&gt;success&lt;/value&gt; <br />        &lt;/property&gt; <br />        &lt;property name="formView"&gt; <br />            &lt;value&gt;form&lt;/value&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt; <br />&lt;/beans&gt;<br /><br /><br />3./WEB-INF/classes/onlyfun/caterpillar/LoginAction.class<br />package onlyfun.caterpillar; </p>
		<p>import org.springframework.web.servlet.mvc.SimpleFormController; <br />import org.springframework.web.servlet.*; </p>
		<p>public class LoginAction extends SimpleFormController { <br />    protected ModelAndView onSubmit(Object command) throws Exception { <br />       LoginForm form = (LoginForm) command; <br />        <br />       if("111".equals(form.getUsername()) &amp;&amp; <br />             "111".equals(form.getPassword())) { <br />          return new ModelAndView(this.getSuccessView(),"user", form.getUsername()); <br />       } <br />       else { <br />           return new ModelAndView(this.getFormView()); <br />       } <br />    } <br />}<br /><br />4./WEB-INF/classes/onlyfun/caterpillar/LoginForm.class<br />package onlyfun.caterpillar; </p>
		<p>public class LoginForm { <br />    private String username; <br />    private String password; <br />    <br />    public void setUsername(String username) { <br />       this.username = username; <br />    } <br />    <br />    public void setPassword(String password) { <br />       this.password = password; <br />    } <br />    <br />    public String getUsername() { <br />       return username; <br />    } <br />    <br />    public String getPassword() { <br />       return password; <br />    } <br />}<br /><br /><br />5./form.jsp<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br />&lt;html&gt; <br />&lt;head&gt;&lt;title&gt;Login&lt;/title&gt;&lt;/head&gt; <br />&lt;body&gt; <br />    請輸入使用者名稱與密碼：&lt;p&gt; <br />    &lt;form name="loginform" action="login.do" method="post"&gt; <br />        名稱 &lt;input type="text" name="username"/&gt;&lt;br&gt; <br />        密碼 &lt;input type="password" name="password"/&gt;&lt;br&gt; <br />        &lt;input type="submit" value="確定"/&gt; <br />    &lt;/form&gt; <br />    注意：輸入錯誤會再回到這個頁面中。 <br />&lt;/body&gt; <br />&lt;/html&gt;<br /><br /><br />6./success.jsp<br /><br />&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br />&lt;html&gt; <br />&lt;head&gt;&lt;title&gt;Login Success&lt;/title&gt;&lt;/head&gt; <br />&lt;body&gt; <br />    &lt;H1&gt; Hello, ${user}!!&lt;/H1&gt; <br />    This is your secret gift. <br />&lt;/body&gt; <br />&lt;/html&gt;<br /></p>
<img src ="http://www.blogjava.net/software5168/aggbug/65304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-23 16:29 <a href="http://www.blogjava.net/software5168/archive/2006/08/23/65304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>springMVC 第一個例子</title><link>http://www.blogjava.net/software5168/archive/2006/08/23/65289.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Wed, 23 Aug 2006 07:52:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/23/65289.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/65289.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/23/65289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/65289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/65289.html</trackback:ping><description><![CDATA[
		<p>1. /hellouser.jsp<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br />&lt;html&gt; <br />&lt;head&gt;&lt;title&gt;HelloPage&lt;/title&gt;&lt;/head&gt; <br />&lt;body&gt; <br />     &lt;H1&gt; ${helloWord}&lt;/H2&gt; <br />&lt;/body&gt; <br />&lt;/html&gt;<br /><br />2./index.jsp<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />  &lt;head&gt;<br />  &lt;/head&gt; <br />  &lt;body&gt;<br />    &lt;%<br />     response.sendRedirect("hellouser.do");<br />    %&gt;<br />  &lt;/body&gt;<br />&lt;/html&gt;<br /><br />3./WEB-INF/web.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" <br /> xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>" <br /> xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" <br /> xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a><br /> <a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>"&gt;<br /> <br /> &lt;servlet&gt; <br />        &lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />        &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;<br />  &lt;init-param&gt; <br />         &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; <br />         &lt;param-value&gt;/WEB-INF/application-servlet.xml&lt;/param-value&gt; <br />     &lt;/init-param&gt;  <br />    &lt;/servlet&gt; <br /> <br />    &lt;servlet-mapping&gt; <br />        &lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />        &lt;url-pattern&gt;*.do&lt;/url-pattern&gt; <br />    &lt;/servlet-mapping&gt; <br />  <br />&lt;/web-app&gt;<br /><br />4./WEB-INF/application-servlet.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt; <br />&lt;!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "<a href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</a>"&gt; <br />&lt;beans&gt; <br />    &lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt; <br />        &lt;property name="mappings"&gt; <br />            &lt;props&gt; <br />                &lt;prop key="/hellouser.do"&gt;helloUserAction&lt;/prop&gt; <br />            &lt;/props&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt; <br />    <br />    &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; <br />        &lt;property name="viewClass"&gt; <br />            &lt;value&gt;org.springframework.web.servlet.view.InternalResourceView&lt;/value&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt; <br />    <br />    &lt;bean id="helloUserAction" class="onlyfun.caterpillar.HelloUserAction"&gt; <br />        &lt;property name="helloWord"&gt; <br />            &lt;value&gt;Hello!&lt;/value&gt; <br />        &lt;/property&gt; <br />        &lt;property name="viewPage"&gt; <br />            &lt;value&gt;/hellouser.jsp&lt;/value&gt; <br />        &lt;/property&gt; <br />    &lt;/bean&gt; <br />&lt;/beans&gt;<br /><br />5./WEB-INF/classes/onlyfun/caterpillar/HelloUserAction.class<br />package onlyfun.caterpillar; </p>
		<p>import java.io.IOException; <br />import java.util.*; <br />import javax.servlet.*; <br />import javax.servlet.http.*; <br />import org.springframework.web.servlet.mvc.Controller; <br />import org.springframework.web.servlet.ModelAndView; <br />import org.springframework.web.bind.RequestUtils; </p>
		<p>public class HelloUserAction implements Controller { <br />   private String helloWord; <br />    private String viewPage; <br />    <br />   public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) <br />        throws ServletException, IOException { <br />     //String user = RequestUtils.getRequiredStringParameter(req, "user"); <br />      Map model = new HashMap(); <br />      model.put("helloWord", getHelloWord()); <br />     // model.put("user", user); <br />    <br />       return new ModelAndView(getViewPage(), model); <br />    } <br />    <br />    public void setViewPage(String viewPage) { <br />       this.viewPage = viewPage; <br />    } <br />    <br />    public String getViewPage() { <br />       return viewPage; <br />    } </p>
		<p>    public void setHelloWord(String helloWord) { <br />       this.helloWord = helloWord; <br />    } <br />    <br />    public String getHelloWord() { <br />       return helloWord; <br />    } <br />}</p>
<img src ="http://www.blogjava.net/software5168/aggbug/65289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-23 15:52 <a href="http://www.blogjava.net/software5168/archive/2006/08/23/65289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax - 回調函數Observer實現例子</title><link>http://www.blogjava.net/software5168/archive/2006/08/14/63390.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Mon, 14 Aug 2006 00:50:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/14/63390.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/63390.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/14/63390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/63390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/63390.html</trackback:ping><description><![CDATA[
		<p>1.EventRouter.js<br />/**<br /> * @author user<br /> */<br />var jsEvent = new Array();<br />jsEvent.EventRouter = function(el,eventType){<br /> this.lsnrs = new Array();<br /> this.el = el;<br /> el.eventRouter = this;<br /> el[eventType] = jsEvent.EventRouter.callback;<br />};<br />jsEvent.EventRouter.prototype.addListener = function(lsnr){<br /> this.lsnrs.append(lsnr,true); <br />} ;</p>
		<p>jsEvent.EventRouter.prototype.notify = function(e){<br /> var lsnrs = this.lsnrs;<br /> for(var i=0;i&lt;lsnrs.length;i++){<br />  var lsnr = lsnrs[i];<br />  lsnr.call(this,e);<br /> }<br />};<br />jsEvent.EventRouter.callback=function(event){<br /> var e = event || window.event;<br /> var router = this.eventRouter;<br /> router.notify(e);<br />};</p>
		<p>Array.prototype.append = function(obj,nodup){<br /> if(nodup){ <br />  this[this.length]=obj;<br /> }<br />};<br /><br />2.mousemat.css<br />.mousemat{<br /> background-color:#ffe0d0;<br /> border:solid maroon 0px;<br /> position:absolute;<br /> margin:0px;<br /> width:500px;<br /> height:500px;<br /> top:50px;<br /> left:50px; <br />}<br />.thumbnail{<br /> background-color:#ffe0d0;<br /> border:solid maroon 0px;<br /> position:absolute;<br /> margin:0px;<br /> width:100px;<br /> height:100px;<br /> top:50px;<br /> left:600px; <br />}<br />.cursor{<br /> background-color:blue;<br /> position:relative;<br /> height:5px;<br /> width:5px;<br />}<br /><br />3.mousemat.htm<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "<a href="http://www.w3.org/TR/html4/strict.dtd">http://www.w3.org/TR/html4/strict.dtd</a>"&gt;<br />&lt;html&gt;<br /> &lt;head&gt;<br />  &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;<br />  &lt;title&gt;Untitled Document&lt;/title&gt;<br />  &lt;link rel='stylesheet' type = 'text/css' href = 'mousemat.css'&gt;<br />  &lt;script type ='text/javascript' src = 'EventRouter.js'&gt;&lt;/script&gt;<br />  &lt;script type='text/javascript'&gt;<br />   var cursor = null;<br />   window.onload = function(){<br />    var mat = document.getElementById('mousemat');<br />    cursor = document.getElementById('cursor');<br />    var mouseRouter = new jsEvent.EventRouter(mat,"onmousemove");<br />    //var mouseRouter = new jsEvent.EventRouter(mat,"onclick");<br />    mouseRouter.addListener(writeStatus);<br />    mouseRouter.addListener(drawThumbnail);<br />   };<br />   function writeStatus(e){<br />    window.status = e.clientX + "," + e.clientY;<br />   }<br />   function drawThumbnail(e){<br />    cursor.style.left = ((e.clientX/5)-2) + "px";<br />    cursor.style.top = ((e.clientY/5)-2) + "px";<br />   }<br />  &lt;/script&gt;<br /> &lt;/head&gt;<br /> &lt;body&gt;<br />  &lt;div class='mousemat' id='mousemat'&gt;&lt;/div&gt;<br />  &lt;div class='thumbnail' id='thumbnail'&gt;<br />   &lt;div class = 'cursor' id = 'cursor'&gt;&lt;/div&gt;<br />  &lt;/div&gt;<br /> &lt;/body&gt;<br />&lt;/html&gt;<br /></p>
<img src ="http://www.blogjava.net/software5168/aggbug/63390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-14 08:50 <a href="http://www.blogjava.net/software5168/archive/2006/08/14/63390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax 單個元素中實現多個回調函數的例子</title><link>http://www.blogjava.net/software5168/archive/2006/08/11/63028.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Fri, 11 Aug 2006 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/11/63028.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/63028.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/11/63028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/63028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/63028.html</trackback:ping><description><![CDATA[1.mousemat.htm<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "<a href="http://www.w3.org/TR/html4/strict.dtd">http://www.w3.org/TR/html4/strict.dtd</a>"&gt;<br />&lt;html&gt;<br /> &lt;head&gt;<br />  &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;<br />  &lt;title&gt;Untitled Document&lt;/title&gt;<br />  &lt;link rel='stylesheet' type = 'text/css' href = 'mousemat.css'&gt;<br />  &lt;script type='text/javascript'&gt;<br />   var cursor = null;<br />   window.onload = function(){<br />    var mat = document.getElementById('mousemat');<br />    mat.onmousemove = mouseObserver;<br />    cursor = document.getElementById('cursor');<br />   }<br />   function mouseObserver(event){<br />    var e = event || window.event;<br />    writeStatus(e);<br />    drawThumbnail(e);<br />   }<br />   function writeStatus(e){<br />    window.status = e.clientX + "," + e.clientY;<br />   }<br />   function drawThumbnail(e){<br />    cursor.style.left = ((e.clientX/5)-2) + "px";<br />    cursor.style.top = ((e.clientY/5)-2) + "px";<br />   }<br />  &lt;/script&gt;<br /> &lt;/head&gt;<br /> &lt;body&gt;<br />  &lt;div class='mousemat' id='mousemat'&gt;&lt;/div&gt;<br />  &lt;div class='thumbnail' id='thumbnail'&gt;<br />   &lt;div class = 'cursor' id = 'cursor'&gt;&lt;/div&gt;<br />  &lt;/div&gt;<br /> &lt;/body&gt;<br />&lt;/html&gt;<br /><br /><br />2.mousemat.css<br />mousemat{<br /> background-color:#ffe0d0;<br /> border:solid maroon 0px;<br /> position:absolute;<br /> margin:0px;<br /> width:500px;<br /> height:500px;<br /> top:50px;<br /> left:50px; <br />}<br />.thumbnail{<br /> background-color:#ffe0d0;<br /> border:solid maroon 0px;<br /> position:absolute;<br /> margin:0px;<br /> width:100px;<br /> height:100px;<br /> top:50px;<br /> left:600px; <br />}<br />.cursor{<br /> background-color:blue;<br /> position:relative;<br /> height:5px;<br /> width:5px;<br />}<img src ="http://www.blogjava.net/software5168/aggbug/63028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-11 16:12 <a href="http://www.blogjava.net/software5168/archive/2006/08/11/63028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax -第一個例子</title><link>http://www.blogjava.net/software5168/archive/2006/08/11/63003.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Fri, 11 Aug 2006 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/11/63003.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/63003.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/11/63003.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/63003.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/63003.html</trackback:ping><description><![CDATA[1.MyHtml.html<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />  &lt;head&gt;<br /> &lt;script type='text/javascript'&gt;<br />  var req = null;<br />  var console = null;<br />  var READY_STATE_UNINITIALIZED = 0;<br />  var READY_STATE_LOADING = 1;<br />  var READY_STATE_LOADED = 2;<br />  var READY_STATE_INTERACTIVE = 3;<br />  var READY_STATE_COMPLETE = 4;<br />  <br />  function sendRequest(url,params,HttpMethod){<br />   if(!HttpMethod){<br />    HttpMethod = "GET";<br />   }<br />   req = initXMLHTTPRequest();<br />   if(req){<br />    req.onreadystatechange = onReadyState;<br />    req.open(HttpMethod,url,true);<br />    req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");<br />    req.send(params);<br />    <br />   }<br />  }<br />  <br />  function initXMLHTTPRequest(){<br />   var xRequest = null;<br />   if(window.XMLHttpRequest){<br />    xRequest = new XMLHttpRequest();<br />   }else if(window.ActiveXObject){<br />    xRequest = new ActiveXObject("Microsoft.XMLHTTP");<br />   }<br />   return xRequest;<br />  }<br />  <br />  function onReadyState(){<br />   var ready = req.readyState;<br />   var data = null;<br />   if(ready==READY_STATE_COMPLETE){<br />    data = req.responseText;<br />   }else{<br />    data = "loading...[" + ready +"]";<br />   }<br />   toConsole(data);<br />  }<br />  <br />  function toConsole(data){<br />   if(console!=null){<br />    var newline = document.createElement("div");<br />    console.appendChild(newline);<br />    var txt = document.createTextNode(data);<br />    console.appendChild(txt);<br />   }<br />  }<br />  <br />  window.onload = function(){<br />   console = document.getElementById('console');<br />   sendRequest("data.txt");<br />  }<br /> &lt;/script&gt;<br />  &lt;/head&gt;<br />   <br />  &lt;body&gt;<br />   &lt;DIV id ='console'&gt;&lt;/DIV&gt;<br />  &lt;/body&gt;<br />&lt;/html&gt;<br /><br />2.data.txt<br /> i'm ok!!!!!!!!<img src ="http://www.blogjava.net/software5168/aggbug/63003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-11 14:46 <a href="http://www.blogjava.net/software5168/archive/2006/08/11/63003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax 參數傳遞的例子</title><link>http://www.blogjava.net/software5168/archive/2006/08/11/62998.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Fri, 11 Aug 2006 06:35:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/11/62998.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/62998.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/11/62998.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/62998.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/62998.html</trackback:ping><description><![CDATA[
		<p>1.new_file.htm<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "<a href="http://www.w3.org/TR/html4/strict.dtd">http://www.w3.org/TR/html4/strict.dtd</a>"&gt;<br />&lt;html&gt;<br /> &lt;head&gt;<br />  &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;<br />  &lt;title&gt;Untitled Document&lt;/title&gt;<br />  &lt;SCRIPT type='text/javascript' src='new_file.js'&gt;&lt;/SCRIPT&gt;<br />  &lt;SCRIPT type='text/javascript'&gt;<br />   window.onload = load;<br />  &lt;/SCRIPT&gt;<br /> &lt;/head&gt;<br /> &lt;body&gt;<br />  &lt;CENTER&gt;&lt;INPUT type='button' id='b1'&gt;&lt;/INPUT&gt;&lt;/CENTER&gt; <br /> &lt;/body&gt;<br />&lt;/html&gt;<br /><br />2.new_file.js<br />var value = '500';</p>
		<p>function load(){<br /> var domEl = document.getElementById('b1'); <br /> JsButton(value,domEl);<br />}<br />function JsButton(value,domEl){<br /> this.domEl = domEl;<br /> this.value = value;<br /> this.domEl.buttonObj = this;<br /> //this.domEl.onclick = function(){<br />  //alert(this.value);<br /> //}<br /> this.domEl.onclick = JsButton.prototype.clickHandler;<br />} </p>
		<p>JsButton.prototype.clickHandler = function(){<br /> //alert(this.value); 在回調函數中調用this屬性時﹐<br /> //得到的是對應的DOM元素裡面的數值﹐此處為空。<br /> var buttonObj = this.buttonObj;<br /> var value =(buttonObj &amp;&amp; buttonObj.value)? buttonObj.value:"unknown value";<br /> alert(value);<br />}</p>
<img src ="http://www.blogjava.net/software5168/aggbug/62998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-11 14:35 <a href="http://www.blogjava.net/software5168/archive/2006/08/11/62998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax </title><link>http://www.blogjava.net/software5168/archive/2006/08/11/62945.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Fri, 11 Aug 2006 03:34:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/11/62945.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/62945.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/11/62945.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/62945.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/62945.html</trackback:ping><description><![CDATA[
		<p>1.musical_dyn_keys.css<br />.musicalKeys{<br /> background-color:#ffe0d0;<br /> border:solid maroon 2px;<br /> position:absolute;<br /> overflow:auto;<br /> margin:4px;<br />}<br />.toplong{<br /> width:536px;<br /> height:68px;<br /> top:24px;<br /> left:24px;<br />}<br />.sidebar{<br /> width:100px;<br /> height:400px;<br /> top:24px;<br /> left:570px;<br />}<br />.musicalButton{<br /> border:solid navy 1px;<br /> width:60px;<br /> height:60px;<br /> position:relative;<br /> margin:2px;<br /> float:left;<br />}<br />.do{background-color:red;}<br />.re{background-color:orange;}<br />.mi{background-color:yellow;}<br />.fa{background-color:green;}<br />.so{background-color:blue;}<br />.la{background-color:indigo;}<br />.ti{background-color:violet;}<br />div.console{<br /> font-family:arial,helvetica;<br /> font-size:16px;<br /> color:navy;<br /> background-color:white;<br /> border:solid navy 2px;<br /> width:536px;<br /> height:320px;<br /> top:106px;<br /> left:24px;<br /> margin:4px;<br /> position:absolute;<br /> overflow:auto;<br />}<br /><br />2.musical_dyn_keys.html<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "<a href="http://www.w3.org/TR/html4/strict.dtd">http://www.w3.org/TR/html4/strict.dtd</a>"&gt;<br />&lt;html&gt;<br /> &lt;head&gt;<br />  &lt;title&gt;Two Keyboards&lt;/title&gt;<br />  &lt;LINK rel='stylesheet' type='text/css' href='musical_dyn_keys.css'/&gt;<br />  &lt;SCRIPT type='text/javascript' src='musical_dyn_keys.js'&gt;&lt;/SCRIPT&gt;<br />  &lt;SCRIPT type='text/javascript'&gt;<br />   window.onload=assignKeys<br />  &lt;/SCRIPT&gt;<br /> &lt;/head&gt;<br /> &lt;body&gt;<br />  &lt;DIV id='keyboard-top' class='toplong musicalKeys'&gt;&lt;/DIV&gt;<br />  &lt;DIV id='keyboard-side' class='sidebar musicalKeys'&gt;&lt;/DIV&gt;<br />  &lt;DIV id='console' class='console'&gt;&lt;/DIV&gt;<br /> &lt;/body&gt;<br />&lt;/html&gt;<br /><br /><br />3.musical_dyn_keys.js<br />var notes = new Array("do","re","mi","fa","so","la","ti","do");<br />function assignKeys(){<br /> var candidates = document.getElementsByTagName("DIV");<br /> if(candidates){<br />  for(var i=0;i&lt;candidates.length;i++){<br />   var candidate = candidates[i];<br />   if(candidate.className.indexOf('musicalKeys')&gt;=0){<br />    makeKeyboard(candidate);<br />   }<br />  }<br /> }<br />}</p>
		<p>function makeKeyboard(el){<br /> for(var i=0;i&lt;notes.length;i++){<br />  var key=document.createElement("DIV");<br />  key.className = notes[i] + " musicalButton";<br />  alert(key.className);<br />  key.note = notes[i];<br />  key.onclick = playNote;<br />  el.appendChild(key);<br /> } <br />}</p>
		<p>function playNote(event){<br /> var note = this.note;<br /> var console = document.getElementById('console');<br /> if(note &amp;&amp; console){<br />  console.innerHTML +=note + ".";<br /> }<br />}</p>
<img src ="http://www.blogjava.net/software5168/aggbug/62945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-11 11:34 <a href="http://www.blogjava.net/software5168/archive/2006/08/11/62945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax - 簡單的客戶端MVC實現例子</title><link>http://www.blogjava.net/software5168/archive/2006/08/10/62822.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Thu, 10 Aug 2006 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/10/62822.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/62822.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/10/62822.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/62822.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/62822.html</trackback:ping><description><![CDATA[
		<p>1.murical.html<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />  &lt;head&gt;   <br />    &lt;link rel='stylesheet' type='text/css' href='musical.css'&gt;<br />    &lt;script type='text/javascript' src="musical.js"&gt;&lt;/script&gt;<br />    &lt;script type='text/javascript'&gt;<br />   window.onload = assignKeys<br />    &lt;/script&gt;   <br />  &lt;/head&gt;<br />  <br />  &lt;body&gt;<br />   &lt;DIV&gt;<br />    &lt;DIV id='keyboard' class='musicalKeys'&gt;<br />   &lt;DIV class='do musicalButton'&gt;&lt;/DIV&gt;<br />   &lt;DIV class='re musicalButton'&gt;&lt;/DIV&gt;<br />   &lt;DIV class='mi musicalButton'&gt;&lt;/DIV&gt;<br />   &lt;DIV class='fa musicalButton'&gt;&lt;/DIV&gt;<br />   &lt;DIV class='so musicalButton'&gt;&lt;/DIV&gt;<br />   &lt;DIV class='la musicalButton'&gt;&lt;/DIV&gt;<br />   &lt;DIV class='ti musicalButton'&gt;&lt;/DIV&gt;<br />   &lt;DIV class='do musicalButton'&gt;&lt;/DIV&gt;<br />  &lt;/DIV&gt;<br />  &lt;DIV id='console' class='console'&gt;&lt;/DIV&gt;<br />   &lt;/DIV&gt;<br />  &lt;/body&gt;<br />&lt;/html&gt;<br /><br />2.musical.css<br />.body{<br /> background-color:white; <br />}<br />.musicalKeys{<br /> background-color:#ffe0d0;<br /> boarder:solid maroon 2px;<br /> width:536px;<br /> height:68px;<br /> top:24px;<br /> left:24px;<br /> margin:4px;<br /> position:absolute;<br /> overflow:auto;<br />}<br />.musicalButton{<br /> border:solid navy 1px;<br /> width:60px;<br /> height:60px;<br /> position:relative;<br /> margin:2px;<br /> float:left;<br />}<br />.do{background-color:red;}<br />.re{background-color:orange;}<br />.mi{background-color:yellow;}<br />.fa{background-color:green;}<br />.so{background-color:blue;}<br />.la{background-color:indigo;}<br />.ti{background-color:violet;}<br />div.console{<br /> font-family:arial,helvetica;<br /> font-size:16px;<br /> color:navy;<br /> background-color:white;<br /> border:solid navy 2px;<br /> width:536px;<br /> height:320px;<br /> top:106px;<br /> left:24px;<br /> margin:4px;<br /> position:absolute;<br /> overflow:auto;<br />}<br /><br />3.musical.js<br />function assignKeys(){<br /> var keyboard=document.getElementById("keyboard");<br /> var keys = keyboard.getElementsByTagName("DIV");<br /> if(keys){<br />  for(var i=0;i&lt;keys.length;i++){<br />   var key=keys[i];<br />   var classes=(key.className).split(" ");<br />   if(classes &amp;&amp; classes.length&gt;=2 &amp;&amp; classes[1]=="musicalButton"){<br />    var note=classes[0];<br />    key.note=note;<br />    //key.onmouseover=playNote;<br />    key.onclick = playNote;<br />   }<br />  }<br /> }<br />}</p>
		<p>function playNote(event){<br /> var note = this.note;<br /> var console = document.getElementById("console");<br /> if(note &amp;&amp; console){<br />  console.innerHTML += note + ".";<br /> }<br />}</p>
<img src ="http://www.blogjava.net/software5168/aggbug/62822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-10 17:03 <a href="http://www.blogjava.net/software5168/archive/2006/08/10/62822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax -rico最簡單的例子</title><link>http://www.blogjava.net/software5168/archive/2006/08/09/62569.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Wed, 09 Aug 2006 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/09/62569.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/62569.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/09/62569.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/62569.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/62569.html</trackback:ping><description><![CDATA[MyHtml.html<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />  &lt;head&gt;<br />  &lt;script type="text/javascript" src="prototype.js"&gt;&lt;/script&gt;<br />  &lt;script type="text/javascript" src="rico.js"&gt;&lt;/script&gt;<br />  &lt;script type='text/javascript'&gt;<br />     function accordion(){<br />   var outer = $('myAccordion');<br />   outer.style.width = '320px';   <br />  new Rico.Accordion(<br />   outer,<br />   {panelHeight:400,<br />    expandedBg:'#909090',<br />    collapsedBg:'#404040'<br />   }<br />  );<br />  }<br />    window.onload = accordion <br />  &lt;/script&gt;<br />  &lt;/head&gt; <br />  &lt;body&gt;<br />   &lt;div id='myAccordion'&gt;<br />    &lt;div&gt;<br />     &lt;div&gt;first title&lt;/div&gt;<br />     &lt;div&gt;first!!!!!&lt;/div&gt;<br />    &lt;/div&gt;<br />    &lt;div&gt;<br />     &lt;div&gt;second title&lt;/div&gt;<br />     &lt;div&gt;second!!!!!&lt;/div&gt;<br />    &lt;/div&gt;<br />   &lt;/div&gt;   <br />  &lt;/body&gt;<br />&lt;/html&gt;<br /><img src ="http://www.blogjava.net/software5168/aggbug/62569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-09 15:15 <a href="http://www.blogjava.net/software5168/archive/2006/08/09/62569.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正則表達式</title><link>http://www.blogjava.net/software5168/archive/2006/08/03/61516.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Thu, 03 Aug 2006 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/08/03/61516.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/61516.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/08/03/61516.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/61516.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/61516.html</trackback:ping><description><![CDATA[ String sql = "INSERT INTO AB(A,B,C,D,E) VALUES(?,?,?,?,?)";<br /> sql = sql.toUpperCase();<br /> String str="<a href="file://\\s*INSERT\\s+INTO\\s+([^\\(]+)\\(([^\\)]+)\\)\\s*VALUES\\s*\\(([^\\)]+)\\)\\s">\\s*INSERT\\s+INTO\\s+([^\\(]+)\\(([^\\)]+)\\)\\s*VALUES\\s*\\(([^\\)]+)\\)\\s</a>*"; <br /> Pattern p = Pattern.compile(str);<br /> Matcher m = p.matcher(sql);<br /> m.find();<br /> String table = m.group(1); <br /> String cols = m.group(2);<br /> String values = m.group(3);<br /> System.out.println("table ==== " + table); //AB<br /> System.out.println("cols ==== " + cols); //A﹐B﹐C﹐D﹐E<br /> System.out.println("values ==== " + values); //﹖﹐﹖﹐﹖﹐﹖﹐﹖<br /><br />註﹕.表示任何字符<br />      [abc]表示abc之一字符<br />      [^abc]表示非abc的一字符<br />      \s表示空格﹐tab,換行﹐換頁﹐回車<br />     \S表示非空格﹐tab,換行﹐換頁﹐回車<br />    \d表示數字[0-9]<br />    \D表示非數字[^0-9]<br />   \w表示詞字符[a-zA-Z0-9]<br />   \W表示非詞字符[^a-zA-Z0-9]<br /> <br />匹配量詞   X? 表示1或0個X<br />                  X* 表示0或n個X<br />                  X+表示1或n個X<img src ="http://www.blogjava.net/software5168/aggbug/61516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-08-03 15:26 <a href="http://www.blogjava.net/software5168/archive/2006/08/03/61516.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WEB開發中的JAVA字符編碼</title><link>http://www.blogjava.net/software5168/archive/2006/07/25/60028.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Tue, 25 Jul 2006 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/07/25/60028.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/60028.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/07/25/60028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/60028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/60028.html</trackback:ping><description><![CDATA[
		<strong>一、概要<br /></strong>　　在JAVA應用程式特別是基於WEB的程式中，經常遇到字符的編碼問題。為了防止出現亂碼，首先需要了解JAVA是如何處理字符的，這樣就可以有目的地在輸入/輸出環節中增加必要的轉碼。其次，由於各種伺服器有不同的處理方式，還需要多做試驗，確保使用中不出現亂碼。<br /><strong>二、基本概念</strong><br />2．1 JAVA中字符的表達<br />　　JAVA中有char、byte、String這幾個概念。char 指的是一個UNICODE字符，為16位的整數。byte 是字節，字符串在網路傳輸或存儲前需要轉換為byte數組。在從網路接收或從存儲設備讀取後需要將byte數組轉換成String。String是字符串，可以看成是由char組成的數組。String 和 char 為內存形式，byte是網路傳輸或存儲的序列化形式。<br />舉例：<br />英<br />String ying = “英”;<br />char ying = ying.charAt(0);<br />String yingHex = Integer.toHexString(ying);<br />82 F1 <br />byte yingGBBytes = ying.getBytes(“GBK”);<br />GB編碼的字節數值<br />D3 A2 
<p> </p><p>2．2 編碼方式的簡介<br />　　String序列化成byte數組或反序列化時需要選擇正確的編碼方式。如果編碼方式不正確，就會得到一些0x3F的值。常用的字符編碼方式有ISO8859_1、GB2312、GBK、UTF-8/UTF-16/UTF-32。<br />ISO8859_1用來編碼拉丁文，它由單字節（0－255）組成。<br />　　GB2312、GBK用來編碼簡體中文，它有單字節和雙字節混合組成。最高位為1的字節和下一個字節構成一個漢字，最高位為0的字節是ASCII碼。<br />　　UTF-8/UTF-16/UTF-32是國際標準UNICODE的編碼方式。 用得最多的是UTF-8，主要是因為它在對拉丁文編碼時節約空間。</p><p>UNICODE值 UTF-8編碼<br />U-00000000 - U-0000007F: 0xxxxxxx<br />U-00000080 - U-000007FF: 110xxxxx 10xxxxxx <br />U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx <br />U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx <br />U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx <br />U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx </p><p><strong>三、J2SE中相關的函數</strong><br />String str =”英”;<br />//取得GB2312編碼的字節<br />byte[] bytesGB2312 = str.getBytes(“GB2312”); </p><p>//取得平臺缺省編碼的字節(solaris為ISO8859_1,windows為GB2312)<br />byte[] bytesDefault = str.getBytes();</p><p>//用指定的編碼將字節轉換成字符串<br />String newStrGB = new String(bytesGB2312, “GB2312”);<br /><br />//用平臺缺省的編碼將字節轉換成字符串(solaris為ISO8859_1,windows為GB2312)<br />String newStrDefault = new String(bytesDefault);</p><p>//用指定的編碼從字節流裏面讀取字符<br />InputStream in = xxx;<br />InputStreamReader reader = InputStreamReader( in, “GB2312”);<br />char aChar = reader.read();<br />四、JSP、數據庫的編碼<br />4．1 JSP中的編碼<br />(1) 靜態聲明:<br />CHARSET有兩個作用：<br />JSP文件的編碼方式：在讀取JSP文件、生成JAVA類時，源JSP文件中漢字的編碼<br />JSP輸出流的編碼方式：在執行JSP時，往response流裏面寫入數據的編碼方式<br />(2) 動態改變:在往response流裏面寫數據前可以調用response.setContentType()，設定正確的編碼類型。<br />(3) 在TOMCAT中，由Request.getParameter() 得到的參數，編碼方式都是ISO8859_1。所以如果在瀏覽器輸入框內輸入一個漢字“英”，在伺服器端就得到一個ISO8859_1編碼的（0x00,0xD3,0x00,0xA2）。所以通常在接收參數時轉碼：<br />String wrongStr = response.getParameter(“name”);<br />String correctStr = new String(wrongStr.getBytes(“ISO8859_1”),”GB2312”);<br />在最新的SERVLET規範裏面，也可以在獲取參數之前執行如下代碼：<br />request.setCharacterEncoding(“GB2312”);</p><p>4．2 數據庫的編碼<br />(1) 數據庫使用UTF-16<br />如果String中是UNICODE字符，寫入讀出時不需要轉碼<br />(2) 數據庫使用ISO8859_1<br />如果String中是UNICODE字符，寫入讀出時需要轉碼<br />寫入：String newStr = new String(oldStr.getByte(“GB2312”), “ISO8859_1”);<br />讀出：String newStr = new String(oldStr.getByte(“ISO8859_1”),”GB2312”);<br />五、源文件的編碼<br />5．1 資源文件<br />資源文件的編碼方式和編輯平臺相關。在WINDOWS平台下編寫的資源文件，以GB2312方式編碼。在編譯時需要轉碼，以確保在各個平臺上的正確性：<br />native2ascii –encoding GB2312 source.properties<br />這樣從資源文件中讀出的就是正確的UNICODE字符串。<br />5．2 源文件<br />源文件的編碼方式和編輯平臺相關。在WINDOWS平台下開發的源文件，以GB2312方式編碼。在編譯的時候，需要指定源文件的編碼方式：<br />javac –encoding GB2312<br />JAVA編譯後生成的字節文件的編碼為UTF-8。<br /></p><p><br />點最新版TOMCAT4.1.18支援request.setCharacterEncoding(String enc)<br />點資源文件轉碼成company.name=\u82f1\u65af\u514b<br />點如果數據庫使用utf-16則不需要這部分轉碼<br />點頁面上應有<br />轉碼ⅰ:<br />String s = new String<br />(request.getParameter(“name”).getBytes(“ISO8859_1”),”GB2312”);<br />轉碼ⅱ:<br />String s = new String(name.getBytes(“GB2312”),”ISO8859_1”);<br />轉碼ⅲ:<br />String s = new String(name.getBytes(“ISO8859_1”),” GB2312”);<br /></p><img src ="http://www.blogjava.net/software5168/aggbug/60028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-07-25 17:12 <a href="http://www.blogjava.net/software5168/archive/2006/07/25/60028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA的反編譯---使用jad</title><link>http://www.blogjava.net/software5168/archive/2006/07/12/57768.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Wed, 12 Jul 2006 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/07/12/57768.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/57768.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/07/12/57768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/57768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/57768.html</trackback:ping><description><![CDATA[1.單個.class文件編譯<br />  首先從控制台進入jad.exe目錄<br />   運行 jad example1.class<br />  (此時example1.class和jad.exe位於同一個目錄)<br />  成功運行後﹐當前目錄下產生一個新文件example1.jad﹐裡面為反編譯後的java代碼<br /><br />2.多個.class文件編譯<br />與1大致相同<br />輸入jad -o -dtest -sjava *.class<br />其中"test"表示反編譯文件的存放目錄﹐"java"表示反編譯後產生文件的後綴名<br /><br />3.某文件夾下所有文件編譯<br />與1大致相同<br />輸入jad -o -dtest -sjava  tree/**/*.class<br />其中"test"表示反編譯文件的存放目錄﹐"java"表示反編譯後產生文件的後綴名<br />tree表示源文件夾名<br /><br />詳細說明參看“Readme.txt”<br />jad下載聯接 <a href="http://www.infoxa.com/asp/soft_file/xxnr_soft_242.htm">http://www.infoxa.com/asp/soft_file/xxnr_soft_242.htm</a><img src ="http://www.blogjava.net/software5168/aggbug/57768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-07-12 11:36 <a href="http://www.blogjava.net/software5168/archive/2006/07/12/57768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java操作Excel的一种方法</title><link>http://www.blogjava.net/software5168/archive/2006/06/30/55989.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Fri, 30 Jun 2006 08:54:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/06/30/55989.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/55989.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/06/30/55989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/55989.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/55989.html</trackback:ping><description><![CDATA[Java操作Excel的一种方法 <br /><br /> bromon原创 版权所有<br /><br />　　MS的电子表格（Excel）是Office的重要成员，是保存统计数据的一种常用格式。作为办公文档，势必要涉及到的电子文档的交换，Excel是一种在企业中非常通用的文件格式，打印和管理也比较方便。在一个Java应用中，将一部分数据生成Excel格式，是与其他系统无缝连接的重要手段。<br /><br />　　在开源世界中，有两套比较有影响的API可供使用，一个是POI，一个是jExcelAPI。其中jExcelAPI是一个韩国程序员的作品，虽然没有POI那样血统高贵，但是在笔者的使用过程中，感觉简单方便，对中文支持非常好，功能也比较强大。可以在sourceforge.net下载。作者的网站上对它的特征有如下描述：<br /><br /> ● 支持Excel 95-2000的所有版本<br /> ● 生成Excel 2000标准格式<br /> ● 支持字体、数字、日期操作<br /> ● 能够修饰单元格属性<br /> ● 支持图像和图表<br /><br />　　应该说以上功能已经能够大致满足我们的需要。最关键的是这套API是纯Java的，并不依赖Windows系统，即使运行在Linux下，它同样能够正确的处理Excel文件。另外需要说明的是，这套API对图形和图表的支持很有限，而且仅仅识别PNG格式。<br /><br />　　搭建环境<br /><br />　　将下载后的文件解包，得到jxl.jar，放入classpath，安装就完成了。<br /><br /> 基本操作<br /><br /> 一、创建文件<br /><br /> 拟生成一个名为“测试数据.xls”的Excel文件，其中第一个工作表被命名为“第一页”，大致效果如下：<br /><br /> <br /><br /> 代码（CreateXLS.java）：<br />  <br />  
<div class="codeStyle"><ol><li><i><font color="#339900">//生成Excel的类</font></i></li><li> <b><font color="#0000ff">import</font></b> java.io.*; 
</li><li> <b><font color="#0000ff">import</font></b> jxl.*; 
</li><li> <b><font color="#0000ff">import</font></b> jxl.write.*; 
</li><li></li><li> <b><font color="#0000ff">public</font></b> <b><font color="#0000ff">class</font></b> CreateXLS 
</li><li> { 
</li><li> 　　<b><font color="#0000ff">public</font></b> <b><font color="#0000ff">static</font></b> <b><font color="#0000ff">void</font></b> main(<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b> args[]) 
</li><li> 　　{ 
</li><li> 　　<b><font color="#0000ff">try</font></b></li><li> 　　{ 
</li><li>　　　　<i><font color="#339900">//打开文件</font></i></li><li>　　　　WritableWorkbook book=Workbook.createWorkbook(<b><font color="#0000ff">new</font></b> <font color="#ff0000">File</font>(“测试.xls”)); 
</li><li>      
</li><li>　　　　<i><font color="#339900">//生成名为“第一页”的工作表，参数0表示这是第一页</font></i></li><li>　　　　WritableSheet sheet=book.createSheet(“第一页”,0); 
</li><li>    
</li><li>　　　　<i><font color="#339900">//在Label对象的构造子中指名单元格位置是第一列第一行(0,0)</font></i></li><li>　　　　<i><font color="#339900">//以及单元格内容为test</font></i></li><li>　　　　<font color="#ff0000">Label</font> label=<b><font color="#0000ff">new</font></b> <font color="#ff0000">Label</font>(0,0,”test”); 
</li><li></li><li>　　　　<i><font color="#339900">//将定义好的单元格添加到工作表中</font></i></li><li>　　　　sheet.addCell(label); 
</li><li></li><li>　　　　<i><font color="#339900">/**生成一个保存数字的单元格</font></i></li><li><i><font color="#339900">　　　　*必须使用Number的完整包路径，否则有语法歧义</font></i></li><li><i><font color="#339900">　　　　*单元格位置是第二列，第一行，值为789.123</font></i></li><li><i><font color="#339900">　　　　*/</font></i></li><li>　　　　jxl.write.<font color="#ff0000">Number</font> number = <b><font color="#0000ff">new</font></b> jxl.write.<font color="#ff0000">Number</font>(1,0,789.123); 
</li><li>　　　　sheet.addCell(number); 
</li><li></li><li>　　　　<i><font color="#339900">//写入数据并关闭文件</font></i></li><li>　　　　book.write(); 
</li><li>　　　　book.close(); 
</li><li></li><li>　　　　}<b><font color="#0000ff">catch</font></b>(<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/Exception.java.html" target="_blank"><font class="classLink"><u>Exception</u></font></a></b> e) 
</li><li>　　　　{ 
</li><li>　　　　　　<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font class="classLink"><u>System</u></font></a></b>.out.println(e); 
</li><li>　　　　} 
</li><li>　　} 
</li><li> }  </li></ol></div><br /> 编译执行后，会在当前位置产生一个Excel文件。<br /><br /> 三、读取文件<br /><br /> 以刚才我们创建的Excel文件为例，做一个简单的读取操作，程序代码如下：<br />  <br />  
<div class="codeStyle"><ol><li><i><font color="#339900">//读取Excel的类</font></i></li><li> <b><font color="#0000ff">import</font></b> java.io.*; 
</li><li> <b><font color="#0000ff">import</font></b> jxl.*; 
</li><li></li><li> <b><font color="#0000ff">public</font></b> <b><font color="#0000ff">class</font></b> ReadXLS 
</li><li> { 
</li><li> <b><font color="#0000ff">public</font></b> <b><font color="#0000ff">static</font></b> <b><font color="#0000ff">void</font></b> main(<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b> args[]) 
</li><li> { 
</li><li>  <b><font color="#0000ff">try</font></b></li><li>  { 
</li><li>   Workbook book= 
</li><li> Workbook.getWorkbook(<b><font color="#0000ff">new</font></b> <font color="#ff0000">File</font>(“测试.xls”)); 
</li><li>    
</li><li>   <i><font color="#339900">//获得第一个工作表对象</font></i></li><li> Sheet sheet=book.getSheet(0); 
</li><li></li><li> <i><font color="#339900">//得到第一列第一行的单元格</font></i></li><li> Cell cell1=sheet.getCell(0,0); 
</li><li> <b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b> result=cell1.getContents(); 
</li><li> <b><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font class="classLink"><u>System</u></font></a></b>.out.println(result); 
</li><li></li><li> book.close(); 
</li><li></li><li>  }<b><font color="#0000ff">catch</font></b>(<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/Exception.java.html" target="_blank"><font class="classLink"><u>Exception</u></font></a></b> e) 
</li><li>  { 
</li><li>   <b><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font class="classLink"><u>System</u></font></a></b>.out.println(e); 
</li><li>  } 
</li><li> } 
</li><li> }  </li></ol></div><br /><br /> 程序执行结果：test<br /><br /> 四、修改文件<br /><br /> 利用jExcelAPI可以修改已有的Excel文件，修改Excel文件的时候，除了打开文件的方式不同之外，其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表：<br /><br />  
<div class="codeStyle"><ol><li><i><font color="#339900">//修改Excel的类，添加一个工作表</font></i></li><li> <b><font color="#0000ff">import</font></b> java.io.*; 
</li><li> <b><font color="#0000ff">import</font></b> jxl.*; 
</li><li> <b><font color="#0000ff">import</font></b> jxl.write.*; 
</li><li></li><li> <b><font color="#0000ff">public</font></b> <b><font color="#0000ff">class</font></b> UpdateXLS 
</li><li> { 
</li><li> <b><font color="#0000ff">public</font></b> <b><font color="#0000ff">static</font></b> <b><font color="#0000ff">void</font></b> main(<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b> args[]) 
</li><li> { 
</li><li>  <b><font color="#0000ff">try</font></b></li><li>  { 
</li><li>   <i><font color="#339900">//Excel获得文件</font></i></li><li>   Workbook wb=Workbook.getWorkbook(<b><font color="#0000ff">new</font></b> <font color="#ff0000">File</font>(“测试.xls”)); 
</li><li>    
</li><li>   <i><font color="#339900">//打开一个文件的副本，并且指定数据写回到原文件</font></i></li><li> WritableWorkbook book= 
</li><li> Workbook.createWorkbook(<b><font color="#0000ff">new</font></b> <font color="#ff0000">File</font>(“测试.xls”),wb); 
</li><li>    
</li><li>   <i><font color="#339900">//添加一个工作表</font></i></li><li>   WritableSheet sheet=book.createSheet(“第二页”,1); 
</li><li></li><li>   sheet.addCell(<b><font color="#0000ff">new</font></b> <font color="#ff0000">Label</font>(0,0,”第二页的测试数据”)); 
</li><li>    
</li><li>   book.write(); 
</li><li>   book.close(); 
</li><li>  }<b><font color="#0000ff">catch</font></b>(<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/Exception.java.html" target="_blank"><font class="classLink"><u>Exception</u></font></a></b> e) 
</li><li>  { 
</li><li>   <b><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font class="classLink"><u>System</u></font></a></b>.out.println(e); 
</li><li>  } 
</li><li> } 
</li><li> }  </li></ol></div><br /> 执行结果如图：<br /><br /> <br /><br /> 高级操作<br /><br /> 一、 数据格式化<br /><br /> 在Excel中不涉及复杂的数据类型，能够比较好的处理字串、数字和日期已经能够满足一般的应用。<br /><br /> 1、 字串格式化<br /><br /> 字符串的格式化涉及到的是字体、粗细、字号等元素，这些功能主要由WritableFont和WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时，使用如下语句，为方便叙述，我们为每一行命令加了编号：<br /><br /><br />  
<div class="codeStyle"><ol><li>WritableFont font1= 
</li><li> <b><font color="#0000ff">new</font></b> WritableFont(WritableFont.TIMES,16,WritableFont.BOLD); ① 
</li><li></li><li> WritableCellFormat format1=<b><font color="#0000ff">new</font></b> WritableCellFormat(font1); ② 
</li><li></li><li> <font color="#ff0000">Label</font> label=<b><font color="#0000ff">new</font></b> <font color="#ff0000">Label</font>(0,0,”data 4 test”,format1) ③ </li></ol></div><br /><br /> 其中①指定了字串格式：字体为TIMES，字号16，加粗显示。WritableFont有非常丰富的构造子，供不同情况下使用，jExcelAPI的java-doc中有详细列表，这里不再列出。<br /><br /> ②处代码使用了WritableCellFormat类，这个类非常重要，通过它可以指定单元格的各种属性，后面的单元格格式化中会有更多描述。<br /><br /> ③处使用了Label类的构造子，指定了字串被赋予那种格式。<br /><br /> 在WritableCellFormat类中，还有一个很重要的方法是指定数据的对齐方式，比如针对我们上面的实例，可以指定：<br /><br />  
<div class="codeStyle"><ol><li><i><font color="#339900">//把水平对齐方式指定为居中</font></i></li><li> format1.setAlignment(jxl.format.Alignment.CENTRE); </li></ol></div><br /><br />  
<div class="codeStyle"><ol><li><i><font color="#339900">//把垂直对齐方式指定为居中</font></i></li><li> format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); </li></ol></div><br /><br /> 二、单元格操作<br /><br /> Excel中很重要的一部分是对单元格的操作，比如行高、列宽、单元格合并等，所幸jExcelAPI提供了这些支持。这些操作相对比较简单，下面只介绍一下相关的API。<br /><br /> 1、 合并单元格<br /><br />  
<div class="codeStyle"><ol><li>WritableSheet.mergeCells(<b><font color="#0000ff">int</font></b> m,<b><font color="#0000ff">int</font></b> n,<b><font color="#0000ff">int</font></b> p,<b><font color="#0000ff">int</font></b> q);  </li></ol></div><br /><br /> 作用是从(m,n)到(p,q)的单元格全部合并，比如：<br />  
<div class="codeStyle"><ol><li>WritableSheet sheet=book.createSheet(“第一页”,0); </li></ol></div><br /><br /> //合并第一列第一行到第六列第一行的所有单元格<br />  
<div class="codeStyle"><ol><li>sheet.mergeCells(0,0,5,0); </li></ol></div><br /><br /> 合并既可以是横向的，也可以是纵向的。合并后的单元格不能再次进行合并，否则会触发异常。<br /><br /> 2、 行高和列宽<br /><br />  
<div class="codeStyle"><ol><li>WritableSheet.setRowView(<b><font color="#0000ff">int</font></b> i,<b><font color="#0000ff">int</font></b> height); </li></ol></div><br /><br /> 作用是指定第i+1行的高度，比如：<br /><br /> //将第一行的高度设为200<br />  
<div class="codeStyle"><ol><li>sheet.setRowView(0,200); 
</li><li></li><li> WritableSheet.setColumnView(<b><font color="#0000ff">int</font></b> i,<b><font color="#0000ff">int</font></b> width); </li></ol></div><br /><br /> 作用是指定第i+1列的宽度，比如：<br /><br /> //将第一列的宽度设为30<br />  
<div class="codeStyle"><ol><li>sheet.setColumnView(0,30); </li></ol></div><br /><br /> jExcelAPI还有其他的一些功能，比如插入图片等，这里就不再一一介绍，读者可以自己探索。<br /><br /><br /><script type="text/javascript"><!--
google_ad_client = "pub-7390275636631344";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="5095444487";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script><img src ="http://www.blogjava.net/software5168/aggbug/55989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-06-30 16:54 <a href="http://www.blogjava.net/software5168/archive/2006/06/30/55989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Java读取Excel文件内容</title><link>http://www.blogjava.net/software5168/archive/2006/06/30/55986.html</link><dc:creator>software5168</dc:creator><author>software5168</author><pubDate>Fri, 30 Jun 2006 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/software5168/archive/2006/06/30/55986.html</guid><wfw:comment>http://www.blogjava.net/software5168/comments/55986.html</wfw:comment><comments>http://www.blogjava.net/software5168/archive/2006/06/30/55986.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/software5168/comments/commentRss/55986.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/software5168/services/trackbacks/55986.html</trackback:ping><description><![CDATA[可以用Java读取Microsoft Excel文件。微软提供了一个Excel的ODBC驱动程序，因此我们就可以使用JDBC和Sun的JDBC-ODBC驱动来读取Excel文件了。 <br /><br />  如果你有个Excel文件，名为Book1.xls（译者注：由于原文的例子我没有下载下来，所以我用了自己的例子），并且，该文件中有一个工作表（sheet）名为Sheet1<br /><br />  <br /><br />微软的ODBC驱动程序把工作表中的第一行作为列名（译者注：即字段名），工作表名作为数据库表名。 <br /><br />  要通过JDBC访问工作表，我们还必须创建一个新的ODBC数据源，在Windows 2000系统上创建数据源的过程如下：<br /><br /><br />进入“控制面板” --&gt; “管理工具” --&gt; “数据源（ODBC）”，（译者注：打开后选择系统DSN），点击添加，在弹出窗口中选择“Driver do Microsoft Excel(*.xls)”<br /><br /><br /><br /><br />然后在数据源名处输入你一个名字Book1（译者注：相当于数据库名），然后点击“选择工作簿”，然后找到并选取你的Excel文件<br /><br /><br />点击确定后，系统数据源列表中会出现你设置的数据源名称，<br />  <br /><br /><br /><br />  现在数据表已经在数据源列表里了（译者注：点击确定完成配置）。 <br /><br />  （译者注：我的例子中）现在如果我们想挑出test1列中的所有“测试”值，那就需要用以下的SQL查询：<br /><br />  SELECT test1 FROM [Sheet1$] WHERE test1='测试'<br /><br />  要注意的是工作表名后面跟了一个“$”符号，这个符号是不可缺少的。为什么？因为他的前后有方括号，因为“$”是SQL语句中的保留字。Life is never easy（译者注：作者发感慨了）。 <br /><br />下面是例子程序：<br /><pre class="overflow">import java.sql.Connection;<br />import java.sql.Statement;<br />import java.sql.ResultSet;<br />import java.sql.DriverManager;<br /><br />public class ExcelReader {<br /><br />    public static void main( String［］ args ) {<br /><br />        Connection c = null;<br />        Statement stmnt = null;<br />        try {<br />            Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );<br />            c = DriverManager.getConnection( "jdbc:odbc:Book1", "", "" );<br />            stmnt = c.createStatement();<br />            String query = "SELECT test1 FROM [Sheet1$] WHERE test1='测试'";<br />            ResultSet rs = stmnt.executeQuery( query );<br />            <br />            System.out.println( "查得匹配'测试'的test1的记录为:" );<br />            while( rs.next() ) {<br />                System.out.println( rs.getString( "test1" ) );<br />            }<br />        }<br />        catch( Exception e ) {<br />            System.err.println( e );<br />        }<br />        finally {<br />            try {<br />                stmnt.close();<br />                c.close();<br />            }<br />            catch( Exception e ) {<br />                System.err.println( e );<br />            }<br />        }<br />    }<br />}</pre><br />在此程序中，主函数main() 建立了一个数据表的连接，并取出符合条件的记录。 <br /><br />（译者注：另外，我这里还有一段程序，是读取所有记录的程序，仅作参考）： <br /><br /><pre class="overflow">import java.sql.Connection;<br />import java.sql.Statement;<br />import java.sql.ResultSet;<br />import java.sql.ResultSetMetaData;<br />import java.sql.DriverManager; <br /><br />public class ExcelReader { <br /><br />    public static void main(String［］ args){<br />        Connection connection = null; <br /><br />        try{<br />            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br />            Connection con = DriverManager.getConnection( "jdbc:odbc:Book1","","" );<br />            Statement st = con.createStatement();<br />            ResultSet rs = st.executeQuery( "SELECT * FROM [Sheet1$]" ); <br /><br />            ResultSetMetaData rsmd = rs.getMetaData();<br />            int numberOfColumns = rsmd.getColumnCount(); <br /><br />            while (rs.next()) {<br />                for (int i = 1; i &lt;= numberOfColumns; i++) {<br />                    if(i&gt;1)  //用逗号分隔各列<br />      System.out.print(", ");<br />                    String columnValue = rs.getString(i);<br />                    System.out.print(columnValue);<br />                }<br />                System.out.println("");<br />            } <br /><br />            st.close();<br />            con.close(); <br /><br /><br />        } catch(Exception ex) {<br />            System.err.print("Exception: ");<br />            System.err.println(ex.getMessage());<br />        }<br />    }<br /><br />}</pre><img src ="http://www.blogjava.net/software5168/aggbug/55986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/software5168/" target="_blank">software5168</a> 2006-06-30 16:51 <a href="http://www.blogjava.net/software5168/archive/2006/06/30/55986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>