<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>jjs_love的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=jjs_love</link>
<description>jjs_love的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[Setup.rul]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=24545</link>
<author>jjs_love</author>
<pubDate>2007/5/8 14:34:46</pubDate>
<description><![CDATA[<P><A>　//===========================================================================<BR>//<BR>//&nbsp; File Name:&nbsp;&nbsp;&nbsp; Setup.rul<BR>//<BR>//&nbsp; Description:&nbsp; Blank setup main script file<BR>//<BR>//&nbsp; Comments:&nbsp;&nbsp;&nbsp;&nbsp; Blank setup is an empty setup project. If you want to<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create a new project via. step-by step instructions use the<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Project Assistant.<BR>//<BR>//===========================================================================</A></P>
<P>// Included header files ----------------------------------------------------<BR>#include "ifx.h"<BR>//#include "functions.rul"&nbsp; //引入自定义函数<BR>string ip,user,pwd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </P>
<P>//---------------------------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>// OnFirstUIBefore<BR>//<BR>// First Install UI Sequence - Before Move Data<BR>//<BR>// The OnFirstUIBefore event is called by OnShowUI when the setup is<BR>// running in first install mode. By default this event displays UI allowing<BR>// the end user to specify installation parameters.<BR>//<BR>// Note: This event will not be called automatically in a<BR>// program...endprogram style setup.<BR>//---------------------------------------------------------------------------<BR>function OnFirstUIBefore()<BR>&nbsp;&nbsp;&nbsp; number&nbsp; nResult, nLevel, nSize, nSetupType;<BR>&nbsp;&nbsp;&nbsp; string&nbsp; szTitle, szMsg, szOpt1, szOpt2, szLicenseFile;<BR>&nbsp;&nbsp;&nbsp; string&nbsp; szName, szCompany, szTargetPath, szDir, szFeatures;<BR>&nbsp;&nbsp;&nbsp; BOOL&nbsp;&nbsp;&nbsp; bLicenseAccepted;&nbsp;<BR>&nbsp;&nbsp;&nbsp; string&nbsp; zzJdk,zzTomcat,pathTomcat,svvalue,xmlpath;&nbsp; //自定义<BR>&nbsp;&nbsp;&nbsp; NUMBER&nbsp; nType, nvSize;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //自定义<BR>begin&nbsp;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; nSetupType = COMPLETE;&nbsp;<BR>&nbsp;&nbsp; // szDir = TARGETDIR;<BR>&nbsp;&nbsp; // szName = "";<BR>&nbsp;&nbsp;&nbsp; //szCompany = "";<BR>&nbsp;&nbsp;&nbsp; bLicenseAccepted = FALSE;<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; szDir="c:\\";<BR>&nbsp;&nbsp;&nbsp; szName = "rcom";<BR>&nbsp;&nbsp;&nbsp; szCompany = "rcom";<BR>&nbsp;&nbsp;&nbsp; zzJdk="SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.5"; <BR>&nbsp;&nbsp;&nbsp; zzTomcat="SOFTWARE\\Apache Software Foundation\\Tomcat\\5.0";<BR>&nbsp;&nbsp;&nbsp; pathTomcat="";&nbsp; <BR>// Beginning of UI Sequence&nbsp;&nbsp; </P>
<P>Dlg_zzb:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //查找注册表看jdk,tomcat是否安装<BR>&nbsp;&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);&nbsp; <BR>&nbsp;&nbsp;if(RegDBKeyExist(zzJdk)!=1) then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox("先安装jdk",SEVERE);&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; abort;<BR>&nbsp;&nbsp;endif;&nbsp;&nbsp; <BR>&nbsp;&nbsp; nType = REGDB_STRING;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(RegDBKeyExist(zzTomcat)!=1) then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox("先安装tomcat",SEVERE);&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; abort;<BR>&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RegDBGetKeyValueEx(zzTomcat, "InstallPath", nType, svvalue,nvSize); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pathTomcat=svvalue;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; endif;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TARGETDIR=pathTomcat+"<A href="file://\\webapps">\\webapps</A>";&nbsp;&nbsp;&nbsp; //将项目安装到指定的目录&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Is(FILE_EXISTS, pathTomcat+"<A href="file://\\common\\endorsed\\xml-apis.jar">\\common\\endorsed\\xml-apis.jar</A>")) then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DeleteFile (pathTomcat+"<A href="file://\\common\\endorsed\\xml-apis.jar">\\common\\endorsed\\xml-apis.jar</A>");&nbsp;&nbsp;&nbsp;&nbsp; //将删除Tomcat目录下的多余的jar&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;// DeleteFile (pathTomcat+"<A href="file://\\common\\endorsed\\xml-apis.jar">\\common\\endorsed\\xml-apis.jar</A>");&nbsp;&nbsp;&nbsp;&nbsp; //将删除Tomcat目录下的多余的jar&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CopyFile(SRCDIR^"<A href='file://\\server.xml",pathTomcat+"\\conf\\server.xml");//'>\\server.xml",pathTomcat+"\\conf\\server.xml");//</A>拷贝server.xml文件到tomcat下面<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>Dlg_Start:<BR>&nbsp;&nbsp;&nbsp; nResult = 0;</P>
<P>Dlg_SdWelcome:<BR>&nbsp;&nbsp;&nbsp; szTitle = "";<BR>&nbsp;&nbsp;&nbsp; szMsg = "";<BR>&nbsp;&nbsp;&nbsp; //{{IS_SCRIPT_TAG(Dlg_SdWelcome)<BR>&nbsp;&nbsp;&nbsp; nResult = SdWelcome( szTitle, szMsg );<BR>&nbsp;&nbsp;&nbsp; //}}IS_SCRIPT_TAG(Dlg_SdWelcome)<BR>&nbsp;&nbsp;&nbsp; if (nResult = BACK) goto Dlg_Start;<BR>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>Dlg_SdLicense2:<BR>&nbsp;&nbsp;&nbsp; szTitle = "";<BR>&nbsp;&nbsp;&nbsp; szOpt1 = "";<BR>&nbsp;&nbsp;&nbsp; szOpt2 = "";<BR>&nbsp;&nbsp;&nbsp; //{{IS_SCRIPT_TAG(License_File_Path)<BR>&nbsp;&nbsp;&nbsp; szLicenseFile = SUPPORTDIR ^ "License.rtf";<BR>&nbsp;&nbsp;&nbsp; //}}IS_SCRIPT_TAG(License_File_Path)<BR>&nbsp;&nbsp;&nbsp; //{{IS_SCRIPT_TAG(Dlg_SdLicense2)<BR>&nbsp;&nbsp;&nbsp; nResult = SdLicense2Rtf( szTitle, szOpt1, szOpt2, szLicenseFile, bLicenseAccepted );<BR>&nbsp;&nbsp;&nbsp; //}}IS_SCRIPT_TAG(Dlg_SdLicense2)<BR>&nbsp;&nbsp;&nbsp; if (nResult = BACK) then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; goto Dlg_SdWelcome;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bLicenseAccepted = TRUE;<BR>&nbsp;&nbsp;&nbsp; endif;<BR>&nbsp;&nbsp;&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; <BR>Dlg_SdRegisterUser:<BR>&nbsp;&nbsp;&nbsp; szMsg = "";<BR>&nbsp;&nbsp;&nbsp; szTitle = "";<BR>&nbsp;&nbsp;&nbsp; //{{IS_SCRIPT_TAG(Dlg_SdRegisterUser)&nbsp;<BR>&nbsp;&nbsp;&nbsp; nResult = SdRegisterUser( szTitle, szMsg, szName, szCompany );<BR>&nbsp;&nbsp;&nbsp; //}}IS_SCRIPT_TAG(Dlg_SdRegisterUser)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (nResult = BACK) goto Dlg_SdLicense2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>// Dlg_SdInitDs:<BR>&nbsp;&nbsp;&nbsp; // nResult=initDataSource();&nbsp;&nbsp;&nbsp; //录入web连接信息&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; // if (nResult = -1) goto Dlg_SdInitDs;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if (nResult = BACK) goto Dlg_SdRegisterUser;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>Dlg_SetupType2:&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; szTitle = "";<BR>&nbsp;&nbsp;&nbsp; szMsg = "";<BR>&nbsp;&nbsp;&nbsp; nResult = CUSTOM;<BR>&nbsp;&nbsp;&nbsp; //{{IS_SCRIPT_TAG(Dlg_SetupType2)&nbsp;<BR>&nbsp;&nbsp;&nbsp; nResult = SetupType2( szTitle, szMsg, "", nSetupType, 0 );<BR>&nbsp;&nbsp;&nbsp; //}}IS_SCRIPT_TAG(Dlg_SetupType2)<BR>&nbsp;&nbsp;&nbsp; if (nResult = BACK) then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; goto Dlg_SdRegisterUser;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nSetupType = nResult;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (nSetupType != CUSTOM) then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; szTargetPath = TARGETDIR;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nSize = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FeatureCompareSizeRequired( MEDIA, szTargetPath, nSize );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (nSize != 0) then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox( szSdStr_NotEnoughSpace, WARNING );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; goto Dlg_SetupType2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; endif;</P>
<P>Dlg_SdAskDestPath2:<BR>&nbsp;&nbsp;&nbsp; if ((nResult = BACK) &amp;&amp; (nSetupType != CUSTOM)) goto Dlg_SetupType2;<BR>&nbsp;szTitle = "";<BR>&nbsp;&nbsp;&nbsp; szMsg = "";<BR>&nbsp;&nbsp;&nbsp; if (nSetupType = CUSTOM) then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //{{IS_SCRIPT_TAG(Dlg_SdAskDestPath2)&nbsp;<BR>&nbsp;&nbsp;nResult = SdAskDestPath2( szTitle, szMsg, szDir );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //}}IS_SCRIPT_TAG(Dlg_SdAskDestPath2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TARGETDIR = szDir;<BR>&nbsp;&nbsp;&nbsp; endif;<BR>&nbsp;&nbsp;&nbsp; if (nResult = BACK) goto Dlg_SetupType2;</P>
<P>Dlg_SdFeatureTree: <BR>&nbsp;&nbsp;&nbsp; if ((nResult = BACK) &amp;&amp; (nSetupType != CUSTOM)) goto Dlg_SdAskDestPath2;<BR>&nbsp;&nbsp;&nbsp; szTitle = "";<BR>&nbsp;&nbsp;&nbsp; szMsg = "";<BR>&nbsp;&nbsp;&nbsp; szFeatures = "";<BR>&nbsp;&nbsp;&nbsp; nLevel = 2;<BR>&nbsp;&nbsp;&nbsp; if (nSetupType = CUSTOM) then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //{{IS_SCRIPT_TAG(Dlg_SdFeatureTree)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nResult = SdFeatureTree( szTitle, szMsg, TARGETDIR, szFeatures, nLevel );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //}}IS_SCRIPT_TAG(Dlg_SdFeatureTree)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (nResult = BACK) goto Dlg_SdAskDestPath2;&nbsp; <BR>&nbsp;&nbsp;&nbsp; endif;</P>
<P>Dlg_SQLServer:<BR>&nbsp;&nbsp;&nbsp; nResult = OnSQLServerInitialize( nResult );<BR>&nbsp;&nbsp;&nbsp; if( nResult = BACK ) goto Dlg_SdFeatureTree;</P>
<P>Dlg_ObjDialogs:<BR>&nbsp;&nbsp;&nbsp; nResult = ShowObjWizardPages( nResult );<BR>&nbsp;&nbsp;&nbsp; if (nResult = BACK) goto Dlg_SQLServer;<BR>&nbsp;&nbsp;&nbsp; <BR>Dlg_SdStartCopy2:<BR>&nbsp;&nbsp;&nbsp; szTitle = "";<BR>&nbsp;&nbsp;&nbsp; szMsg = "";<BR>&nbsp;&nbsp;&nbsp; //{{IS_SCRIPT_TAG(Dlg_SdStartCopy2)&nbsp;<BR>&nbsp;&nbsp;&nbsp; nResult = SdStartCopy2( szTitle, szMsg );&nbsp;<BR>&nbsp;&nbsp;&nbsp; //}}IS_SCRIPT_TAG(Dlg_SdStartCopy2)<BR>&nbsp;&nbsp;&nbsp; if (nResult = BACK) goto Dlg_ObjDialogs;</P>
<P>&nbsp;&nbsp;&nbsp; // Added in 11.0 - Set appropriate StatusEx static text.<BR>&nbsp;&nbsp;&nbsp; SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_FIRSTUI ) );<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; return 0;<BR>end;</P>
<P><BR>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[面试题目总结]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=24544</link>
<author>jjs_love</author>
<pubDate>2007/5/8 13:04:13</pubDate>
<description><![CDATA[
<P>遍历目录</P>
<P>package rcom;</P>
<P>import java.io.*;</P>
<P>public class ListFile {<BR>&nbsp;public static void main(String[] args) throws Exception{<BR>&nbsp;&nbsp;listFile(new File("E:\\eclipse-SDK-3.2-win32\\eclipse\\configuration\\org.eclipse.update"));<BR>&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;}</P>
<P>&nbsp;&nbsp;public static void listFile(File file) throws Exception {<BR>&nbsp;&nbsp;if(file.isFile()) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("File :"+file.getAbsolutePath());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;System.out.println("Dir :"+file.getAbsolutePath());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File[] files = file.listFiles();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 0;i&lt;files.length;i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listFile(files[i]); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;}&nbsp; <BR>&nbsp;&nbsp;}</P>
<P><FONT size=2><FONT color=#c60a00>Unix 管道符</FONT>|,将一个命令的输出作为另外一个命令的输入</FONT></P>
<P><FONT size=2></FONT><BR>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[filter过滤]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=23586</link>
<author>jjs_love</author>
<pubDate>2007/3/31 11:12:22</pubDate>
<description><![CDATA[<P>web.xml<BR>&nbsp; &lt;servlet&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;description&gt;This is the description of my J2EE component&lt;/description&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;display-name&gt;This is the display name of my J2EE component&lt;/display-name&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;ShowImgServlet&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;rcom.rf.common.ShowImgServlet&lt;/servlet-class&gt;<BR>&nbsp; &lt;/servlet&gt;<BR>&nbsp; &lt;servlet-mapping&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;ShowImgServlet&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/servlet/ShowImgServlet&lt;/url-pattern&gt;<BR>&nbsp; &lt;/servlet-mapping&gt;<BR>&nbsp; &lt;filter&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;filter-name&gt;checksessionfilter&lt;/filter-name&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;filter-class&gt;rcom.rf.common.CheckSessionFilter&lt;/filter-class&gt;<BR>&nbsp; &lt;/filter&gt;<BR>&nbsp; &lt;filter-mapping&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;filter-name&gt;checksessionfilter&lt;/filter-name&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/admin/*&lt;/url-pattern&gt;<BR>&nbsp; &lt;/filter-mapping&gt;<BR><BR>CheckSessionFilter.java<BR>&nbsp; package rcom.rf.common;</P>
<P>import java.io.IOException;</P>
<P>import javax.servlet.Filter;<BR>import javax.servlet.FilterChain;<BR>import javax.servlet.FilterConfig;<BR>import javax.servlet.ServletException;<BR>import javax.servlet.ServletRequest;<BR>import javax.servlet.ServletResponse;<BR>import javax.servlet.http.HttpServlet;<BR>import javax.servlet.http.HttpServletRequest;<BR>import javax.servlet.http.HttpServletResponse;<BR>import javax.servlet.http.HttpSession;</P>
<P>public class CheckSessionFilter extends HttpServlet implements Filter {</P>
<P>&nbsp;private FilterConfig filterConfig;<BR>&nbsp;&nbsp; //Handle the passed-in FilterConfig<BR>&nbsp;&nbsp; public void init(FilterConfig filterConfig)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; this.filterConfig = filterConfig;<BR>&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp; //校验session<BR>&nbsp;&nbsp; public void doFilter(ServletRequest request, ServletResponse response,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FilterChain filterChain)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; HttpSession session = ((HttpServletRequest)request).getSession();<BR>&nbsp;&nbsp;&nbsp;&nbsp; try {<BR>&nbsp;&nbsp;&nbsp;if(session.getAttribute("username")==null){<BR>&nbsp;&nbsp;&nbsp;&nbsp;//System.out.println("session is null!没有登陆···");/////////////////<BR>&nbsp;&nbsp;&nbsp;&nbsp;((HttpServletResponse)response).sendRedirect("/rfnet/index.jsp");<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;filterChain.doFilter(request, response);<BR>&nbsp;&nbsp;} catch (IOException e) {<BR>&nbsp;&nbsp;&nbsp;System.out.println("CheckSessionFilter ERR IOException: "+e.getMessage());///////////<BR>&nbsp;&nbsp;&nbsp; filterConfig.getServletContext().log(e.getMessage());<BR>&nbsp;&nbsp;} catch (ServletException e) {<BR>&nbsp;&nbsp;&nbsp;System.out.println("CheckSessionFilter ERR ServletException: "+e.getMessage());///////////////////////////////<BR>&nbsp;&nbsp;&nbsp; filterConfig.getServletContext().log(e.getMessage());<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp; //Clean up resources<BR>&nbsp;&nbsp; public void destroy()<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp; }</P>
<P>}<BR>ShowImgServlet.java<BR>&nbsp; package rcom.rf.common;</P>
<P>import java.io.BufferedOutputStream;<BR>import java.io.IOException;<BR>import java.io.InputStream;<BR>import java.sql.Blob;<BR>import java.sql.SQLException;</P>
<P>import javax.servlet.ServletException;<BR>import javax.servlet.http.HttpServlet;<BR>import javax.servlet.http.HttpServletRequest;<BR>import javax.servlet.http.HttpServletResponse;</P>
<P>import rcom.rf.dao.ImgNewsDAO;</P>
<P><BR>public class ShowImgServlet extends HttpServlet {<BR>&nbsp;private static final String CONTENT_TYPE = "text/html; charset=GBK";<BR>&nbsp;/**<BR>&nbsp; * Constructor of the object.<BR>&nbsp; */<BR>&nbsp;public ShowImgServlet() {<BR>&nbsp;&nbsp;super();<BR>&nbsp;}</P>
<P>&nbsp;/**<BR>&nbsp; * Destruction of the servlet. &lt;br&gt;<BR>&nbsp; */<BR>&nbsp;public void destroy() {<BR>&nbsp;&nbsp;super.destroy(); // Just puts "destroy" string in log<BR>&nbsp;&nbsp;// Put your code here<BR>&nbsp;}</P>
<P>&nbsp;/**<BR>&nbsp; * The doGet method of the servlet. &lt;br&gt;<BR>&nbsp; *<BR>&nbsp; * This method is called when a form has its tag value method equals to get.<BR>&nbsp; * <BR>&nbsp; * @param request the request send by the client to the server<BR>&nbsp; * @param response the response send by the server to the client<BR>&nbsp; * @throws ServletException if an error occurred<BR>&nbsp; * @throws IOException if an error occurred<BR>&nbsp; */<BR>&nbsp;//显示图片<BR>&nbsp;public void doGet(HttpServletRequest request, HttpServletResponse response)<BR>&nbsp;&nbsp;&nbsp;throws ServletException, IOException {<BR>&nbsp;&nbsp;response.setContentType(CONTENT_TYPE);<BR>&nbsp;&nbsp;InputStream in = null;<BR>&nbsp;&nbsp;String id = request.getParameter("id");<BR>&nbsp;&nbsp;byte[] buff = new byte[10240];<BR>&nbsp;&nbsp;Blob blob = null;<BR>&nbsp;&nbsp;ImgNewsDAO imgDAO = null;<BR>&nbsp;&nbsp;int length = 0 ;<BR>&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;BufferedOutputStream buffout = new BufferedOutputStream(response.getOutputStream());<BR>&nbsp;&nbsp;&nbsp;if(id != null &amp;&amp; !id.equals("")){<BR>&nbsp;&nbsp;&nbsp;&nbsp;imgDAO = new ImgNewsDAO();<BR>&nbsp;&nbsp;&nbsp;&nbsp;blob = imgDAO.getImg(new Long(id));<BR>&nbsp;&nbsp;&nbsp;&nbsp;in = blob.getBinaryStream();<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;while((length = in.read(buff))!=-1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;buffout.write(buff,0,length);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;in.close();<BR>&nbsp;&nbsp;&nbsp;buffout.close();<BR>&nbsp;&nbsp;} catch (NumberFormatException e) {<BR>&nbsp;&nbsp;&nbsp;e.printStackTrace();<BR>&nbsp;&nbsp;} catch (IOException e) {<BR>&nbsp;&nbsp;&nbsp;e.printStackTrace();<BR>&nbsp;&nbsp;} catch (SQLException e) {<BR>&nbsp;&nbsp;&nbsp;e.printStackTrace();<BR>&nbsp;&nbsp;}<BR>&nbsp;}</P>
<P>&nbsp;/**<BR>&nbsp; * The doPost method of the servlet. &lt;br&gt;<BR>&nbsp; *<BR>&nbsp; * This method is called when a form has its tag value method equals to post.<BR>&nbsp; * <BR>&nbsp; * @param request the request send by the client to the server<BR>&nbsp; * @param response the response send by the server to the client<BR>&nbsp; * @throws ServletException if an error occurred<BR>&nbsp; * @throws IOException if an error occurred<BR>&nbsp; */<BR>&nbsp;public void doPost(HttpServletRequest request, HttpServletResponse response)<BR>&nbsp;&nbsp;&nbsp;throws ServletException, IOException {<BR>&nbsp;}</P>
<P>&nbsp;/**<BR>&nbsp; * Initialization of the servlet. &lt;br&gt;<BR>&nbsp; *<BR>&nbsp; * @throws ServletException if an error occure<BR>&nbsp; */<BR>&nbsp;public void init() throws ServletException {<BR>&nbsp;&nbsp;// Put your code here<BR>&nbsp;}</P>
<P>}<BR><A href="http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2727">http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2727</A></P>]]></description>
</item><item>
<title><![CDATA[操作blob与clob]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=23368</link>
<author>jjs_love</author>
<pubDate>2007/3/22 10:13:27</pubDate>
<description><![CDATA[
<P>　clob</P>
<P>public void addArmynews(Armynews armynews, String clobstr) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session =this.getSession();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transaction tran = session.beginTransaction();<BR>&nbsp;&nbsp;try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; armynews.setContent(Hibernate.createClob(" ")); //插入一个空的<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.save(armynews);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.flush();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.refresh(armynews,LockMode.UPGRADE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SerializableClob&nbsp; sc = (SerializableClob)armynews.getContent();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clob wrapclob = sc.getWrappedClob();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLOB clob = (CLOB)wrapclob;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clob.putString(1,clobstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tran.commit();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception ex){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tran.rollback();<BR>&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;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;</P>
<P>&nbsp;&nbsp;<BR>&nbsp;}</P>
<P>&nbsp;&nbsp;public void editInform(Inform inform,String clobstr)<BR>&nbsp;{<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session =this.getSession();<BR>&nbsp;&nbsp; Transaction tran = session.beginTransaction();<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp; try{<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Inform temp=(Inform) session.load(Inform.class,inform.getId());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp.setContent(Hibernate.createClob(" "));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp.setTime1(inform.getTime1());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp.setTitle(inform.getTitle());<BR>&nbsp;&nbsp;&nbsp; session.flush();<BR>&nbsp;&nbsp;&nbsp; session.refresh(temp,LockMode.UPGRADE);<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SerializableClob&nbsp; sc = (SerializableClob)temp.getContent();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clob wrapclob = sc.getWrappedClob();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLOB clob = (CLOB)wrapclob;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clob.putString(1,clobstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tran.commit();</P>
<P>&nbsp;&nbsp; }catch(Exception e){<BR>&nbsp;&nbsp;&nbsp; tran.rollback();<BR>&nbsp;&nbsp;&nbsp; System.out.print(e.getMessage()+"ok");<BR>&nbsp;&nbsp; }<BR>&nbsp;}</P>
<P>&nbsp;public Armynews findArmynewsID(Long id) {<BR>&nbsp;&nbsp;Session session =this.getSession();<BR>&nbsp;&nbsp;Armynews result=(Armynews) session.get(Armynews.class,id);<BR>&nbsp;&nbsp;java.sql.Clob clob=result.getContent();<BR>&nbsp; try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str=clob.getSubString(1, (int) clob.length());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result.setClobstr(str);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;System.out.print("Error_clob:"+e.getMessage());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; &nbsp;return result;<BR>&nbsp;}<BR>blob</P>
<P>映射成byte[]类型直接保存就是了</P>
<P>读取图</P>
<P>&nbsp;public ActionForward gethot(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) <BR>&nbsp;{<BR>&nbsp;</P>
<P><BR>&nbsp;&nbsp;try{<BR>&nbsp;&nbsp;&nbsp;BufferedOutputStream buffout = new BufferedOutputStream(response.getOutputStream());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List list=armynewsDAO.findHotArmynews();<BR>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; Armynews armynews=new Armynews();<BR>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; armynews=(Armynews) list.get(0);<BR>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; byte[] buff = armynews.getPic();<BR>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; buffout.write(buff);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buffout.close();<BR>&nbsp;&nbsp;}catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;System.out.print(e.getMessage());<BR>&nbsp;&nbsp;}finally{<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;}<BR>&nbsp; <BR>&nbsp;&nbsp;return&nbsp; null; <BR>&nbsp;}</P>]]></description>
</item><item>
<title><![CDATA[多文件上传(服务器存文件)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=23367</link>
<author>jjs_love</author>
<pubDate>2007/3/22 10:04:08</pubDate>
<description><![CDATA[<P>jsp页面</P>
<P>&lt;%@ page language="java" pageEncoding="UTF-8"%&gt;</P>
<P>&lt;%@ taglib uri="<A href="http://jakarta.apache.org/struts/tags-bean">http://jakarta.apache.org/struts/tags-bean</A>" prefix="bean" %&gt;<BR>&lt;%@ taglib uri="<A href="http://jakarta.apache.org/struts/tags-html">http://jakarta.apache.org/struts/tags-html</A>" prefix="html" %&gt;<BR>&lt;%@ taglib uri="<A href="http://jakarta.apache.org/struts/tags-logic">http://jakarta.apache.org/struts/tags-logic</A>" prefix="logic" %&gt;<BR>&lt;%@ taglib uri="<A href="http://struts.apache.org/tags-nested">http://struts.apache.org/tags-nested</A>" prefix="nested" %&gt;</P>
<P>&nbsp;</P>
<P>&lt;html:html locale="true"&gt;<BR>&nbsp; &lt;head&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;html:base /&gt;</P>
<P>&lt;title&gt;广州军区房地产管理局图片视频上传系统&lt;/title&gt;</P>
<P>&lt;style type="text/css"&gt;<BR>&lt;!--<BR>body {<BR>&nbsp;margin-left: 0px;<BR>&nbsp;margin-top: 0px;<BR>&nbsp;margin-right: 0px;<BR>&nbsp;margin-bottom: 0px;<BR>}<BR>.style {<BR>&nbsp;border-bottom-width: 1px;<BR>&nbsp;border-bottom-style: solid;<BR>&nbsp;border-bottom-color: #afc4d9;<BR>}</P>
<P>.file { font: 10pt; color: black; }<BR>--&gt;<BR>&lt;/style&gt;<BR>&lt;link href="css/style.css" rel="stylesheet" type="text/css"&gt;<BR>&lt;SCRIPT&gt;<BR>function CheckFile(str){</P>
<P>var reg=/^[A-Z]{1}\:\\(?!\s+)([^\\]+(?:\\))*([^\s]+(?:\.))+[^\.\s]+$/;<BR>return Check(reg,str);</P>
<P>}</P>
<P>&lt;/SCRIPT&gt;<BR>&lt;/head&gt;<BR>&lt;html:errors/&gt;<BR>&lt;body&gt;<BR>&lt;html:form&nbsp; method="post"&nbsp; action="ks.do?method=upload" enctype="multipart/form-data"&gt;&nbsp; <BR>&lt;table width="760"&nbsp; border="0" align="center" cellpadding="0" cellspacing="0"&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td align="left" valign="top"&gt;&lt;table width="760" border=1 align="center" cellpadding=0 bordercolorlight=#afc4d9 bordercolordark=#ffffff bgcolor=#ffffff class=p1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="1001" height="25" align="center" bgcolor="#CADDFD"&gt;&lt;span class="bt"&gt;添加试题文件&lt;/span&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width="100%" border=1 cellpadding=0 bordercolorlight=#afc4d9 bordercolordark=#ffffff bgcolor=#ffffff class=p1 id=Table4&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr align="center" valign="middle"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="20"&gt;文件列表&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="20" align="left" valign="top"&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;div id="fileDiv"&nbsp; style='height:150px;top:150px;left:0px;overflow-x:auto;overflow-y:auto ;border-style:outset;border-width:0pt;border-color:&nbsp; black;'&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;nested:iterate&nbsp; id="uploadFile"&nbsp; property="uploadfiles"&nbsp; name="imgForm" indexId="index"&gt;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;nested:nest&nbsp; property="uploadFile"&gt;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件名称:&lt;nested:text&nbsp; property="mc"&nbsp; name="uploadFile"&nbsp; indexed="true"/&gt;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选择文件:&lt;nested:file&nbsp; property="theFile"&nbsp; name="uploadFile"&nbsp; indexed="true"/&gt;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/nested:nest&gt;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&lt;/nested:iterate&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table id=conditionTable border=0&nbsp; &gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table width="760" &gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="760" height="26" align="center" valign="middle" bgcolor="#CADDFD" class="style"&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table width="49%"&nbsp; border="0" cellspacing="0" cellpadding="0"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td align="right" valign="center"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp; type="button"&nbsp; name="btnAddFile"&nbsp; value="继续添加"&nbsp; onclick="addFile()"/&gt;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp; type="submit"&nbsp; name="submit"&nbsp; value="上&nbsp; 传"&nbsp; /&gt;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp; type="button"&nbsp; name="btnBack"&nbsp; value="返&nbsp; 回"&nbsp; onclick="javascript:window.location.href='http://37.51.176.64/House'"&nbsp; /&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp; &lt;/table&gt;<BR>&lt;/html:form&gt;&nbsp; <BR>&lt;/body&gt;&nbsp; <BR>&lt;/html:html&gt; </P>
<P>&lt;script&nbsp; language="javascript"&gt;<BR>&nbsp; </P>
<P><BR>var i=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function addFile() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp; currRow=conditionTable.insertRow();<BR>&nbsp;&nbsp;&nbsp;&nbsp; cellc=currRow.insertCell();<BR>&nbsp;&nbsp;&nbsp;&nbsp; cellcContext= '&amp;nbsp;&amp;nbsp;&amp;nbsp;文件名称:&lt;input type="text" name="uploadFile['+i+'].mc" &gt;选择文件:&lt;input type="file" name="uploadFile['+i+'].theFile" &gt;&amp;nbsp;&amp;nbsp;&lt;button onclick="removeFile();"&gt;删除&lt;/button&gt;&lt;br&gt;';<BR>&nbsp;&nbsp;&nbsp;&nbsp; cellc.innerHTML=cellcContext;</P>
<P>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>function findTD(o){<BR>if (o.nodeName=="TR"||o.nodeName=="TABLE") return;<BR>if(o.nodeName=="TD")<BR>return (o);<BR>else<BR>return (o.parentElement);<BR>}</P>
<P><BR>function removeFile(){<BR>&nbsp; o = findTD(event.srcElement);<BR>&nbsp;conditionTable.deleteRow(o.parentElement.rowIndex*1);<BR>&nbsp; i--;<BR>}<BR>&nbsp;<BR>&nbsp;</P>
<P><BR>function MutilUpload(){<BR>&nbsp;&nbsp;var cnt;<BR>&nbsp;&nbsp;var bl=true;<BR>&nbsp;&nbsp;for(cnt=0;cnt&lt;=i;cnt++){<BR>&nbsp;&nbsp;&nbsp;bl=bl&amp;&amp;checkOneFile(cnt);</P>
<P>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;if(bl){<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.forms[0].submit();<BR>&nbsp;&nbsp;&nbsp;return bl;<BR>&nbsp;&nbsp;}else<BR>&nbsp;&nbsp;&nbsp;return bl;<BR>}<BR>&nbsp; <BR>function checkOneFile(j){</P>
<P>&nbsp;var eFile=document.getElementsByName("uploadFile["+j+"].theFile").item(0).value;<BR>&nbsp;if(eFile==''||eFile==null||!CheckFile(eFile)){<BR>&nbsp;&nbsp;alert('文件输入错误'+eFile);<BR>&nbsp;&nbsp;return false;<BR>&nbsp;}else<BR>&nbsp;&nbsp; return true;<BR>}</P>
<P>&lt;/script&gt; </P>
<P>formbean</P>
<P>package cn.com.house.view.struts.form;</P>
<P>import java.util.ArrayList;<BR>import java.util.List;</P>
<P>import org.apache.struts.action.ActionForm;<BR>import org.apache.struts.upload.FormFile;</P>
<P><BR>import cn.com.house.data.bo.Ks;</P>
<P>public class ImagForm extends ActionForm&nbsp; {<BR>&nbsp;private Ks ksvo=new Ks();<BR>&nbsp;&nbsp;&nbsp; private List uploadfiles;<BR>&nbsp;&nbsp;&nbsp; private FormFile fileContent;<BR>&nbsp;&nbsp;&nbsp; public ImagForm(){<BR>&nbsp;&nbsp;uploadfiles=new&nbsp; ArrayList();<BR>&nbsp;&nbsp;uploadfiles.add(new UploadFile());<BR>&nbsp;}<BR>&nbsp;</P>
<P>&nbsp;public UploadFile getUploadFile(int index) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int size = uploadfiles.size();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(index&gt;0){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;uploadfiles.add(new UploadFile());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;size++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;} <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (UploadFile)uploadfiles.get(size-1);<BR>&nbsp;}</P>
<P>&nbsp;public void setUploadFile(List uploadfiles) {<BR>&nbsp;<BR>&nbsp;&nbsp;this.uploadfiles = uploadfiles;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;public List getUploadfiles() {<BR>&nbsp;&nbsp;return uploadfiles;<BR>&nbsp;}</P>
<P><BR>&nbsp;public Ks getKsvo() {<BR>&nbsp;&nbsp;return ksvo;<BR>&nbsp;}</P>
<P><BR>&nbsp;public void setKsvo(Ks ksvo) {<BR>&nbsp;&nbsp;this.ksvo = ksvo;<BR>&nbsp;}</P>
<P><BR>&nbsp;public FormFile getFileContent() {<BR>&nbsp;&nbsp;return fileContent;<BR>&nbsp;}</P>
<P><BR>&nbsp;public void setFileContent(FormFile fileContent) {<BR>&nbsp;&nbsp;this.fileContent = fileContent;<BR>&nbsp;}</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P><BR>}<BR></P>
<P>Action</P>
<P>package cn.com.house.view.struts.action;</P>
<P>import java.io.BufferedInputStream;<BR>import java.io.BufferedOutputStream;<BR>import java.io.File;<BR>import java.io.FileInputStream;<BR>import java.io.FileOutputStream;<BR>import java.io.IOException;<BR>import java.io.InputStream;<BR>import java.io.OutputStream;<BR>import java.io.PrintWriter;<BR>import java.net.URLDecoder;<BR>import java.text.SimpleDateFormat;<BR>import java.util.List;<BR>import java.util.Random;<BR>import java.util.UUID;</P>
<P>import javax.servlet.http.HttpServletRequest;<BR>import javax.servlet.http.HttpServletResponse;</P>
<P><BR>import org.apache.struts.action.ActionForm;<BR>import org.apache.struts.action.ActionForward;<BR>import org.apache.struts.action.ActionMapping;<BR>import org.apache.struts.actions.DispatchAction;<BR>import org.apache.struts.upload.FormFile;</P>
<P>import cn.com.house.data.bo.Ks;<BR>import cn.com.house.data.dao.impl.ArmynewsDAO;<BR>import cn.com.house.view.struts.form.ImagForm;</P>
<P>import cn.com.house.view.struts.form.UploadFile;</P>
<P><BR>public class KsAction&nbsp; extends DispatchAction{<BR>&nbsp;private final static String&nbsp; hql="from Ks as k where k.type=? order by k.id asc";<BR>&nbsp;private ArmynewsDAO&nbsp; armynewsDAO;<BR>&nbsp;&nbsp;&nbsp; private String&nbsp; filename;<BR>&nbsp;&nbsp;&nbsp; private String&nbsp; filenamereal;<BR>&nbsp;public ArmynewsDAO getArmynewsDAO() {<BR>&nbsp;&nbsp;return armynewsDAO;<BR>&nbsp;}</P>
<P>&nbsp;public void setArmynewsDAO(ArmynewsDAO armynewsDAO) {<BR>&nbsp;&nbsp;this.armynewsDAO = armynewsDAO;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;public ActionForward kslist(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; saveToken(request);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String type=request.getParameter("type");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List list=armynewsDAO.findAllObj(hql,"1");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.setAttribute("list",list);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String path="/ks/kslist.jsp?type="+type;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return new ActionForward(path);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; }<BR>&nbsp;<BR>&nbsp;public ActionForward imgupload(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; saveToken(request);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;return new ActionForward("/ks/addimag.jsp");<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; }<BR>&nbsp;<BR>&nbsp;public ActionForward del(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String id=request.getParameter("id");<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;armynewsDAO.delKs(new Long(id),getUploadPath());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String path="/ks.do?method=kslist&amp;type=1";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new ActionForward(path);<BR>&nbsp;&nbsp; }<BR>&nbsp;<BR>&nbsp;public ActionForward upload(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) </P>
<P>&nbsp;{<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;ImagForm formvo=(ImagForm) form;<BR>&nbsp;&nbsp;if(isTokenValid(request,true)){<BR>&nbsp;&nbsp;List list=formvo.getUploadfiles();<BR>&nbsp;&nbsp;int size=list.size();<BR>&nbsp;&nbsp;String mc="";<BR>&nbsp;&nbsp;for(int i=0;i&lt;size;i++){<BR>&nbsp;&nbsp;&nbsp;FormFile file=((UploadFile) list.get(i)).getTheFile();<BR>&nbsp;&nbsp;&nbsp;mc=((UploadFile) list.get(i)).getMc();<BR>&nbsp;&nbsp;&nbsp;if(file==null){<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;}else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;uploadfile(file);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(mc==null|| mc.equals("")){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saveDB(this.getFilenamereal(),"1");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saveDB(mc,"1");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;}</P>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String path="/ks.do?method=kslist&amp;type=1";<BR>&nbsp;&nbsp;&nbsp;&nbsp; return new ActionForward(path);<BR>&nbsp; }<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;public ActionForward ks(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; saveToken(request);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new ActionForward("/ks/ks.jsp");<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; }<BR>&nbsp;<BR>&nbsp;public ActionForward reslut(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response)&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImagForm formvo=(ImagForm) form;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(isTokenValid(request,true)){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FormFile file= formvo.getFileContent();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String mc="";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc=request.getParameter("mc");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uploadfile(file);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(mc==null|| mc==""){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saveDB(this.getFilenamereal(),"2");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saveDB(mc,"2");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute("result","ok");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;}else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute("result","token");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;request.setAttribute("result","no");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp; new ActionForward("/ks/reslut.jsp");<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; }<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;public ActionForward reslutlist(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; saveToken(request);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List list=armynewsDAO.findAllObj(hql,"2");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.setAttribute("list",list);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return new ActionForward("/ks/reslutlist.jsp");<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; }<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;public ActionForward delreslut(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String id=request.getParameter("id");<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;armynewsDAO.delKs(new Long(id),getUploadPath());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp; reslutlist(mapping,form,request,response);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; }<BR>&nbsp;</P>
<P>&nbsp;<BR>&nbsp;<BR>&nbsp;public ActionForward getXls(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) {<BR>&nbsp;&nbsp;try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String file=request.getParameter("file");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String path=this.getUploadPath()+"/ks/Upload/"+file;<BR>&nbsp;&nbsp;&nbsp;response.reset();<BR>&nbsp;&nbsp;&nbsp;response.setContentType("application/vnd.ms-excel");&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;InputStream ips =new FileInputStream(path);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;OutputStream ops=response.getOutputStream();&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp; data=-1;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;while((data&nbsp;&nbsp; = ips.read())!=-1)&nbsp;&nbsp; {&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; ops.write(data); <BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;ops.flush();<BR>&nbsp;&nbsp;&nbsp;ips.close(); <BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;&nbsp; return&nbsp; null;//kslist(mapping,form,request,response);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; }</P>
<P>&nbsp;public void uploadfile(FormFile files) <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;<BR>&nbsp;&nbsp;PrintWriter buff=null;</P>
<P>&nbsp;&nbsp;try{<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;String formart = "yyyyMMddHHmmss";<BR>&nbsp;&nbsp;&nbsp;Random random = new Random();<BR>&nbsp;&nbsp;&nbsp;String fileName = new SimpleDateFormat(formart).format(new java.util.Date());<BR>&nbsp;&nbsp;&nbsp;fileName += Math.abs(random.nextInt()) % 100;<BR>&nbsp;&nbsp;&nbsp;String rndstr=fileName;<BR>&nbsp;&nbsp;&nbsp;//String rndstr=UUID.randomUUID().toString();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String laststr=files.getFileName().substring(files.getFileName().lastIndexOf("."));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String pst=files.getFileName().substring(0,files.getFileName().lastIndexOf("."));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setFilenamereal(pst);<BR>&nbsp;&nbsp;&nbsp;String filename=files.getFileName().substring(0,files.getFileName().lastIndexOf(".")).concat(rndstr)+laststr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setFilename(filename);<BR>&nbsp;&nbsp;&nbsp;File newdir=new File(ArmynewsAction.getUploadPath()+"/ks/Upload/");<BR>&nbsp;&nbsp;&nbsp;if(!newdir.exists()){<BR>&nbsp;&nbsp;&nbsp;&nbsp;newdir.mkdir();<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;String path=ArmynewsAction.getUploadPath()+"/ks/Upload/"+filename;<BR>&nbsp;&nbsp;&nbsp;File savefile=new File(path);<BR>&nbsp;&nbsp;&nbsp;final int size=8192;<BR>&nbsp;&nbsp;&nbsp;InputStream input=files.getInputStream();<BR>&nbsp;&nbsp;&nbsp;BufferedInputStream buffinput=new BufferedInputStream(input);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileOutputStream fileout=new FileOutputStream(savefile);<BR>&nbsp;&nbsp;&nbsp;BufferedOutputStream buffout=new BufferedOutputStream(fileout);<BR>&nbsp;&nbsp;&nbsp;byte []buffer=new byte[size];<BR>&nbsp;&nbsp;&nbsp;while(buffinput.read(buffer,0,size)!=-1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;buffout.write(buffer,0,size);<BR>&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;buffout.close();<BR>&nbsp;&nbsp;&nbsp;fileout.close();<BR>&nbsp;&nbsp;&nbsp;buffinput.close();<BR>&nbsp;&nbsp;&nbsp;input.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;}catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;}<BR>&nbsp;<BR>&nbsp;</P>
<P>&nbsp;&nbsp;<BR>&nbsp;public static&nbsp; String getUploadPath(){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String testStr=ArmynewsAction.class.getClassLoader().getResource("").getPath();<BR>&nbsp;&nbsp;testStr=testStr.substring(0,testStr.lastIndexOf("/"));<BR>&nbsp;&nbsp;testStr=testStr.substring(0,testStr.lastIndexOf("/"));<BR>&nbsp;&nbsp;testStr=testStr.substring(0,testStr.lastIndexOf("/"));<BR>&nbsp;&nbsp;testStr=URLDecoder.decode(testStr);<BR>&nbsp;&nbsp;return testStr;<BR>&nbsp;} <BR>&nbsp;<BR>&nbsp;<BR>&nbsp;public void&nbsp; saveDB(String mc,String type){<BR>&nbsp;&nbsp;Ks kss=new Ks();<BR>&nbsp;&nbsp;kss.setPath(this.getFilename());<BR>&nbsp;&nbsp;kss.setType(type);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kss.setMc(mc);<BR>&nbsp;&nbsp;armynewsDAO.saveObj(kss);<BR>&nbsp;}</P>
<P>&nbsp;public String getFilename() {<BR>&nbsp;&nbsp;return filename;<BR>&nbsp;}</P>
<P>&nbsp;public void setFilename(String filename) {<BR>&nbsp;&nbsp;this.filename = filename;<BR>&nbsp;}</P>
<P>&nbsp;public String getFilenamereal() {<BR>&nbsp;&nbsp;return filenamereal;<BR>&nbsp;}</P>
<P>&nbsp;public void setFilenamereal(String filenamereal) {<BR>&nbsp;&nbsp;this.filenamereal = filenamereal;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;public ActionForward test(<BR>&nbsp;&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;HttpServletResponse response) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;armynewsDAO.delKs(new Long(1),getUploadPath());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp; null;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; }<BR>&nbsp;<BR>}<BR></P>]]></description>
</item><item>
<title><![CDATA[DetachedCriteria]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=23366</link>
<author>jjs_love</author>
<pubDate>2007/3/22 10:00:33</pubDate>
<description><![CDATA[<P>DetachedCriteria detachedCriteria =DetachedCriteria.forClass(UserVO.class)<BR>&nbsp;//.add(Restrictions.like("username","sz",MatchMode.ANYWHERE));<BR>&nbsp;&nbsp;&nbsp;.add(org.hibernate.criterion.Expression.disjunction()&nbsp; //or查询把add放到外面是and查询,MatchMode.ANYWHERE糊查询<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add(org.hibernate.criterion.Property.forName("username").like("s", MatchMode.ANYWHERE))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add(org.hibernate.criterion.Property.forName("password").like("c", MatchMode.ANYWHERE))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );</P>
<P>&nbsp;</P>
<P>多对一情况&nbsp;&nbsp;<BR>DetachedCriteria&nbsp; zlbdc=DetachedCriteria.forClass(ZlZlxm.class, "zlb");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; .createAlias("zlb.zl", "t")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // .setProjection(Property.forName("t.id").count())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //.add(Property.forName("t.id").eq(new&nbsp; Long(1)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.hibernate.criterion.Projection projection=org.hibernate.criterion.Projections.projectionList()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add(org.hibernate.criterion.Property.forName("zlb.fdxx"),"id");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zlbdc.setProjection(projection);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //zlbdc.createCriteria("zl");//加上这句是内联接(inner join)zl为集合<BR>投影查询，得到一是object[]</P>
<P><BR>&nbsp;&nbsp;DetachedCriteria&nbsp; zlbdc=DetachedCriteria.forClass(ZlZlxm.class, "zlb")<BR>&nbsp;&nbsp;//zlbdc.createCriteria("zl"); //此处为对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .createAlias("zlb.zl", "t") //别名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setProjection(Property.forName("t.id").count())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add(Property.forName("t.id").eq(new&nbsp; Long(1))); //这里统计的是个数内联接(inner join)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //zladc.setFetchMode("zla.zlZlxm", org.hibernate.FetchMode.JOIN);//无作用(集合lazy)？？？，如果not lazy将会是全部查出</P>]]></description>
</item><item>
<title><![CDATA[spring 学习的一些网上资料(不断更新当中)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=22613</link>
<author>jjs_love</author>
<pubDate>2007/2/8 12:57:32</pubDate>
<description><![CDATA[<A href="http://blog.csdn.net/f9inux/archive/2006/06/23/825176.aspxspring in action 学习笔记&nbsp; http://blog.csdn.net/qutrPro Spring学习&nbsp; http://www.blogjava.net/jinfeng_wang/category/480.html">　使用Spring的JdbcTemplate实现分页功能 <BR>http://blog.csdn.net/f9inux/archive/2006/06/23/825176.aspx<BR>spring in action 学习笔记&nbsp; http://blog.csdn.net/qutr<BR>Pro Spring学习&nbsp; http://www.blogjava.net/jinfeng_wang/category/480.html</A>]]></description>
</item><item>
<title><![CDATA[oracle  学习的一些网上资料(不断更新当中)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=22612</link>
<author>jjs_love</author>
<pubDate>2007/2/8 12:53:06</pubDate>
<description><![CDATA[<P><A href="http://blog.csdn.net/baggio785/articles/623659.aspx">　 大量数据分页处理 http://blog.csdn.net/baggio785/articles/623659.aspx</A></P>
<P>Oracle SQL FAQ&nbsp;&nbsp; <A href="http://www.cnblogs.com/wtiancai/archive/2005/09/29/246651.html">http://www.cnblogs.com/wtiancai/archive/2005/09/29/246651.html</A><BR>oracle常用命令&nbsp;&nbsp; <A href="http://www.cnblogs.com/wtiancai/archive/2005/07/05/186710.html">http://www.cnblogs.com/wtiancai/archive/2005/07/05/186710.html</A> <BR>oracle函数大全&nbsp;&nbsp; <A href="http://www.cnblogs.com/wtiancai/archive/2005/03/29/127909.html">http://www.cnblogs.com/wtiancai/archive/2005/03/29/127909.html</A><BR>数据据学习&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </P>
<P><A href="http://blog.csdn.net/softj/category/149670.aspx">http://blog.csdn.net/softj/category/149670.aspx</A><BR>&nbsp;<A href="http://blog.csdn.net/AppleBBS/category/83516.aspx?PageNumber=1">http://blog.csdn.net/AppleBBS/category/83516.aspx?PageNumber=1</A></P>
<P>Oracle时间日期操作&nbsp; <A href="http://till.javaeye.com/blog/41164">http://till.javaeye.com/blog/41164</A></P>
<P>uml学习&nbsp; <A href="http://www.blogjava.net/jelver/category/7679.html">http://www.blogjava.net/jelver/category/7679.html</A><BR>oracle笔记录: <A href="http://itpub120.itpub.net/post/25009/233377">http://itpub120.itpub.net/post/25009/233377</A></P>]]></description>
</item><item>
<title><![CDATA[应用JDOM处理xml(实践)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=14649</link>
<author>jjs_love</author>
<pubDate>2006/5/23 10:48:09</pubDate>
<description><![CDATA[<P>package com.jdom;<BR>import java.io.BufferedOutputStream;<BR>import java.io.File;<BR>import java.io.FileInputStream;<BR>import java.io.FileOutputStream;<BR>import java.io.FileWriter;<BR>import java.io.IOException;<BR>import java.net.URL;<BR>import java.util.ArrayList;<BR>import java.util.Iterator;<BR>import java.util.List;</P>
<P>import org.jdom.Attribute;<BR>import org.jdom.Document;<BR>import org.jdom.Element;<BR>import org.jdom.JDOMException;<BR>import org.jdom.input.SAXBuilder;<BR>import org.jdom.output.XMLOutputter;</P>
<P><BR>import java.util.Date;<BR>import java.text.SimpleDateFormat;</P>
<P>public class jdom {<BR>&nbsp; private static&nbsp; String xmlfile="com/jdom/bus.xml";<BR>&nbsp; private static jdom xmlReadWrite = null;<BR>&nbsp; private static Object obj=new Object();<BR>&nbsp;public static jdom getInstance(){<BR>&nbsp;&nbsp;if(xmlReadWrite==null){<BR>&nbsp;&nbsp;&nbsp;&nbsp; synchronized(obj){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(xmlReadWrite==null){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlReadWrite=new jdom();<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return xmlReadWrite;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;}</P>
<P><BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public String getRealPath(String path){<BR>&nbsp;&nbsp;&nbsp; &nbsp;URL url = null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url&nbsp; = this.getClass().getClassLoader().getResource(path);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(e.getMessage());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return url.getFile();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp; <BR>&nbsp;&nbsp; public bus loadxml(String xmlfile,int id){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bus a=new bus();<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList list=new ArrayList();<BR>&nbsp;&nbsp;&nbsp; SAXBuilder sb = new SAXBuilder(false);<BR>&nbsp;&nbsp;&nbsp; Document doc=sb.build(xmlfile);<BR>&nbsp;&nbsp;&nbsp; Element root=doc.getRootElement();<BR>&nbsp;&nbsp;&nbsp; List book=root.getChildren();<BR>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;book.size();i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp; Element booka=(Element)book.get(i); <BR>&nbsp;&nbsp;&nbsp;&nbsp; String ids=booka.getChild("id").getText();<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(ids.equals(String.valueOf(id))){<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.setName(booka.getChild("name").getText());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.setAuthor(booka.getChild("author").getText());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String price=booka.getChild("price").getText();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.setPrice(Double.valueOf(price));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String datePrice=booka.getChild("publishDate").getText();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date start_date=sdf.parse(datePrice);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.setPublishDate(start_date);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return a;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception e){ <BR>&nbsp;&nbsp;&nbsp; System.out.print(e.getMessage());<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public Iterator&nbsp; LoadXML(String xmlfile){<BR>&nbsp;&nbsp;&nbsp;&nbsp; try{<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");<BR>&nbsp;&nbsp;&nbsp; ArrayList list=new ArrayList();<BR>&nbsp;&nbsp;&nbsp; SAXBuilder sb = new SAXBuilder(false);<BR>&nbsp;&nbsp;&nbsp; Document doc=sb.build(xmlfile);<BR>&nbsp;&nbsp;&nbsp; Element root=doc.getRootElement();<BR>&nbsp;&nbsp;&nbsp; List bus = root.getChildren(); <BR>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;bus.size();i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp; bus a=new bus();<BR>&nbsp;&nbsp;&nbsp;&nbsp; Element book=(Element)bus.get(i); <BR>&nbsp;&nbsp;&nbsp;&nbsp; String id=book.getChild("id").getText();<BR>&nbsp;&nbsp;&nbsp;&nbsp; a.setId(Long.parseLong(id));<BR>&nbsp;&nbsp;&nbsp;&nbsp; a.setName(book.getChild("name").getText());<BR>&nbsp;&nbsp;&nbsp;&nbsp; a.setAuthor(book.getChild("author").getText());<BR>&nbsp;&nbsp;&nbsp;&nbsp; String price=book.getChild("price").getText();<BR>&nbsp;&nbsp;&nbsp;&nbsp; a.setPrice(Double.valueOf(price));<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; String datePrice=book.getChild("publishDate").getText();<BR>&nbsp;&nbsp;&nbsp;&nbsp; Date start_date=sdf.parse(datePrice);<BR>&nbsp;&nbsp;&nbsp;&nbsp; //System.out.print(sdf.format(start_date));<BR>&nbsp;&nbsp;&nbsp;&nbsp; a.setPublishDate(start_date);<BR>&nbsp;&nbsp;&nbsp;&nbsp; list.add(a);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; return list.iterator();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception e){ <BR>&nbsp;&nbsp;&nbsp; System.out.print(e.getMessage());<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<BR>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp;&nbsp; public void DelXML(String xmlfile,Long i){<BR>&nbsp;&nbsp;&nbsp; &nbsp;try{<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <BR>&nbsp;&nbsp; SAXBuilder sb = new SAXBuilder(false);<BR>&nbsp;&nbsp; Document doc=sb.build(xmlfile);<BR>&nbsp;&nbsp; Element root=doc.getRootElement();<BR>&nbsp;&nbsp; List bus = root.getChildren(); <BR>&nbsp;<BR>&nbsp;&nbsp; bus.remove(1);</P>
<P>&nbsp;&nbsp; <BR>&nbsp;&nbsp; BufferedOutputStream out =new BufferedOutputStream(new FileOutputStream(xmlfile)); <BR>&nbsp;&nbsp; //XMLOutputter outputer = new XMLOutputter();</P>
<P><BR>&nbsp;&nbsp;&nbsp; XMLOutputter outputer =new XMLOutputter(org.jdom.output.Format.getPrettyFormat());<BR>&nbsp;&nbsp; outputer.output(root, out);<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; System.out.print("ok");<BR>&nbsp;&nbsp; System.out.print("\n");<BR>&nbsp;&nbsp;&nbsp; &nbsp;}catch(Exception e){<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;System.out.print(e.getMessage());<BR>&nbsp;&nbsp;&nbsp; &nbsp;}<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void addXML(String xmlfile,bus b){<BR>&nbsp;&nbsp;try{<BR>&nbsp;&nbsp;&nbsp; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");<BR>&nbsp;&nbsp;&nbsp; SAXBuilder sb = new SAXBuilder(false);<BR>&nbsp;&nbsp;&nbsp; Document doc=sb.build(xmlfile);<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Element root=doc.getRootElement();<BR>&nbsp;&nbsp;&nbsp; Element book=new Element("book");<BR>&nbsp;&nbsp;&nbsp; book.setAttribute("id","6");<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Element id=new Element("id");<BR>&nbsp;&nbsp;&nbsp; Element name=new Element("name");<BR>&nbsp;&nbsp;&nbsp; Element author=new Element("author");<BR>&nbsp;&nbsp;&nbsp; Element price=new Element("price");<BR>&nbsp;&nbsp;&nbsp; Element publishDate=new Element("publishDate");<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; id.setText(String.valueOf(b.getId()));<BR>&nbsp;&nbsp;&nbsp; name.setText(b.getName());<BR>&nbsp;&nbsp;&nbsp; author.setText(b.getAuthor());<BR>&nbsp;&nbsp;&nbsp; price.setText(String.valueOf(b.getPrice()));<BR>&nbsp;&nbsp;&nbsp; publishDate.setText(sdf.format(b.getPublishDate()));<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; book.addContent(id);<BR>&nbsp;&nbsp;&nbsp; book.addContent(name);<BR>&nbsp;&nbsp;&nbsp; book.addContent(author);<BR>&nbsp;&nbsp;&nbsp; book.addContent(price);<BR>&nbsp;&nbsp;&nbsp; book.addContent(publishDate);<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; root.addContent(book);<BR>&nbsp;&nbsp;&nbsp; BufferedOutputStream out =new BufferedOutputStream(new FileOutputStream(xmlfile)); <BR>&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter outputer =new XMLOutputter(org.jdom.output.Format.getPrettyFormat());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputer.output(root, out);<BR>&nbsp;&nbsp;}catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;System.out.print(e.getMessage());<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void findXML(String xmlfile,Long id){<BR>&nbsp;&nbsp;try{</P>
<P>&nbsp;&nbsp;&nbsp; SAXBuilder sb = new SAXBuilder(false);<BR>&nbsp;&nbsp;&nbsp; Document doc=sb.build(xmlfile);<BR>&nbsp;&nbsp;&nbsp; Element root=doc.getRootElement();<BR>&nbsp;&nbsp;&nbsp; List books=root.getChildren();<BR>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;books.size();i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp; Element book=(Element)books.get(i);<BR>&nbsp;&nbsp;&nbsp;&nbsp; Long idstr=Long.parseLong(book.getChild("id").getText());<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(idstr==id){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; book.getChild("name").setText("fff");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print("ok");<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; BufferedOutputStream out =new BufferedOutputStream(new FileOutputStream(xmlfile)); <BR>&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter outputer =new XMLOutputter(org.jdom.output.Format.getPrettyFormat());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputer.output(root, out);<BR>&nbsp;&nbsp;}catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;System.out.print(e.getMessage());<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;public static void main(String[] args) {<BR>&nbsp;&nbsp; Date today=new Date();<BR>&nbsp;&nbsp; jdom jdoms=jdom.getInstance().getInstance();<BR>&nbsp;&nbsp; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");<BR>&nbsp;&nbsp; String filepath=jdoms.getRealPath(xmlfile);<BR>&nbsp;&nbsp; jdoms.findXML(filepath,2l);<BR>&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;Iterator it=jdoms.LoadXML(filepath);<BR>&nbsp;&nbsp;&nbsp;&nbsp; while(it.hasNext()){<BR>&nbsp;&nbsp;&nbsp; bus f=(bus)it.next();<BR>&nbsp;&nbsp;&nbsp; System.out.print(f.getId()+" ");<BR>&nbsp;&nbsp;&nbsp; System.out.print(f.getName()+" ");<BR>&nbsp;&nbsp;&nbsp; System.out.print(f.getAuthor()+" ");<BR>&nbsp;&nbsp;&nbsp; System.out.print(f.getPrice()+" ");<BR>&nbsp;&nbsp;&nbsp; System.out.print(sdf.format(f.getPublishDate())+"\n");<BR>&nbsp;&nbsp;&nbsp; System.out.print("\n");<BR>&nbsp;&nbsp; }<BR>&nbsp;}<BR>&nbsp;</P>
<P>}</P>
<P>&nbsp;</P>
<P>&lt;?xml version="1.0" encoding="GBK"?&gt;&nbsp;&nbsp;&nbsp; <BR>&lt;bookList&gt;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&lt;book id="3"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; &lt;id&gt;1&lt;/id&gt; <BR>&nbsp; &lt;name&gt;Java编程入门&lt;/name&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; &lt;author&gt;张三&lt;/author&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; &lt;publishDate&gt;2006-5-22&lt;/publishDate&gt; <BR>&nbsp; &lt;price&gt;35.0&lt;/price&gt;&nbsp; <BR>&lt;/book&gt;&nbsp;&nbsp;&nbsp; <BR>&lt;book id="4"&gt;&nbsp; <BR>&nbsp; &lt;id&gt;2&lt;/id&gt;&nbsp;&nbsp;&nbsp; <BR>&nbsp; &lt;name&gt;XML在Java中的应用&lt;/name&gt;&nbsp;&nbsp; <BR>&nbsp; &lt;author&gt;李四&lt;/author&gt;&nbsp;&nbsp;&nbsp; <BR>&nbsp; &lt;publishDate&gt;2006-5-24&lt;/publishDate&gt;&nbsp;&nbsp;&nbsp; <BR>&nbsp; &lt;price&gt;92.0&lt;/price&gt; <BR>&lt;/book&gt; <BR>&lt;book id="5"&gt;&nbsp; <BR>&nbsp; &lt;id&gt;3&lt;/id&gt;&nbsp;&nbsp;&nbsp; <BR>&nbsp; &lt;name&gt;我的xml&lt;/name&gt;&nbsp;&nbsp; <BR>&nbsp; &lt;author&gt;暨景书&lt;/author&gt;&nbsp;&nbsp;&nbsp; <BR>&nbsp; &lt;publishDate&gt;2006-5-24&lt;/publishDate&gt;&nbsp;&nbsp;&nbsp; <BR>&nbsp; &lt;price&gt;92.0&lt;/price&gt; <BR>&lt;/book&gt; <BR>&lt;/bookList&gt;&nbsp;&nbsp; </P>
<P>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[日期js]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=13567</link>
<author>jjs_love</author>
<pubDate>2006/4/18 13:10:08</pubDate>
<description><![CDATA[
<P>Calendar.js</P>
<P>function Calendar(formatString) {<BR>&nbsp;var today = new Date();<BR>&nbsp;<BR>&nbsp;this.currYear = today.getYear();<BR>&nbsp;this.currMonth = today.getMonth();<BR>&nbsp;this.currDate = today.getDate();<BR>&nbsp;this.currHour = today.getHours();<BR>&nbsp;this.currMinute = today.getMinutes();<BR>&nbsp;this.currSecond = today.getSeconds();<BR>&nbsp;this.currMeridiem = (this.currHour &gt;= 12 ? 'PM' : 'AM');<BR>&nbsp;var property = null;</P>
<P>&nbsp;var self = document.createElement('div');<BR>&nbsp;self.className = "calendarBox";<BR>&nbsp;self.eventHandler = this;<BR>&nbsp;self.onmouseover = function() {<BR>&nbsp;&nbsp;this.eventHandler.calendar_MouseEnter(this, event);<BR>&nbsp;};<BR>&nbsp;self.onmouseout = function() {<BR>&nbsp;&nbsp;this.eventHandler.calendar_MouseOut(this, event);<BR>&nbsp;};<BR>&nbsp;document.body.appendChild(self);<BR>&nbsp;<BR>&nbsp;this.width = 0;<BR>&nbsp;this.height = 0;<BR>&nbsp;this.top = 0;<BR>&nbsp;this.left = 0;<BR>&nbsp;this.offsetWidth = self.offsetWidth;<BR>&nbsp;this.offsetHeight = self.offsetHeight;<BR>&nbsp;<BR>&nbsp;Calendar.prototype.getHead = function(year, month) {<BR>&nbsp;&nbsp;var calendarHead = document.createElement('table');<BR>&nbsp;&nbsp;calendarHead.width = "100%";<BR>&nbsp;&nbsp;calendarHead.className = "head";<BR>&nbsp;&nbsp;var tbody = document.createElement('tbody');<BR>&nbsp;&nbsp;var ctrlBar = document.createElement('tr');<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var btnPrevYear = document.createElement('td');<BR>&nbsp;&nbsp;btnPrevYear.innerHTML = "7";<BR>&nbsp;&nbsp;btnPrevYear.className = "ctrlButton";<BR>&nbsp;&nbsp;btnPrevYear.align = "center";<BR>&nbsp;&nbsp;btnPrevYear.valign = "middle";<BR>&nbsp;&nbsp;btnPrevYear.eventHandler = this;<BR>&nbsp;&nbsp;btnPrevYear.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.btnPrevYear_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnPrevYear.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnPrevYear.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var btnPrevMonth = document.createElement('td');<BR>&nbsp;&nbsp;btnPrevMonth.className = "ctrlButton";<BR>&nbsp;&nbsp;btnPrevMonth.innerHTML = "3";<BR>&nbsp;&nbsp;btnPrevMonth.align = "center";<BR>&nbsp;&nbsp;btnPrevMonth.valign = "middle";<BR>&nbsp;&nbsp;btnPrevMonth.eventHandler = this;<BR>&nbsp;&nbsp;btnPrevMonth.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.btnPrevYear_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnPrevMonth.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnPrevMonth.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var btnPrevMonth = document.createElement('td');<BR>&nbsp;&nbsp;btnPrevMonth.className = "ctrlButton";<BR>&nbsp;&nbsp;btnPrevMonth.innerHTML = "3";<BR>&nbsp;&nbsp;btnPrevMonth.align = "center";<BR>&nbsp;&nbsp;btnPrevMonth.valign = "middle";<BR>&nbsp;&nbsp;btnPrevMonth.eventHandler = this;<BR>&nbsp;&nbsp;btnPrevMonth.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.btnPrevMonth_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnPrevMonth.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnPrevMonth.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var btnNextMonth = document.createElement('td');<BR>&nbsp;&nbsp;btnNextMonth.className = "ctrlButton";<BR>&nbsp;&nbsp;btnNextMonth.innerHTML = "4";<BR>&nbsp;&nbsp;btnNextMonth.align = "center";<BR>&nbsp;&nbsp;btnNextMonth.valign = "middle";<BR>&nbsp;&nbsp;btnNextMonth.eventHandler = this;<BR>&nbsp;&nbsp;btnNextMonth.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.btnNextMonth_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnNextMonth.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnNextMonth.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var btnNextYear = document.createElement('td');<BR>&nbsp;&nbsp;btnNextYear.className = "ctrlButton";<BR>&nbsp;&nbsp;btnNextYear.innerHTML = "8";<BR>&nbsp;&nbsp;btnNextYear.align = "center";<BR>&nbsp;&nbsp;btnNextYear.valign = "middle";<BR>&nbsp;&nbsp;btnNextYear.eventHandler = this;<BR>&nbsp;&nbsp;btnNextYear.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.btnNextYear_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnNextYear.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;btnNextYear.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.ctrlButton_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var title = document.createElement('td');<BR>&nbsp;&nbsp;title.className = "title";<BR>&nbsp;&nbsp;title.align = "center";<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var sltYear = document.createElement('span');<BR>&nbsp;&nbsp;sltYear.className = 'select';<BR>&nbsp;&nbsp;sltYear.innerHTML = year;<BR>&nbsp;&nbsp;sltYear.eventHandler = this;<BR>&nbsp;&nbsp;sltYear.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.sltMoreYear_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltYear.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltYear.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var sltMonth = document.createElement('span');<BR>&nbsp;&nbsp;sltMonth.className = 'select';<BR>&nbsp;&nbsp;sltMonth.innerHTML = subZero((month + 1), 2);<BR>&nbsp;&nbsp;sltMonth.eventHandler = this;<BR>&nbsp;&nbsp;sltMonth.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.sltMoreMonth_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltMonth.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltMonth.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var spnBlank = document.createElement('span');<BR>&nbsp;&nbsp;spnBlank.innerHTML = '&amp;nbsp;';<BR>&nbsp;&nbsp;var spnYear = document.createElement('span');<BR>&nbsp;&nbsp;spnYear.innerHTML = '&amp;nbsp;&Auml;ê&amp;nbsp;';<BR>&nbsp;&nbsp;var spnMonth = document.createElement('span');<BR>&nbsp;&nbsp;spnMonth.innerHTML = '&amp;nbsp;&Ocirc;&Acirc;&amp;nbsp;';<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;title.appendChild(spnBlank);<BR>&nbsp;&nbsp;title.appendChild(sltYear);<BR>&nbsp;&nbsp;title.appendChild(spnYear);<BR>&nbsp;&nbsp;title.appendChild(sltMonth);<BR>&nbsp;&nbsp;title.appendChild(spnMonth);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;ctrlBar.appendChild(btnPrevYear);<BR>&nbsp;&nbsp;ctrlBar.appendChild(btnPrevMonth);&nbsp;&nbsp;<BR>&nbsp;&nbsp;ctrlBar.appendChild(title);<BR>&nbsp;&nbsp;ctrlBar.appendChild(btnNextMonth);<BR>&nbsp;&nbsp;ctrlBar.appendChild(btnNextYear);&nbsp;&nbsp;<BR>&nbsp;&nbsp;tbody.appendChild(ctrlBar);<BR>&nbsp;&nbsp;calendarHead.appendChild(tbody);<BR>&nbsp;&nbsp;return calendarHead;<BR>&nbsp;};</P>
<P>&nbsp;Calendar.prototype.getBody = function(year, month) {<BR>&nbsp;&nbsp;var calendarBody = document.createElement('table');<BR>&nbsp;&nbsp;calendarBody.width = "100%";<BR>&nbsp;&nbsp;calendarBody.className = "body";<BR>&nbsp;&nbsp;var tbody = document.createElement('tbody');<BR>&nbsp;&nbsp;tbody.appendChild(getWeekNames());<BR>&nbsp;&nbsp;if (property == null) {<BR>&nbsp;&nbsp;&nbsp;property = new Array(monthDays(year, month));<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var day = 1;<BR>&nbsp;&nbsp;for (var rowLoop=0; rowLoop&lt;6; rowLoop++) {<BR>&nbsp;&nbsp;&nbsp;var row = document.createElement('tr');<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;for (var colLoop=0; colLoop&lt;7; colLoop++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var col = document.createElement('td');<BR>&nbsp;&nbsp;&nbsp;&nbsp;col.align = "center";<BR>&nbsp;&nbsp;&nbsp;&nbsp;col.valign = "meddle";<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (rowLoop == 0 &amp;&amp; colLoop &lt; firstDayOfWeek(year, month)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.innerHTML = '&amp;nbsp;';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.className = "none";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;} else if (day &lt;= monthDays(year, month)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (property[(day - 1)] != undefined &amp;&amp; property[(day - 1)] != "") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var properties = property[(day - 1)].split("-");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (properties[1] == properties[2] || properties[1] &gt;= 3) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (properties[1] == 4) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.className = "examined";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if (properties[1] == 1) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.className = "planed";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if (properties[1] == 2) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.className = "summarized";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.property = property[(day - 1)];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if (year == today.getYear() &amp;&amp; month == today.getMonth() &amp;&amp; day == today.getDate()) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.className = "today";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if (year == this.currYear &amp;&amp; month == this.currMonth &amp;&amp; day == this.currDate) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.className = "select";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.innerHTML = day++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (colLoop == 0 || colLoop == 6) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.id = "feast";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.eventHandler = this;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.ondblclick = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.eventHandler.tdDay_DblClick(this, event);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.eventHandler.tdDay_Click(this, event);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.innerHTML = '&amp;nbsp;';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.className = "none";<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;row.appendChild(col);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;tbody.appendChild(row);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;function getWeekNames() {<BR>&nbsp;&nbsp;&nbsp;var row = document.createElement('tr');<BR>&nbsp;&nbsp;&nbsp;row.className = "weekName";<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;var colSunday = document.createElement('td');<BR>&nbsp;&nbsp;&nbsp;colSunday.innerHTML = 'Sun';//'&ETH;&Ccedil;&AElig;&Uacute;&Egrave;&Otilde;';<BR>&nbsp;&nbsp;&nbsp;colSunday.id = "feast";<BR>&nbsp;&nbsp;&nbsp;colSunday.align = "center";<BR>&nbsp;&nbsp;&nbsp;var colNonday = document.createElement('td');<BR>&nbsp;&nbsp;&nbsp;colNonday.innerHTML = 'Non';//'&ETH;&Ccedil;&AElig;&Uacute;&Ograve;&raquo;';<BR>&nbsp;&nbsp;&nbsp;colNonday.align = "center";<BR>&nbsp;&nbsp;&nbsp;var colTuesday = document.createElement('td');<BR>&nbsp;&nbsp;&nbsp;colTuesday.innerHTML = 'Tue';//'&ETH;&Ccedil;&AElig;&Uacute;&para;&thorn;';<BR>&nbsp;&nbsp;&nbsp;colTuesday.align = "center";<BR>&nbsp;&nbsp;&nbsp;var colWendnesday = document.createElement('td');<BR>&nbsp;&nbsp;&nbsp;colWendnesday.innerHTML = 'Wen';//'&ETH;&Ccedil;&AElig;&Uacute;&Egrave;&yacute;';<BR>&nbsp;&nbsp;&nbsp;colWendnesday.align = "center";<BR>&nbsp;&nbsp;&nbsp;var colThursday = document.createElement('td');<BR>&nbsp;&nbsp;&nbsp;colThursday.innerHTML = 'Thu';//'&ETH;&Ccedil;&AElig;&Uacute;&Euml;&Auml;';<BR>&nbsp;&nbsp;&nbsp;colThursday.align = "center";<BR>&nbsp;&nbsp;&nbsp;var colFriday = document.createElement('td');<BR>&nbsp;&nbsp;&nbsp;colFriday.innerHTML = 'Fri';//'&ETH;&Ccedil;&AElig;&Uacute;&Icirc;&aring;';<BR>&nbsp;&nbsp;&nbsp;colFriday.align = "center";<BR>&nbsp;&nbsp;&nbsp;var colSaturday = document.createElement('td');<BR>&nbsp;&nbsp;&nbsp;colSaturday.innerHTML = 'Sat';//'&ETH;&Ccedil;&AElig;&Uacute;&Aacute;ù';<BR>&nbsp;&nbsp;&nbsp;colSaturday.id = "feast";<BR>&nbsp;&nbsp;&nbsp;colSaturday.align = "center";<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;row.appendChild(colSunday);<BR>&nbsp;&nbsp;&nbsp;row.appendChild(colNonday);<BR>&nbsp;&nbsp;&nbsp;row.appendChild(colTuesday);<BR>&nbsp;&nbsp;&nbsp;row.appendChild(colWendnesday);<BR>&nbsp;&nbsp;&nbsp;row.appendChild(colThursday);<BR>&nbsp;&nbsp;&nbsp;row.appendChild(colFriday);<BR>&nbsp;&nbsp;&nbsp;row.appendChild(colSaturday);<BR>&nbsp;&nbsp;&nbsp;return row;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;calendarBody.appendChild(tbody);<BR>&nbsp;&nbsp;return calendarBody;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.getFoot = function(hour, minute, second) {<BR>&nbsp;&nbsp;var tabFoot = document.createElement('table');<BR>&nbsp;&nbsp;tabFoot.width = "100%";<BR>&nbsp;&nbsp;var tbody = document.createElement('tbody');<BR>&nbsp;&nbsp;var tr = document.createElement('tr');<BR>&nbsp;&nbsp;var td = document.createElement('td');<BR>&nbsp;&nbsp;td.align = "right";</P>
<P>&nbsp;&nbsp;var sltMeridiem = document.createElement('span');<BR>&nbsp;&nbsp;sltMeridiem.className = 'select';<BR>&nbsp;&nbsp;sltMeridiem.innerHTML = this.currMeridiem;<BR>&nbsp;&nbsp;sltMeridiem.eventHandler = this;<BR>&nbsp;&nbsp;sltMeridiem.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.btnMeridiem_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltMeridiem.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltMeridiem.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var sltHour = document.createElement('span');<BR>&nbsp;&nbsp;sltHour.className = 'select';&nbsp;<BR>&nbsp;&nbsp;if (formatString.indexOf("HH") &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;sltHour.innerHTML = subZero(hour, 2);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;} else if (formatString.indexOf("hh") &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;sltHour.innerHTML = subZero((hour == 0 || hour == 12 ? 12 : hour % 12), 2);<BR>&nbsp;&nbsp;}&nbsp;&nbsp;<BR>&nbsp;&nbsp;sltHour.eventHandler = this;<BR>&nbsp;&nbsp;sltHour.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.btnHour_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltHour.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltHour.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var sltMinute = document.createElement('span');<BR>&nbsp;&nbsp;sltMinute.className = 'select';<BR>&nbsp;&nbsp;sltMinute.innerHTML = subZero(minute, 2);<BR>&nbsp;&nbsp;sltMinute.eventHandler = this;<BR>&nbsp;&nbsp;sltMinute.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.btnMinute_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltMinute.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltMinute.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var sltSecond = document.createElement('span');<BR>&nbsp;&nbsp;sltSecond.className = 'select';<BR>&nbsp;&nbsp;sltSecond.innerHTML = subZero(second, 2);<BR>&nbsp;&nbsp;sltSecond.eventHandler = this;<BR>&nbsp;&nbsp;sltSecond.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.btnSecond_Click(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltSecond.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOver(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;sltSecond.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;this.eventHandler.select_RollOut(this, event);<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var spnBlank = document.createElement('span');<BR>&nbsp;&nbsp;spnBlank.innerHTML = '&amp;nbsp;&amp;nbsp;';<BR>&nbsp;&nbsp;var spnColon = document.createElement('span');<BR>&nbsp;&nbsp;spnColon.innerHTML = '&lt;b&gt;&amp;nbsp;:&amp;nbsp;&lt;/b&gt;';<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if (formatString.indexOf("am") &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;td.appendChild(sltMeridiem);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if (formatString.indexOf("am") &gt; 0<BR>&nbsp;&nbsp;&nbsp;&amp;&amp; ((formatString.indexOf("mi") &gt; 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;|| (((formatString.indexOf("hh")) &gt; 0 || (formatString.indexOf("HH") &gt; 0))<BR>&nbsp;&nbsp;&nbsp;&nbsp;|| (formatString.indexOf("ss") &gt; 0)))) {<BR>&nbsp;&nbsp;&nbsp;td.appendChild(spnBlank);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if ((formatString.indexOf("hh")) &gt; 0 || (formatString.indexOf("HH") &gt; 0)) {<BR>&nbsp;&nbsp;&nbsp;td.appendChild(sltHour);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if ((formatString.indexOf("mi") &gt; 0)<BR>&nbsp;&nbsp;&nbsp;&amp;&amp; (((formatString.indexOf("hh")) &gt; 0 || (formatString.indexOf("HH"))))) {<BR>&nbsp;&nbsp;&nbsp;td.appendChild(spnColon);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if (formatString.indexOf("mi") &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;td.appendChild(sltMinute);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if ((formatString.indexOf("ss") &gt; 0)<BR>&nbsp;&nbsp;&nbsp;&amp;&amp; (((formatString.indexOf("hh")) &gt; 0 || (formatString.indexOf("HH"))))) {<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if ((formatString.indexOf("mi") &gt; 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; (((formatString.indexOf("hh")) &gt; 0 || (formatString.indexOf("HH"))))) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;td.appendChild(spnColon.cloneNode(true));<BR>&nbsp;&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;td.appendChild(spnColon);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if (formatString.indexOf("ss") &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;td.appendChild(sltSecond);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;tr.appendChild(td);<BR>&nbsp;&nbsp;tbody.appendChild(tr);<BR>&nbsp;&nbsp;tabFoot.appendChild(tbody);<BR>&nbsp;&nbsp;return tabFoot;<BR>&nbsp;};<BR>&nbsp;&nbsp;<BR>&nbsp;Calendar.prototype.btnPrevYear_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.previousYear();<BR>&nbsp;&nbsp;this.onCalendar_Update();<BR>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.btnPrevMonth_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.previousMonth();<BR>&nbsp;&nbsp;this.onCalendar_Update();<BR>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.btnNextMonth_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.nextMonth();<BR>&nbsp;&nbsp;this.onCalendar_Update();<BR>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.btnNextYear_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.nextYear();<BR>&nbsp;&nbsp;this.onCalendar_Update();<BR>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.optSelectYear_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.setYear(sender.innerHTML);<BR>&nbsp;&nbsp;this.onCalendar_Update();<BR>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.optSelectMonth_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.setMonth((Number(sender.innerHTML) - 1));<BR>&nbsp;&nbsp;this.onCalendar_Update();<BR>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.sltMoreYear_Click = function (sender, event) {<BR>&nbsp;&nbsp;var height = self.childNodes[1].offsetHeight;<BR>&nbsp;&nbsp;this.showMore(1900, 2100, height, Number(sender.innerHTML), "selectYear");<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.sltMoreMonth_Click = function (sender, event) {<BR>&nbsp;&nbsp;var height = self.childNodes[1].offsetHeight;<BR>&nbsp;&nbsp;this.showMore(1, 12, height, Number(sender.innerHTML), "selectMonth");<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.tdDay_DblClick = function (sender, event) {<BR>&nbsp;&nbsp;this.setDate(Number(sender.innerHTML));<BR>&nbsp;&nbsp;this.calendar_DblClick(sender, event);<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.tdDay_Click = function (sender, event) {<BR>&nbsp;&nbsp;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.btnMeridiem_Click = function (sender, event) {<BR>&nbsp;&nbsp;sender.innerHTML = (sender.innerHTML == 'AM' ? 'PM' : 'AM');<BR>&nbsp;&nbsp;this.currMeridiem = sender.innerHTML;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.optSelectHour_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.setHour(Number(sender.innerHTML));<BR>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.optSelectMinute_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.setMinute(Number(sender.innerHTML));<BR>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.optSelectSecond_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.setSecond(Number(sender.innerHTML));<BR>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.optSelect_OnMouseOver = function (sender, event) {<BR>&nbsp;&nbsp;sender.originClassName = sender.className;<BR>&nbsp;&nbsp;sender.className = "onMouseOver";<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.optSelect_OnMouseOut = function (sender, event) {<BR>&nbsp;&nbsp;sender.className = sender.originClassName;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.btnHour_Click = function (sender, event) {<BR>&nbsp;&nbsp;if (formatString.indexOf("HH") &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;this.showMore(0, 23, 70, Number(sender.innerHTML), "selectHour");<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;} else if (formatString.indexOf("hh") &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;this.showMore(1, 12, 70, Number(sender.innerHTML), "selectHour");<BR>&nbsp;&nbsp;}<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.btnMinute_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.showMore(0, 59, 70, Number(sender.innerHTML), "selectMinute");<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.btnSecond_Click = function (sender, event) {<BR>&nbsp;&nbsp;this.showMore(0, 59, 70, Number(sender.innerHTML), "selectSecond");<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;Calendar.prototype.select_RollOver = function (sender, event) {<BR>&nbsp;&nbsp;sender.className = "selectRollOver";<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.select_RollOut = function (sender, event) {<BR>&nbsp;&nbsp;sender.className = "selectRollOut";<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.ctrlButton_RollOver = function (sender, event) {<BR>&nbsp;&nbsp;sender.className = "ctrlButtonRollOver";<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.ctrlButton_RollOut = function (sender, event) {<BR>&nbsp;&nbsp;sender.className = "ctrlButtonRollOut";<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.calendar_MouseEnter = function (sender, event) {<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.calendar_MouseOut = function (sender, event) {<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.calendar_DblClick = function (sender, event) {<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;Calendar.prototype.getYear = function() {<BR>&nbsp;&nbsp;return this.currYear;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;Calendar.prototype.getMonth = function() {<BR>&nbsp;&nbsp;return this.currMonth;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;Calendar.prototype.getDate = function() {<BR>&nbsp;&nbsp;return this.currDate;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;Calendar.prototype.setProperty = function(pro) {<BR>&nbsp;&nbsp;property = pro.split(", ");<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;Calendar.prototype.onCalendar_Update = function() {<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;this.showMore = function(starNum, endNum, height, selectedValue, method) {<BR>&nbsp;&nbsp;var object = window.event.srcElement;<BR>&nbsp;&nbsp;var selectedIndex = selectedValue - starNum;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if(object.selectBox) {<BR>&nbsp;&nbsp;&nbsp;object.selectBox.selectedIndex = selectedIndex;<BR>&nbsp;&nbsp;&nbsp;object.selectBox.show(height);<BR>&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var selectBox = window.document.createElement("div");<BR>&nbsp;&nbsp;selectBox.className = "selectBox";<BR>&nbsp;&nbsp;selectBox.style.top = window.event.clientY - window.event.offsetY + window.event.srcElement.offsetHeight<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - this.top;<BR>&nbsp;&nbsp;selectBox.style.left = window.event.clientX - object.offsetWidth - this.left;<BR>&nbsp;&nbsp;selectBox.show&nbsp; = showBox;<BR>&nbsp;&nbsp;selectBox.selectedIndex = selectedIndex;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var table = window.document.createElement("table");<BR>&nbsp;&nbsp;table.border = "0";<BR>&nbsp;&nbsp;table.cellspacing = "0";<BR>&nbsp;&nbsp;table.cellpadding = "0";<BR>&nbsp;&nbsp;table.width = "100%";<BR>&nbsp;&nbsp;var tbody = window.document.createElement("tbody");<BR>&nbsp;&nbsp;for (var loop=starNum; loop&lt;=endNum; loop++) {<BR>&nbsp;&nbsp;&nbsp;var tr = window.document.createElement("tr");<BR>&nbsp;&nbsp;&nbsp;var td = window.document.createElement("td");<BR>&nbsp;&nbsp;&nbsp;td.innerHTML = subZero(loop, 2);<BR>&nbsp;&nbsp;&nbsp;td.align = "center";<BR>&nbsp;&nbsp;&nbsp;td.className = "unselect";<BR>&nbsp;&nbsp;&nbsp;td.eventHandler = this;<BR>&nbsp;&nbsp;&nbsp;if (method == "selectYear") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;td.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.eventHandler.optSelectYear_Click(this, event);<BR>&nbsp;&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;} else if (method == "selectMonth") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;td.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.eventHandler.optSelectMonth_Click(this, event);<BR>&nbsp;&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;} else if (method == "selectHour") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;td.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.eventHandler.optSelectHour_Click(this, event);<BR>&nbsp;&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;} else if (method == "selectMinute") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;td.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.eventHandler.optSelectMinute_Click(this, event);<BR>&nbsp;&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;} else if (method == "selectSecond") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;td.onclick = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.eventHandler.optSelectSecond_Click(this, event);<BR>&nbsp;&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;td.onmouseover = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.eventHandler.optSelect_OnMouseOver(this, event);<BR>&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;td.onmouseout = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.eventHandler.optSelect_OnMouseOut(this, event);<BR>&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;tr.appendChild(td);<BR>&nbsp;&nbsp;&nbsp;tbody.appendChild(tr);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;table.appendChild(tbody);<BR>&nbsp;&nbsp;selectBox.appendChild(table);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;self.appendChild(selectBox);&nbsp;<BR>&nbsp;&nbsp;object.selectBox = selectBox;<BR>&nbsp;&nbsp;object.selectBox.show(height);<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.setFormatString = function(formatString) {<BR>&nbsp;&nbsp;formatString = formatString;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;this.show = function(src) {&nbsp;&nbsp;<BR>&nbsp;&nbsp;self.style.width = this.width;<BR>&nbsp;&nbsp;self.style.height = this.height;<BR>&nbsp;&nbsp;self.style.top = this.top;<BR>&nbsp;&nbsp;self.style.left = this.left;<BR>&nbsp;&nbsp;this.display();<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if (src != undefined) {<BR>&nbsp;&nbsp;&nbsp;this.format(src);<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;this.update();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.update = function() {<BR>&nbsp;&nbsp;while (self.childNodes.length &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;self.removeChild(self.childNodes(0)); <BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;self.appendChild(this.getHead(this.currYear, this.currMonth));<BR>&nbsp;&nbsp;self.appendChild(this.getBody(this.currYear, this.currMonth));<BR>&nbsp;&nbsp;self.appendChild(this.getFoot(this.currHour, this.currMinute, this.currSecond));<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.hide = function() {<BR>&nbsp;&nbsp;self.style.display = "none";<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.display = function() {<BR>&nbsp;&nbsp;self.style.display = "block";<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.nextMonth = function() {<BR>&nbsp;&nbsp;if (this.currMonth == 11) {<BR>&nbsp;&nbsp;&nbsp;this.currMonth = 0;<BR>&nbsp;&nbsp;&nbsp;this.currYear++;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp;this.currMonth++;<BR>&nbsp;&nbsp;}<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.previousMonth = function() {<BR>&nbsp;&nbsp;if (this.currMonth == 0) {<BR>&nbsp;&nbsp;&nbsp;this.currMonth = 11;<BR>&nbsp;&nbsp;&nbsp;this.currYear--;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp;this.currMonth--;<BR>&nbsp;&nbsp;}<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.setMonth = function(month) {<BR>&nbsp;&nbsp;this.currMonth = month;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.nextYear = function() {<BR>&nbsp;&nbsp;this.currYear++;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.previousYear = function() {<BR>&nbsp;&nbsp;this.currYear--;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.setYear = function(year) {<BR>&nbsp;&nbsp;this.currYear = year;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.setDate = function(date) {<BR>&nbsp;&nbsp;this.currDate = date;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.setHour = function(hour) {<BR>&nbsp;&nbsp;this.currHour = hour;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.setMinute = function(minute) {<BR>&nbsp;&nbsp;if (formatString.indexOf("HH") &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;this.currMinute = minute;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;} else if (formatString.indexOf("hh") &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;this.currMinute = this.currMeridiem == 'AM' ? minute : minute + 12;<BR>&nbsp;&nbsp;}<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.setSecond = function(second) {<BR>&nbsp;&nbsp;this.currSecond = second;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.toString = function() {<BR>&nbsp;&nbsp;var returnString = formatString;<BR>&nbsp;&nbsp;returnString = returnString.replace("yyyy", this.currYear);<BR>&nbsp;&nbsp;returnString = returnString.replace("MM", subZero((this.currMonth + 1), 2));<BR>&nbsp;&nbsp;returnString = returnString.replace("dd", subZero(this.currDate, 2));<BR>&nbsp;&nbsp;returnString = returnString.replace("hh", subZero((this.currHour &gt; 12 ? (this.currHour - 12) : this.currHour), 2));<BR>&nbsp;&nbsp;returnString = returnString.replace("HH", subZero(this.currHour, 2));<BR>&nbsp;&nbsp;returnString = returnString.replace("mi", subZero(this.currMinute, 2));<BR>&nbsp;&nbsp;returnString = returnString.replace("ss", subZero(this.currSecond, 2));<BR>&nbsp;&nbsp;returnString = returnString.replace("am", this.currMeridiem);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;return returnString;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;this.format = function(str) {<BR>&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;var beginIndex = formatString.indexOf("yyyy");<BR>&nbsp;&nbsp;&nbsp;if (beginIndex &gt;= 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var year = Number(str.substring(beginIndex, (beginIndex + 4)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (year == 'NaN' || year &lt; 1900 || year &gt; 2100) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new DateFormatException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.currYear = year;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;beginIndex = formatString.indexOf("MM");<BR>&nbsp;&nbsp;&nbsp;if (beginIndex &gt;= 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var month = Number(str.substring(beginIndex, (beginIndex + 2))) - 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (month == 'NaN' || month &lt; 0 || month &gt; 11) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new DateFormatException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.currMonth = month;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;beginIndex = formatString.indexOf("dd");<BR>&nbsp;&nbsp;&nbsp;if (beginIndex &gt;= 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var date = Number(str.substring(beginIndex, (beginIndex + 2)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (date == 'NaN' || date &lt; 1 || date &gt; monthDays(this.currYear, this.currMonth)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new DateFormatException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.currDate = date;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;beginIndex = formatString.indexOf("am");<BR>&nbsp;&nbsp;&nbsp;if (beginIndex &gt;= 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var meridiem = str.substring(beginIndex, (beginIndex + 2));<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (meridiem != "AM" &amp;&amp; meridiem != "PM") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new DateFormatException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.currMeridiem = meridiem;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;beginIndex = formatString.indexOf("HH");<BR>&nbsp;&nbsp;&nbsp;if (beginIndex &gt;= 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var hour = Number(str.substring(beginIndex, (beginIndex + 2)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (hour == 'NaN' || hour &lt; 0 || hour &gt; 23) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new DateFormatException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.currHour = hour;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;beginIndex = formatString.indexOf("hh");<BR>&nbsp;&nbsp;&nbsp;if (beginIndex &gt;= 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var hour = Number(str.substring(beginIndex, (beginIndex + 2)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (hour == 'NaN' || hour &lt; 0 || hour &gt; 12) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new DateFormatException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.currHour = this.currMeridiem == "AM" ? hour : hour + 12;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;beginIndex = formatString.indexOf("mi");<BR>&nbsp;&nbsp;&nbsp;if (beginIndex &gt;= 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var minute = Number(str.substring(beginIndex, (beginIndex + 2)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (minute == 'NaN' || minute &lt; 0 || minute &gt; 59) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new DateFormatException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.currMinute = minute;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;beginIndex = formatString.indexOf("ss");<BR>&nbsp;&nbsp;&nbsp;if (beginIndex &gt;= 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var second = Number(str.substring(beginIndex, (beginIndex + 2)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (second == 'NaN' || second &lt; 0 || second &gt; 59) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new DateFormatException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this.currSecond = second;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;} catch (dfe) {<BR>&nbsp;&nbsp;&nbsp;this.currYear = today.getYear();<BR>&nbsp;&nbsp;&nbsp;this.currMonth = today.getMonth();<BR>&nbsp;&nbsp;&nbsp;this.currDate = today.getDate();<BR>&nbsp;&nbsp;&nbsp;this.currHour = today.getHours();<BR>&nbsp;&nbsp;&nbsp;this.currMinute = today.getMinutes();<BR>&nbsp;&nbsp;&nbsp;this.currSecond = today.getSeconds();<BR>&nbsp;&nbsp;&nbsp;this.currMeridiem = (this.currHour &gt;= 12 ? 'PM' : 'AM');<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;function monthDays(year, month) {<BR>&nbsp;&nbsp;var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if (month == 1) {<BR>&nbsp;&nbsp;&nbsp;return (((year % 4 == 0) &amp;&amp; (year % 100 != 0) || (year % 400 == 0))? 29: 28);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;return days[month];<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;function firstDayOfWeek(year, month) {<BR>&nbsp;&nbsp;return ((new Date(year, month, 1)).getDay());<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;function showBox(iHeight) {<BR>&nbsp;&nbsp;var box = this;<BR>&nbsp;&nbsp;box.style.height = 1;<BR>&nbsp;&nbsp;box.style.display = "block";<BR>&nbsp;&nbsp;window.clearInterval(box.timeHandle);<BR>&nbsp;&nbsp;box.timeHandle = window.setInterval(interValHandle, 1);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var s = 0;<BR>&nbsp;&nbsp;var t = 1;<BR>&nbsp;&nbsp;function interValHandle() {<BR>&nbsp;&nbsp;&nbsp;box.scrollTop = 1000000;<BR>&nbsp;&nbsp;&nbsp;s = s + t * t;<BR>&nbsp;&nbsp;&nbsp;t += 0.5;<BR>&nbsp;&nbsp;&nbsp;box.style.height = parseInt(box.style.height) + Math.floor(s);<BR>&nbsp;&nbsp;&nbsp;box.style.width = (iHeight != 70 ? 50 : 35) / iHeight * box.offsetHeight;<BR>&nbsp;&nbsp;&nbsp;if( box.offsetHeight &gt; iHeight ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;window.clearInterval(box.timeHandle);<BR>&nbsp;&nbsp;&nbsp;&nbsp;box.style.height = iHeight;<BR>&nbsp;&nbsp;&nbsp;&nbsp;var tbody = box.childNodes[0].childNodes[0]<BR>&nbsp;&nbsp;&nbsp;&nbsp;box.scrollTop = (tbody.childNodes[0].childNodes[0].offsetHeight + 2) * box.selectedIndex;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tbody.childNodes[box.selectedIndex].childNodes[0].className = "selected";<BR>&nbsp;&nbsp;&nbsp;&nbsp;window.document.attachEvent("onclick", box.hide = function() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; box.style.display = "none";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.document.detachEvent("onclick", box.hide);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;function subZero(str, digit) {<BR>&nbsp;&nbsp;str = str.toString();<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var loop=str.length; loop&lt;digit; loop++) {<BR>&nbsp;&nbsp;&nbsp;str = '0' + str;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;return str;<BR>&nbsp;};<BR>}</P>
<P>function getDateString(formIndex, targetName, type) {<BR>&nbsp;var targetForm = document.forms[formIndex];<BR>&nbsp;var target = targetForm[targetName];<BR>&nbsp;<BR>&nbsp;if (target.calendar == null) {&nbsp;<BR>&nbsp;&nbsp;if (type == "long") {<BR>&nbsp;&nbsp;&nbsp;target.calendar = new Calendar("yyyy-MM-dd HH:mi");<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;} else if (type == "short") {<BR>&nbsp;&nbsp;&nbsp;target.calendar = new Calendar("yyyy-MM-dd");<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;target.calendar.width = 250;<BR>&nbsp;&nbsp;target.calendar.height = 150;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;if (type == "long") {<BR>&nbsp;&nbsp;target.calendar.setFormatString("yyyy-MM-dd HH:mi");<BR>&nbsp;&nbsp;<BR>&nbsp;} else if (type == "short") {<BR>&nbsp;&nbsp;target.calendar.setFormatString("yyyy-MM-dd");<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;target.calendar.left = window.event.clientX - target.calendar.offsetWidth &gt; 600<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ? 600 : window.event.clientX - target.calendar.offsetWidth;<BR>&nbsp;target.calendar.top = window.event.clientY - window.event.offsetY + window.event.srcElement.offsetHeight<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- target.offsetHeight;<BR>&nbsp;target.calendar.show(target.value);<BR>&nbsp;<BR>&nbsp;target.calendar.calendar_DblClick = function () {<BR>&nbsp;&nbsp;target.value = target.calendar.toString();<BR>&nbsp;&nbsp;target.calendar.hide();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;target.calendar.calendar_MouseEnter = function () {<BR>&nbsp;&nbsp;target.calendar.display();<BR>&nbsp;};<BR>&nbsp;<BR>&nbsp;target.calendar.calendar_MouseOut = function () {<BR>&nbsp;&nbsp;target.calendar.hide();<BR>&nbsp;};<BR>}</P>
<P>Calendar.css:</P>
<P>.calendarBox {<BR>&nbsp;font-family: "&Euml;&Icirc;&Igrave;&aring;";<BR>&nbsp;font-size: 12.5px;<BR>&nbsp;position: absolute;<BR>&nbsp;z-index: 1;<BR>&nbsp;background: #FFFFFF;<BR>}</P>
<P>.calendarBox td {<BR>&nbsp;font-family: "&Euml;&Icirc;&Igrave;&aring;";<BR>&nbsp;font-size: 12.5px;<BR>&nbsp;background: #FFFFFF;<BR>&nbsp;border: none;<BR>}</P>
<P>.calendarBox .head .ctrlButton {<BR>&nbsp;font-family: Webdings;<BR>&nbsp;cursor: hand;<BR>&nbsp;border: #999999 solid 1px;<BR>&nbsp;color: #333333;<BR>&nbsp;background: #CCCCCC;<BR>&nbsp;width: 10%;<BR>}</P>
<P>.calendarBox .head .ctrlButtonRollOver {<BR>&nbsp;font-family: Webdings;<BR>&nbsp;cursor: hand;<BR>&nbsp;border: #999999 solid 1px;<BR>&nbsp;color: #FF6600;<BR>&nbsp;background: #CCCCCC;<BR>&nbsp;width: 10%;<BR>}</P>
<P>.calendarBox .head .ctrlButtonRollOut {<BR>&nbsp;font-family: Webdings;<BR>&nbsp;cursor: hand;<BR>&nbsp;border: #999999 solid 1px;<BR>&nbsp;color: #333333;<BR>&nbsp;background: #CCCCCC;<BR>&nbsp;width: 10%;<BR>}</P>
<P>.calendarBox .head .title {<BR>&nbsp;background: #FFFFFF;<BR>&nbsp;border: #CCCCCC dashed 1px;<BR>&nbsp;width: 60%;<BR>}</P>
<P>.calendarBox .select {<BR>&nbsp;cursor: hand;<BR>&nbsp;color: #000000;<BR>}</P>
<P>.calendarBox .selectRollOver {<BR>&nbsp;cursor: hand;<BR>&nbsp;color: #006699;<BR>&nbsp;font-weight: bold;<BR>}</P>
<P>.calendarBox .selectRollOut {<BR>&nbsp;cursor: hand;<BR>&nbsp;color: #000000;<BR>}</P>
<P>.calendarBox .selectBox {<BR>&nbsp;z-index: 2;<BR>&nbsp;cursor: hand;<BR>&nbsp;position: absolute;<BR>&nbsp;border: 1px solid #425E87;<BR>&nbsp;overflow-y: scroll;<BR>&nbsp;overflow-x: hidden;<BR>&nbsp;background-color: #FFFFFF;<BR>&nbsp;FILTER: progid:DXImageTransform.Microsoft.Shadow(Color=#999999, offX=10, offY=10, direction=120, Strength=5);<BR>}</P>
<P>.calendarBox .selectBox .unselect {<BR>&nbsp;font-weight: normal;<BR>}</P>
<P>.calendarBox .selectBox .selected {<BR>&nbsp;color: #003366;<BR>&nbsp;font-weight: bold;<BR>}</P>
<P>.calendarBox .selectBox .onMouseOver {<BR>&nbsp;font-weight: bold;<BR>&nbsp;color: #006699;<BR>}</P>
<P>.calendarBox .body td {<BR>&nbsp;cursor: pointer;<BR>&nbsp;border: #CCCCCC dashed 1px;<BR>}</P>
<P>.calendarBox .body #feast {<BR>&nbsp;color: #990000;<BR>}</P>
<P>.calendarBox .body .weekName td {<BR>&nbsp;font-weight: bold;<BR>}</P>
<P>.calendarBox .body .weekName .feast {<BR>&nbsp;color: #990000;<BR>}</P>
<P>调用方法:</P>
<P>&lt;<A href="mailto:%@page">%@page</A> import="java.text.SimpleDateFormat"%&gt;<BR>&lt;<A href="mailto:%@page">%@page</A> import="java.util.Date"%&gt;</P>
<P>&lt;%&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Date today = new Date();<BR>&nbsp;&nbsp;&nbsp;&nbsp; SimpleDateFormat sdfShort = new SimpleDateFormat("yyyy-MM-dd");<BR>&nbsp; String startDate = request.getParameter("startDate");<BR>&nbsp;if (startDate == null || startDate.equals("")) {<BR>&nbsp;&nbsp;Date start = null;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if (today.getMonth() == 0) {<BR>&nbsp;&nbsp;&nbsp;start = new Date((today.getYear() - 1), 11, today.getDate());<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp;start = new Date(today.getYear(), (today.getMonth() - 1), today.getDate());<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;startDate = sdfShort.format(start);<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;String endDate = request.getParameter("endDate");<BR>&nbsp;if (endDate == null || endDate.equals("")) {<BR>&nbsp;&nbsp;endDate = sdfShort.format(today);<BR>&nbsp;}</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;Date start_date=sdfShort.parse(startDate); <BR>&nbsp;&nbsp;Date end_date=sdfShort.parse(endDate);<BR>%&gt;</P>
<P>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[使用JDBC和Hibernate来写入Blob型数据到Oracle中(转载robbin)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=13364</link>
<author>jjs_love</author>
<pubDate>2006/4/11 13:16:36</pubDate>
<description><![CDATA[<SPAN class=postbody>Oracle的Blob字段比较特殊，他比long字段的性能要好很多，可以用来保存例如图片之类的二进制数据。 <BR><BR>写入Blob字段和写入其它类型字段的方式非常不同，因为Blob自身有一个cursor，你必须使用cursor对blob进行操作，因而你在写入Blob之前，必须获得cursor才能进行写入，那么如何获得Blob的cursor呢？ <BR><BR>这需要你先插入一个empty的blob，这将创建一个blob的cursor，然后你再把这个empty的blob的cursor用select查询出来，这样通过两步操作，你就获得了blob的cursor，可以真正的写入blob数据了。 <BR><BR>看下面的JDBC的demo，把oraclejdbc.jar这个二进制文件写入数据库表javatest的content字段(这是一个blob型字段) <BR><BR></SPAN>
<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><SPAN class=genmed><B>java代码:&nbsp;</B></SPAN></TD></TR>
<TR>
<TD class=code>
<DIV style="FONT-FAMILY: 'Courier New', Courier, monospace"><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>import</SPAN> java.<SPAN style="COLOR: #000000">sql</SPAN>.*; <BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>import</SPAN> java.<SPAN style="COLOR: #000000">io</SPAN>.*; <BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>import</SPAN> oracle.<SPAN style="COLOR: #000000">sql</SPAN>.*; <BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>class</SPAN> WriteBlob <SPAN style="COLOR: #000000">{</SPAN> <BR><BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>static</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>void</SPAN> main<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #aaaadd" ?>String</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">]</SPAN> args<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <BR><BR>&nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>try</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>DriverManager</SPAN>.<SPAN style="COLOR: #000000">registerDriver</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>new</SPAN> oracle.<SPAN style="COLOR: #000000">jdbc</SPAN>.<SPAN style="COLOR: #000000">driver</SPAN>.<SPAN style="COLOR: #000000">OracleDriver</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>Connection</SPAN> conn = <SPAN style="COLOR: #aaaadd" ?>DriverManager</SPAN>.<SPAN style="COLOR: #000000">getConnection</SPAN><SPAN style="COLOR: #000000">(</SPAN>"jdbc:oracle:thin:@localhost:<SPAN style="COLOR: #000000" ?>1521</SPAN>:orcl","fankai","fankai"<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; conn.<SPAN style="COLOR: #000000">setAutoCommit</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>false</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; BLOB blob = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>null</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>PreparedStatement</SPAN> pstmt = conn.<SPAN style="COLOR: #000000">prepareStatement</SPAN><SPAN style="COLOR: #000000">(</SPAN>"insert into javatest<SPAN style="COLOR: #000000">(</SPAN>name,content<SPAN style="COLOR: #000000">)</SPAN> values<SPAN style="COLOR: #000000">(</SPAN>?,empty_blob<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">)</SPAN>"<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; pstmt.<SPAN style="COLOR: #000000">setString</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000" ?>1</SPAN>,"fankai"<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; pstmt.<SPAN style="COLOR: #000000">executeUpdate</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; pstmt.<SPAN style="COLOR: #000000">close</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; pstmt = conn.<SPAN style="COLOR: #000000">prepareStatement</SPAN><SPAN style="COLOR: #000000">(</SPAN>"select content from javatest where name= ? <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>for</SPAN> update"<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; pstmt.<SPAN style="COLOR: #000000">setString</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000" ?>1</SPAN>,"fankai"<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>ResultSet</SPAN> rset = pstmt.<SPAN style="COLOR: #000000">executeQuery</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>if</SPAN> <SPAN style="COLOR: #000000">(</SPAN>rset.<SPAN style="COLOR: #000000">next</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">)</SPAN> blob = <SPAN style="COLOR: #000000">(</SPAN>BLOB<SPAN style="COLOR: #000000">)</SPAN> rset.<SPAN style="COLOR: #000000">getBlob</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000" ?>1</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>String</SPAN> fileName = "oraclejdbc.<SPAN style="COLOR: #000000">jar</SPAN>"; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>File</SPAN> f = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>new</SPAN> <SPAN style="COLOR: #aaaadd" ?>File</SPAN><SPAN style="COLOR: #000000">(</SPAN>fileName<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>FileInputStream</SPAN> fin = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>new</SPAN> <SPAN style="COLOR: #aaaadd" ?>FileInputStream</SPAN><SPAN style="COLOR: #000000">(</SPAN>f<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>System</SPAN>.<SPAN style="COLOR: #000000">out</SPAN>.<SPAN style="COLOR: #000000">println</SPAN><SPAN style="COLOR: #000000">(</SPAN>"file size = " + fin.<SPAN style="COLOR: #000000">available</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; pstmt = conn.<SPAN style="COLOR: #000000">prepareStatement</SPAN><SPAN style="COLOR: #000000">(</SPAN>"update javatest set content=? where name=?"<SPAN style="COLOR: #000000">)</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>OutputStream</SPAN> out = blob.<SPAN style="COLOR: #000000">getBinaryOutputStream</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>int</SPAN> count = -<SPAN style="COLOR: #000000" ?>1</SPAN>, total = <SPAN style="COLOR: #000000" ?>0</SPAN>; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>byte</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">]</SPAN> data = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>new</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>byte</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>int</SPAN><SPAN style="COLOR: #000000">)</SPAN>fin.<SPAN style="COLOR: #000000">available</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">]</SPAN>; <BR>&nbsp; &nbsp; &nbsp; fin.<SPAN style="COLOR: #000000">read</SPAN><SPAN style="COLOR: #000000">(</SPAN>data<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; out.<SPAN style="COLOR: #000000">write</SPAN><SPAN style="COLOR: #000000">(</SPAN>data<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #6666ff">/* <BR>&nbsp; &nbsp; &nbsp; byte[] data = new byte[blob.getBufferSize()];&nbsp; 另一种实现方法,节省内存 <BR>&nbsp; &nbsp; &nbsp; while ((count = fin.read(data)) != -1) { <BR>&nbsp; &nbsp; &nbsp; &nbsp; total += count; <BR>&nbsp; &nbsp; &nbsp; &nbsp; out.write(data, 0, count); <BR>&nbsp; &nbsp; &nbsp; } <BR>&nbsp; &nbsp; &nbsp; */</SPAN> <BR><BR>&nbsp; &nbsp; &nbsp; fin.<SPAN style="COLOR: #000000">close</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; out.<SPAN style="COLOR: #000000">close</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; pstmt.<SPAN style="COLOR: #000000">setBlob</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000" ?>1</SPAN>,blob<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; pstmt.<SPAN style="COLOR: #000000">setString</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000" ?>2</SPAN>,"fankai"<SPAN style="COLOR: #000000">)</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; pstmt.<SPAN style="COLOR: #000000">executeUpdate</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; pstmt.<SPAN style="COLOR: #000000">close</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR><BR>&nbsp; &nbsp; &nbsp; conn.<SPAN style="COLOR: #000000">commit</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; conn.<SPAN style="COLOR: #000000">close</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; <SPAN style="COLOR: #000000">}</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>catch</SPAN> <SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #aaaadd" ?>SQLException</SPAN> e<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>System</SPAN>.<SPAN style="COLOR: #000000">err</SPAN>.<SPAN style="COLOR: #000000">println</SPAN><SPAN style="COLOR: #000000">(</SPAN>e.<SPAN style="COLOR: #000000">getMessage</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; e.<SPAN style="COLOR: #000000">printStackTrace</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; <SPAN style="COLOR: #000000">}</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>catch</SPAN> <SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #aaaadd" ?>IOException</SPAN> e<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>System</SPAN>.<SPAN style="COLOR: #000000">err</SPAN>.<SPAN style="COLOR: #000000">println</SPAN><SPAN style="COLOR: #000000">(</SPAN>e.<SPAN style="COLOR: #000000">getMessage</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; <SPAN style="COLOR: #000000">}</SPAN> <BR>&nbsp; <SPAN style="COLOR: #000000">}</SPAN> <BR><BR><SPAN style="COLOR: #000000">}</SPAN></DIV><BR></TD></TR></TBODY></TABLE><SPAN class=postbody><BR><BR><BR><BR>仔细看上例，分三步： <BR><BR>1、插入空blob <BR>into javatest(name,content) values(?,empty_blob()); <BR><BR>2、获得blob的cursor <BR>select content from javatest where name= ? for update; <BR><BR>注意！！！必须加for update，这将锁定该行，直至该行被修改完毕，保证不产生并发冲突。 <BR><BR>3、update javatest set content=? where name= <BR><BR>用cursor往数据库写数据 <BR><BR>这里面还有一点要提醒大家： <BR><BR>JDK1.3带的JDBC2.0规范是不完善的，只有读Blob的接口，而没有写Blob的接口，JDK1.4带的JDBC3.0加入了写Blob的接口。你可以使用JDBC3.0的接口，也可以直接使用Oracle的JDBC的API，我在上例中使用了Oracle的JDBC的API。 <BR><BR>另外要注意的是： <BR><BR>java.sql.Blob <BR>oracle.sql.BLOB <BR><BR>注意看blob的大小写，是不一样的。写程序的时候不要搞混了。 <BR><BR>下面看看用Hibernate怎么写，原理是一样的，也要分三步，但是代码简单很多 <BR><BR>这是Cat对象定义 <BR></SPAN>
<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><SPAN class=genmed><B>java代码:&nbsp;</B></SPAN></TD></TR>
<TR>
<TD class=code>
<DIV style="FONT-FAMILY: 'Courier New', Courier, monospace"><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>package</SPAN> com.<SPAN style="COLOR: #000000">fankai</SPAN>; <BR><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>import</SPAN> java.<SPAN style="COLOR: #000000">sql</SPAN>.<SPAN style="COLOR: #000000">Blob</SPAN>; <BR><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>class</SPAN> Cat <SPAN style="COLOR: #000000">{</SPAN> <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>private</SPAN> <SPAN style="COLOR: #aaaadd" ?>String</SPAN> id; <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>private</SPAN> <SPAN style="COLOR: #aaaadd" ?>String</SPAN> name; <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>private</SPAN> char sex; <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>private</SPAN> float weight; <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>private</SPAN> <SPAN style="COLOR: #aaaadd" ?>Blob</SPAN> image; <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> Cat<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <SPAN style="COLOR: #000000">}</SPAN> <BR><BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="COLOR: #aaaadd" ?>String</SPAN> getId<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>return</SPAN> id; <SPAN style="COLOR: #000000">}</SPAN> <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>void</SPAN> setId<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #aaaadd" ?>String</SPAN> id<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> this.<SPAN style="COLOR: #000000">id</SPAN> = id; <SPAN style="COLOR: #000000">}</SPAN> <BR><BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="COLOR: #aaaadd" ?>String</SPAN> getName<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>return</SPAN> name; <SPAN style="COLOR: #000000">}</SPAN> <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>void</SPAN> setName<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #aaaadd" ?>String</SPAN> name<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> this.<SPAN style="COLOR: #000000">name</SPAN> = name; <SPAN style="COLOR: #000000">}</SPAN> <BR><BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> char getSex<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>return</SPAN> sex; <SPAN style="COLOR: #000000">}</SPAN> <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>void</SPAN> setSex<SPAN style="COLOR: #000000">(</SPAN>char sex<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> this.<SPAN style="COLOR: #000000">sex</SPAN> = sex; <SPAN style="COLOR: #000000">}</SPAN> <BR><BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> float getWeight<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>return</SPAN> weight; <SPAN style="COLOR: #000000">}</SPAN> <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>void</SPAN> setWeight<SPAN style="COLOR: #000000">(</SPAN>float weight<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> this.<SPAN style="COLOR: #000000">weight</SPAN> = weight; <SPAN style="COLOR: #000000">}</SPAN> <BR>&nbsp; <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="COLOR: #aaaadd" ?>Blob</SPAN> getImage<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>return</SPAN> image; <SPAN style="COLOR: #000000">}</SPAN> <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>void</SPAN> setImage<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #aaaadd" ?>Blob</SPAN> image<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> this.<SPAN style="COLOR: #000000">image</SPAN> = image;<SPAN style="COLOR: #000000">}</SPAN> <BR><SPAN style="COLOR: #000000">}</SPAN></DIV><BR></TD></TR></TBODY></TABLE><SPAN class=postbody><BR><BR>这是Cat.hbm.xml <BR><BR></SPAN>
<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><SPAN class=genmed><B>java代码:&nbsp;</B></SPAN></TD></TR>
<TR>
<TD class=code>
<DIV style="FONT-FAMILY: 'Courier New', Courier, monospace"><BR>&lt;?xml version="<SPAN style="COLOR: #000000" ?>1</SPAN>.<SPAN style="COLOR: #000000" ?>0</SPAN>"?&gt; <BR>&lt;!DOCTYPE hibernate-mapping SYSTEM "http:<SPAN style="COLOR: #6666ff">//hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"&gt;</SPAN> <BR><BR>&lt;hibernate-mapping&gt; <BR>&nbsp; &nbsp; &lt;<SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>class</SPAN> name="com.<SPAN style="COLOR: #000000">fankai</SPAN>.<SPAN style="COLOR: #000000">Cat</SPAN>" table="cat"&gt; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &lt;!--jcs-cache usage="read-only"/--&gt; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &lt;id name="id" unsaved-value="<SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>null</SPAN>"&gt; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;generator <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>class</SPAN>="uuid.<SPAN style="COLOR: #000000">hex</SPAN>"/&gt; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/id&gt; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property name="name" length="<SPAN style="COLOR: #000000" ?>16</SPAN>" not-<SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>null</SPAN>="<SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>true</SPAN>"/&gt; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property name="sex" length="<SPAN style="COLOR: #000000" ?>1</SPAN>" not-<SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>null</SPAN>="<SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>true</SPAN>"/&gt; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property name="weight" /&gt; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property name="image" /&gt; <BR>&nbsp; &nbsp; &lt;/<SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>class</SPAN>&gt; <BR>&lt;/hibernate-mapping&gt;</DIV><BR></TD></TR></TBODY></TABLE><SPAN class=postbody><BR><BR><BR>下面是完整的用Hibernate写入Blob的例子，相比JDBC，已经简单轻松多了，也不用写那些Oracle特殊的sql了： <BR><BR></SPAN>
<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><SPAN class=genmed><B>java代码:&nbsp;</B></SPAN></TD></TR>
<TR>
<TD class=code>
<DIV style="FONT-FAMILY: 'Courier New', Courier, monospace"><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>package</SPAN> com.<SPAN style="COLOR: #000000">fankai</SPAN>; <BR><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>import</SPAN> java.<SPAN style="COLOR: #000000">sql</SPAN>.<SPAN style="COLOR: #000000">Blob</SPAN>; <BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>import</SPAN> net.<SPAN style="COLOR: #000000">sf</SPAN>.<SPAN style="COLOR: #000000">hibernate</SPAN>.*; <BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>import</SPAN> oracle.<SPAN style="COLOR: #000000">sql</SPAN>.*; <BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>import</SPAN> java.<SPAN style="COLOR: #000000">io</SPAN>.*; <BR><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>class</SPAN> TestCatHibernate <SPAN style="COLOR: #000000">{</SPAN>&nbsp; <BR>&nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>public</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>static</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>void</SPAN> testBlob<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <BR>&nbsp; &nbsp; Session s = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>null</SPAN>;&nbsp; &nbsp; <BR>&nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>byte</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">]</SPAN> buffer = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>new</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>byte</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000" ?>1</SPAN><SPAN style="COLOR: #000000">]</SPAN>; <BR>&nbsp; &nbsp; buffer<SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000" ?>0</SPAN><SPAN style="COLOR: #000000">]</SPAN> = <SPAN style="COLOR: #000000" ?>1</SPAN>; <BR>&nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>try</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <BR>&nbsp; &nbsp; &nbsp; SessionFactory sf = HibernateSessionFactory.<SPAN style="COLOR: #000000">getSessionFactory</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; s = sf.<SPAN style="COLOR: #000000">openSession</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>;&nbsp; <BR>&nbsp; &nbsp; &nbsp; Transaction tx = s.<SPAN style="COLOR: #000000">beginTransaction</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; Cat c = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>new</SPAN> Cat<SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; c.<SPAN style="COLOR: #000000">setName</SPAN><SPAN style="COLOR: #000000">(</SPAN>"Robbin"<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; c.<SPAN style="COLOR: #000000">setImage</SPAN><SPAN style="COLOR: #000000">(</SPAN>Hibernate.<SPAN style="COLOR: #000000">createBlob</SPAN><SPAN style="COLOR: #000000">(</SPAN>buffer<SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; s.<SPAN style="COLOR: #000000">save</SPAN><SPAN style="COLOR: #000000">(</SPAN>c<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; s.<SPAN style="COLOR: #000000">flush</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; s.<SPAN style="COLOR: #000000">refresh</SPAN><SPAN style="COLOR: #000000">(</SPAN>c, LockMode.<SPAN style="COLOR: #000000">UPGRADE</SPAN><SPAN style="COLOR: #000000">)</SPAN>;&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; BLOB blob = <SPAN style="COLOR: #000000">(</SPAN>BLOB<SPAN style="COLOR: #000000">)</SPAN> c.<SPAN style="COLOR: #000000">getImage</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>;&nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>OutputStream</SPAN> out = blob.<SPAN style="COLOR: #000000">getBinaryOutputStream</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>;&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>String</SPAN> fileName = "oraclejdbc.<SPAN style="COLOR: #000000">jar</SPAN>"; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>File</SPAN> f = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>new</SPAN> <SPAN style="COLOR: #aaaadd" ?>File</SPAN><SPAN style="COLOR: #000000">(</SPAN>fileName<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>FileInputStream</SPAN> fin = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>new</SPAN> <SPAN style="COLOR: #aaaadd" ?>FileInputStream</SPAN><SPAN style="COLOR: #000000">(</SPAN>f<SPAN style="COLOR: #000000">)</SPAN>;&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>int</SPAN> count = -<SPAN style="COLOR: #000000" ?>1</SPAN>, total = <SPAN style="COLOR: #000000" ?>0</SPAN>; <BR>&nbsp; &nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>byte</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">]</SPAN> data = <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>new</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>byte</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>int</SPAN><SPAN style="COLOR: #000000">)</SPAN>fin.<SPAN style="COLOR: #000000">available</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">]</SPAN>; <BR>&nbsp; &nbsp; &nbsp; fin.<SPAN style="COLOR: #000000">read</SPAN><SPAN style="COLOR: #000000">(</SPAN>data<SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; out.<SPAN style="COLOR: #000000">write</SPAN><SPAN style="COLOR: #000000">(</SPAN>data<SPAN style="COLOR: #000000">)</SPAN>;&nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; fin.<SPAN style="COLOR: #000000">close</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; out.<SPAN style="COLOR: #000000">close</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; s.<SPAN style="COLOR: #000000">flush</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; tx.<SPAN style="COLOR: #000000">commit</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; <BR>&nbsp; &nbsp; <SPAN style="COLOR: #000000">}</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>catch</SPAN> <SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #aaaadd" ?>Exception</SPAN> e<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <BR>&nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #aaaadd" ?>System</SPAN>.<SPAN style="COLOR: #000000">out</SPAN>.<SPAN style="COLOR: #000000">println</SPAN><SPAN style="COLOR: #000000">(</SPAN>e.<SPAN style="COLOR: #000000">getMessage</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; <SPAN style="COLOR: #000000">}</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>finally</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <BR>&nbsp; &nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>if</SPAN> <SPAN style="COLOR: #000000">(</SPAN>s != <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>null</SPAN><SPAN style="COLOR: #000000">)</SPAN> <BR>&nbsp; &nbsp; &nbsp; &nbsp; <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>try</SPAN> <SPAN style="COLOR: #000000">{</SPAN> <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; s.<SPAN style="COLOR: #000000">close</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">)</SPAN>; <BR>&nbsp; &nbsp; &nbsp; &nbsp; <SPAN style="COLOR: #000000">}</SPAN> <SPAN style="FONT-WEIGHT: bold; COLOR: #990066" ?>catch</SPAN> <SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #aaaadd" ?>Exception</SPAN> e<SPAN style="COLOR: #000000">)</SPAN> <SPAN style="COLOR: #000000">{</SPAN><SPAN style="COLOR: #000000">}</SPAN> <BR>&nbsp; &nbsp; <SPAN style="COLOR: #000000">}</SPAN>&nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; <SPAN style="COLOR: #000000">}</SPAN> <BR><SPAN style="COLOR: #000000">}</SPAN></DIV></TD></TR></TBODY></TABLE>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>附:可以采用通用信,例如把blob映射为byte[]，clob映射为char[],操作他们和操作其它数据库的大字段是一样的，把oracle的blob/clob移植到sybase的image/text，甚至access的OLE对象，不需要修改一行代码和配置.</P>]]></description>
</item><item>
<title><![CDATA[各种排序算法java实现(转)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=13229</link>
<author>jjs_love</author>
<pubDate>2006/4/6 13:43:26</pubDate>
<description><![CDATA[<P>插入排序:</P>
<P>package org.rut.util.algorithm.support;</P>
<P>import org.rut.util.algorithm.SortUtil;<BR>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class InsertSort implements SortUtil.Sort{</P>
<P>&nbsp;&nbsp;&nbsp; /* (non-Javadoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=1;i&lt;data.length;i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=i;(j&gt;0)&amp;&amp;(data[j]&lt;data[j-1]);j--){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,j,j-1);<BR>&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; <BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}<BR>冒泡排序:</P>
<P>package org.rut.util.algorithm.support;</P>
<P>import org.rut.util.algorithm.SortUtil;</P>
<P>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class BubbleSort implements SortUtil.Sort{</P>
<P>&nbsp;&nbsp;&nbsp; /* (non-Javadoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;data.length;i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=data.length-1;j&gt;i;j--){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(data[j]&lt;data[j-1]){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,j,j-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}</P>
<P>选择排序:</P>
<P>package org.rut.util.algorithm.support;</P>
<P>import org.rut.util.algorithm.SortUtil;</P>
<P>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class SelectionSort implements SortUtil.Sort {</P>
<P>&nbsp;&nbsp;&nbsp; /*<BR>&nbsp;&nbsp;&nbsp;&nbsp; * (non-Javadoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; * <BR>&nbsp;&nbsp;&nbsp;&nbsp; * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; data.length; i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int lowIndex = i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = data.length - 1; j &gt; i; j--) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (data[j] &lt; data[lowIndex]) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lowIndex = j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,i,lowIndex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}</P>
<P>Shell排序:</P>
<P>package org.rut.util.algorithm.support;</P>
<P>import org.rut.util.algorithm.SortUtil;</P>
<P>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class ShellSort implements SortUtil.Sort{</P>
<P>&nbsp;&nbsp;&nbsp; /* (non-Javadoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=data.length/2;i&gt;2;i/=2){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0;j&lt;i;j++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insertSort(data,j,i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insertSort(data,0,1);<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param data<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param j<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param i<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; private void insertSort(int[] data, int start, int inc) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=start+inc;i&lt;data.length;i+=inc){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=i;(j&gt;=inc)&amp;&amp;(data[j]&lt;data[j-inc]);j-=inc){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,j,j-inc);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}</P>
<P>快速排序:</P>
<P>package org.rut.util.algorithm.support;</P>
<P>import org.rut.util.algorithm.SortUtil;</P>
<P>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class QuickSort implements SortUtil.Sort{</P>
<P>&nbsp;&nbsp;&nbsp; /* (non-Javadoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; quickSort(data,0,data.length-1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; private void quickSort(int[] data,int i,int j){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int pivotIndex=(i+j)/2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //swap<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,pivotIndex,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int k=partition(data,i-1,j,data[j]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,k,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((k-i)&gt;1) quickSort(data,i,k-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((j-k)&gt;1) quickSort(data,k+1,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param data<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param i<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param j<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @return<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; private int partition(int[] data, int l, int r,int pivot) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(data[++l]&lt;pivot);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((r!=0)&amp;&amp;data[--r]&gt;pivot);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,l,r);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(l&lt;r);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,l,r);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return l;<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}<BR>改进后的快速排序:</P>
<P>package org.rut.util.algorithm.support;</P>
<P>import org.rut.util.algorithm.SortUtil;</P>
<P>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class ImprovedQuickSort implements SortUtil.Sort {</P>
<P>&nbsp;&nbsp;&nbsp; private static int MAX_STACK_SIZE=4096;<BR>&nbsp;&nbsp;&nbsp; private static int THRESHOLD=10;<BR>&nbsp;&nbsp;&nbsp; /* (non-Javadoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] stack=new int[MAX_STACK_SIZE];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int top=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int pivot;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int pivotIndex,l,r;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stack[++top]=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stack[++top]=data.length-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(top&gt;0){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j=stack[top--];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i=stack[top--];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pivotIndex=(i+j)/2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pivot=data[pivotIndex];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,pivotIndex,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //partition<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l=i-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r=j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(data[++l]&lt;pivot);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((r!=0)&amp;&amp;(data[--r]&gt;pivot));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,l,r);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(l&lt;r);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,l,r);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,l,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((l-i)&gt;THRESHOLD){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stack[++top]=i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stack[++top]=l-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((j-l)&gt;THRESHOLD){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stack[++top]=l+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stack[++top]=j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //new InsertSort().sort(data);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insertSort(data);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param data<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; private void insertSort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=1;i&lt;data.length;i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=i;(j&gt;0)&amp;&amp;(data[j]&lt;data[j-1]);j--){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,j,j-1);<BR>&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; <BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}</P>
<P>归并排序:</P>
<P>package org.rut.util.algorithm.support;</P>
<P>import org.rut.util.algorithm.SortUtil;</P>
<P>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class MergeSort implements SortUtil.Sort{</P>
<P>&nbsp;&nbsp;&nbsp; /* (non-Javadoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] temp=new int[data.length];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mergeSort(data,temp,0,data.length-1);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; private void mergeSort(int[] data,int[] temp,int l,int r){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int mid=(l+r)/2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(l==r) return ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mergeSort(data,temp,l,mid);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mergeSort(data,temp,mid+1,r);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=l;i&lt;=r;i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp[i]=data[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i1=l;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i2=mid+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int cur=l;cur&lt;=r;cur++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i1==mid+1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[cur]=temp[i2++];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(i2&gt;r)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[cur]=temp[i1++];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(temp[i1]&lt;temp[i2])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[cur]=temp[i1++];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[cur]=temp[i2++];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}</P>
<P>改进后的归并排序:</P>
<P>package org.rut.util.algorithm.support;</P>
<P>import org.rut.util.algorithm.SortUtil;</P>
<P>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class ImprovedMergeSort implements SortUtil.Sort {</P>
<P>&nbsp;&nbsp;&nbsp; private static final int THRESHOLD = 10;</P>
<P>&nbsp;&nbsp;&nbsp; /*<BR>&nbsp;&nbsp;&nbsp;&nbsp; * (non-Javadoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; * <BR>&nbsp;&nbsp;&nbsp;&nbsp; * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] temp=new int[data.length];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mergeSort(data,temp,0,data.length-1);<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; private void mergeSort(int[] data, int[] temp, int l, int r) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i, j, k;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int mid = (l + r) / 2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (l == r)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((mid - l) &gt;= THRESHOLD)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mergeSort(data, temp, l, mid);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insertSort(data, l, mid - l + 1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((r - mid) &gt; THRESHOLD)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mergeSort(data, temp, mid + 1, r);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insertSort(data, mid + 1, r - mid);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i = l; i &lt;= mid; i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp[i] = data[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (j = 1; j &lt;= r - mid; j++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp[r - j + 1] = data[j + mid];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int a = temp[l];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int b = temp[r];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i = l, j = r, k = l; k &lt;= r; k++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (a &lt; b) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[k] = temp[i++];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = temp[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[k] = temp[j--];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = temp[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param data<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param l<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param i<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; private void insertSort(int[] data, int start, int len) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=start+1;i&lt;start+len;i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=i;(j&gt;start) &amp;&amp; data[j]&lt;data[j-1];j--){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(data,j,j-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}<BR>堆排序:</P>
<P>package org.rut.util.algorithm.support;</P>
<P>import org.rut.util.algorithm.SortUtil;</P>
<P>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class HeapSort implements SortUtil.Sort{</P>
<P>&nbsp;&nbsp;&nbsp; /* (non-Javadoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MaxHeap h=new MaxHeap();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h.init(data);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;data.length;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h.remove();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.arraycopy(h.queue,1,data,0,data.length);<BR>&nbsp;&nbsp;&nbsp; }</P>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp; private static class MaxHeap{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void init(int[] data){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.queue=new int[data.length+1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;data.length;i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; queue[++size]=data[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fixUp(size);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int size=0;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int[] queue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int get() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return queue[1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void remove() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(queue,1,size--);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fixDown(1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //fixdown<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void fixDown(int k) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((j = k &lt;&lt; 1) &lt;= size) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (j &lt; size &amp;&amp; queue[j]&lt;queue[j+1])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j++; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (queue[k]&gt;queue[j]) //不用交换<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(queue,j,k);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k = j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void fixUp(int k) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (k &gt; 1) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j = k &gt;&gt; 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (queue[j]&gt;queue[k])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SortUtil.swap(queue,j,k);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k = j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>}</P>
<P>&nbsp;</P>
<P>SortUtil:</P>
<P>package org.rut.util.algorithm;</P>
<P>import org.rut.util.algorithm.support.BubbleSort;<BR>import org.rut.util.algorithm.support.HeapSort;<BR>import org.rut.util.algorithm.support.ImprovedMergeSort;<BR>import org.rut.util.algorithm.support.ImprovedQuickSort;<BR>import org.rut.util.algorithm.support.InsertSort;<BR>import org.rut.util.algorithm.support.MergeSort;<BR>import org.rut.util.algorithm.support.QuickSort;<BR>import org.rut.util.algorithm.support.SelectionSort;<BR>import org.rut.util.algorithm.support.ShellSort;</P>
<P>/**<BR>&nbsp;* @author treeroot<BR>&nbsp;* @since 2006-2-2<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class SortUtil {<BR>&nbsp;&nbsp;&nbsp; public final static int INSERT = 1;</P>
<P>&nbsp;&nbsp;&nbsp; public final static int BUBBLE = 2;</P>
<P>&nbsp;&nbsp;&nbsp; public final static int SELECTION = 3;</P>
<P>&nbsp;&nbsp;&nbsp; public final static int SHELL = 4;</P>
<P>&nbsp;&nbsp;&nbsp; public final static int QUICK = 5;</P>
<P>&nbsp;&nbsp;&nbsp; public final static int IMPROVED_QUICK = 6;</P>
<P>&nbsp;&nbsp;&nbsp; public final static int MERGE = 7;</P>
<P>&nbsp;&nbsp;&nbsp; public final static int IMPROVED_MERGE = 8;</P>
<P>&nbsp;&nbsp;&nbsp; public final static int HEAP = 9;</P>
<P>&nbsp;&nbsp;&nbsp; public static void sort(int[] data) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sort(data, IMPROVED_QUICK);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; private static String[] name={<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "insert","bubble","selection","shell","quick","improved_quick","merge","improved_merge","heap"<BR>&nbsp;&nbsp;&nbsp; };<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; private static Sort[] impl=new Sort[]{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new InsertSort(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new BubbleSort(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new SelectionSort(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new ShellSort(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new QuickSort(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new ImprovedQuickSort(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new MergeSort(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new ImprovedMergeSort(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new HeapSort()<BR>&nbsp;&nbsp;&nbsp; };</P>
<P>&nbsp;&nbsp;&nbsp; public static String toString(int algorithm){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return name[algorithm-1];<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public static void sort(int[] data, int algorithm) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; impl[algorithm-1].sort(data);<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; public static interface Sort {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void sort(int[] data);<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; public static void swap(int[] data, int i, int j) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int temp = data[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[i] = data[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[j] = temp;<BR>&nbsp;&nbsp;&nbsp; }<BR>}</P>
<P><BR>&nbsp;JAVA中金额的中文大写方式 <BR>&nbsp; <BR>题意:</P>
<P>读入一个浮点数值,将其转化为中文金额的大写方式.</P>
<P>试验要求:</P>
<P>当金额为整数时,只表示整数部分,省略小数部分,并添加"整"字.</P>
<P>当金额中含有连续的0时,只需要一个"零"即可.</P>
<P>10的表示方式.例如110--壹佰一拾元整,10---一拾元整</P>
<P>&nbsp; 1import java.io.*;<BR>&nbsp; 2class chineseMoney...{<BR>&nbsp; 3&nbsp;&nbsp;&nbsp; private String number[]=...{"","壹","贰","叁","肆","伍","陆","柒","捌","玖"};<BR>&nbsp; 4&nbsp;&nbsp;&nbsp; private String unit[]=...{"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰"};<BR>&nbsp; 5&nbsp;&nbsp;&nbsp; private String small[]=...{"角","分"};<BR>&nbsp; 6&nbsp;&nbsp;&nbsp; private String strNumber,strUnit,strAll;<BR>&nbsp; 7<BR>&nbsp; 8&nbsp;&nbsp;&nbsp; private String onlyInt(int intInt)<BR>&nbsp; 9&nbsp;&nbsp;&nbsp; ...{<BR>10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strInt;<BR>11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strInt=String.valueOf(intInt);<BR>12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strNumber="";strUnit="";strAll="";<BR>13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int l=strInt.length ();<BR>14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j,k,zeorCount;<BR>15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zeorCount=0;<BR>16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (k=0;k&lt;l;k++)<BR>17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strTemp=strInt.substring(k,k+1);<BR>19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intTemp=Integer.parseInt(strTemp);<BR>20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strNumber=number[intTemp];<BR>21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j=l-1-k;<BR>22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=unit[j];<BR>23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (intTemp==0)<BR>24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (zeorCount==0)<BR>26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>27&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=strUnit.replace('拾','零');<BR>28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=strUnit.replace('佰','零');<BR>29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=strUnit.replace('仟','零');<BR>30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=strUnit.replace('万','零');&nbsp;&nbsp;&nbsp; <BR>31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=strUnit.replaceAll("拾","");<BR>35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=strUnit.replaceAll("佰","");<BR>36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=strUnit.replaceAll("仟","");<BR>37&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=strUnit.replaceAll("万","");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>39&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zeorCount++;<BR>40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>41&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strAll+=strNumber+strUnit;<BR>42&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return strAll;<BR>44&nbsp;&nbsp;&nbsp; <BR>45&nbsp;&nbsp;&nbsp; }<BR>46&nbsp;&nbsp;&nbsp; <BR>47&nbsp;&nbsp;&nbsp; private String onlySmall(int intSmall)<BR>48&nbsp;&nbsp;&nbsp; ...{<BR>49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strNumber="";strUnit="";strAll="";<BR>51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strSmall,strTemp;<BR>52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strSmall=String.valueOf(intSmall);<BR>53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i;<BR>54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (intSmall&gt;=10)<BR>55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=0;i&lt;strSmall.length();i++)<BR>57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strTemp=String.valueOf(intSmall).substring(i,i+1);<BR>59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Integer.parseInt(strTemp)!=0)<BR>60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strNumber=number[Integer.parseInt(strTemp)];<BR>62&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=small[i];&nbsp;&nbsp;&nbsp; <BR>63&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strAll+=strNumber+strUnit;<BR>64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>66&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>67&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>68&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>69&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (intSmall!=0)<BR>70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>71&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strNumber=number[intSmall];<BR>72&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUnit=small[1];&nbsp;&nbsp;&nbsp; <BR>73&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strAll+=strNumber+strUnit;<BR>74&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>76<BR>77&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return strAll;<BR>78&nbsp;&nbsp;&nbsp; }<BR>79&nbsp;&nbsp;&nbsp; <BR>80&nbsp;&nbsp;&nbsp; public String getChineseMoney(double number)<BR>81&nbsp;&nbsp;&nbsp; ...{<BR>82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //四舍五入<BR>83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number=(number*100+0.5)/100;<BR>84&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>85&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strAll,strChineseInt,strChineseSmall,strZheng;;<BR>86&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intInt,intSmall;<BR>87&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strChineseInt="";strChineseSmall="";strZheng="";<BR>88&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>89&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //整数部分<BR>90&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intInt=(int)( number*100/100);<BR>91&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (intInt!=0)<BR>92&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>93&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strChineseInt=onlyInt(intInt);<BR>94&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>95&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //小数部分<BR>96&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double temp=(number-intInt)*100*100/100;<BR>97&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //对小数部分四舍五入<BR>98&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intSmall=(int)(temp*100+0.5)/100;<BR>99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (intSmall!=0)<BR>100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strChineseSmall=onlySmall(intSmall);<BR>102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<BR>105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strZheng="整";<BR>106&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>107&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strAll=strChineseInt+strChineseSmall+strZheng;<BR>108&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return strAll;<BR>109&nbsp;&nbsp;&nbsp; }<BR>110&nbsp;&nbsp;&nbsp; public static void main(String args[]) throws IOException<BR>111&nbsp;&nbsp;&nbsp; ...{<BR>112&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chineseMoney cm=new chineseMoney();<BR>113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double money;<BR>114&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strMoney,strChineseMoney;<BR>115&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strMoney="";<BR>116&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //读取<BR>117&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("输入货币(四舍五入):");<BR>118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader cin = new BufferedReader(new InputStreamReader( System.in));<BR>119&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strMoney = cin.readLine();<BR>120&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; money=Double.parseDouble(strMoney);<BR>121&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strChineseMoney=cm.getChineseMoney(money);<BR>122&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(strChineseMoney);<BR>123&nbsp;&nbsp;&nbsp; }<BR>124}</P>
<P><BR>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[用JS写联动]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=13006</link>
<author>jjs_love</author>
<pubDate>2006/3/29 15:36:13</pubDate>
<description><![CDATA[<P>js如下</P>
<P>&lt;%!<BR>public String getDeptUsers(Connection conn) {<BR>&nbsp;StringBuffer users = new StringBuffer();<BR>&nbsp;String sql = "SELECT dept_CODE, dept_NAME, user_code, user_name "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + "FROM SYS_DIC_dept, sys_dic_user "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + "WHERE user_dept = dept_CODE(+) "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + "ORDER BY dept_CODE";<BR>&nbsp;Statement stmt = null;<BR>&nbsp;ResultSet rs = null;<BR>&nbsp;<BR>&nbsp;try {<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;stmt = conn.createStatement();<BR>&nbsp;&nbsp;rs = stmt.executeQuery(sql);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;while (rs.next()) {<BR>&nbsp;&nbsp;&nbsp;users.append((rs.getString("dept_CODE") != null ? rs.getString("dept_CODE").trim() : "") + ", "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ (rs.getString("dept_NAME") != null ? rs.getString("dept_NAME").trim() : "") + ", "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ (rs.getString("user_code") != null ? rs.getString("user_code").trim() : "") + ", "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ (rs.getString("user_name") != null ? rs.getString("user_name").trim() : "") + ", ");<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;} catch (SQLException sqle) {<BR>&nbsp;} finally {<BR>&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;if (rs != null) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if (stmt != null) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;} catch (SQLException ignore) {<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;return users.toString();<BR>}</P>
<P>%&gt;</P>
<P>&lt;script language="javascript" type="text/javascript"&gt;<BR>&nbsp;var deptUsers = new Array();<BR>&nbsp;var errorMessage = "";<BR>&nbsp;<BR>&nbsp;function DeptUser() {<BR>&nbsp;&nbsp;this.deptId = "";<BR>&nbsp;&nbsp;this.deptName = "";<BR>&nbsp;&nbsp;this.userIds = new Array();<BR>&nbsp;&nbsp;this.userNames = new Array();<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;function initUserData(users) {<BR>&nbsp;&nbsp;var tempArr = users.split(", ");<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var currId = "";<BR>&nbsp;&nbsp;var user = null;<BR>&nbsp;&nbsp;for (var loop=0; loop&lt;tempArr.length-1; loop+=4) {<BR>&nbsp;&nbsp;&nbsp;if (currId.toUpperCase() != tempArr[loop + 1].toUpperCase()) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;user = new DeptUser();<BR>&nbsp;&nbsp;&nbsp;&nbsp;deptUsers.push(user);<BR>&nbsp;&nbsp;&nbsp;&nbsp;currId = tempArr[loop + 1];&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;user.deptId = tempArr[loop];<BR>&nbsp;&nbsp;&nbsp;user.deptName = tempArr[loop + 1];<BR>&nbsp;&nbsp;&nbsp;user.userIds.push(tempArr[loop + 2]);<BR>&nbsp;&nbsp;&nbsp;user.userNames.push(tempArr[loop + 3]);&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}<BR>&nbsp;}</P>
<P>&nbsp;function getDepts(formIndex, deptTarget, name) {<BR>&nbsp;&nbsp;var target = document.forms[formIndex][deptTarget].options;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var index=0; index&lt;deptUsers.length; index++) {<BR>&nbsp;&nbsp;&nbsp;var opt = new Option();<BR>&nbsp;&nbsp;&nbsp;opt.value = deptUsers[index].deptId;<BR>&nbsp;&nbsp;&nbsp;opt.text = deptUsers[index].deptName;<BR>&nbsp;&nbsp;&nbsp;target.add(opt, index);&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var index=0; index&lt;target.length&amp;&amp;name!=""; index++) {<BR>&nbsp;&nbsp;&nbsp;if (target[index].text == name || target[index].value == name) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;target[index].selected = true;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;function getDeptUsers(formIndex, deptTarget, userTarget, userCode) {<BR>&nbsp;&nbsp;var deptIndex = -1;<BR>&nbsp;&nbsp;var targetForm = document.forms[formIndex];<BR>&nbsp;&nbsp;var dept = targetForm[deptTarget];<BR>&nbsp;&nbsp;var users = targetForm[userTarget];<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var index=0; index&lt;dept.options.length; index++) {<BR>&nbsp;&nbsp;&nbsp;if (dept.options[index].selected) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;deptIndex = index;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var index=0; index&lt;users.length; index++) {<BR>&nbsp;&nbsp;&nbsp;users.remove(index);<BR>&nbsp;&nbsp;&nbsp;index--;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; for (var index=0; index&lt;deptUsers[deptIndex].userIds.length; index++) {<BR>&nbsp;&nbsp;&nbsp;var target = users.options;<BR>&nbsp;&nbsp;&nbsp;var opt = new Option();<BR>&nbsp;&nbsp;&nbsp;opt.value = deptUsers[deptIndex].userIds[index];<BR>&nbsp;&nbsp;&nbsp;opt.text = deptUsers[deptIndex].userNames[index];<BR>&nbsp;&nbsp;&nbsp;target.add(opt, index);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var index=0; (index&lt;target.length)&amp;&amp;(userCode!=""); index++) {<BR>&nbsp;&nbsp;&nbsp;if (target[index].value == userCode) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;target[index].selected = true;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;function addOptions(formIndex, fromName, toName) {<BR>&nbsp;&nbsp;var targetForm = document.forms[formIndex];<BR>&nbsp;&nbsp;var optFrom = targetForm[fromName].options;<BR>&nbsp;&nbsp;var optTo = targetForm[toName].options;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var index=0; index&lt;optFrom.length; index++) {<BR>&nbsp;&nbsp;&nbsp;if (optFrom[index].selected &amp;&amp; !isExist(optTo, optFrom[index].text)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var opt = new Option();<BR>&nbsp;&nbsp;&nbsp;&nbsp;opt.value = optFrom[index].value;<BR>&nbsp;&nbsp;&nbsp;&nbsp;opt.text =&nbsp;optFrom[index].text;<BR>&nbsp;&nbsp;&nbsp;&nbsp;optTo.add(opt, optTo.length);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;function addAllOptions(formIndex, fromName, toName) {<BR>&nbsp;&nbsp;var targetForm = document.forms[formIndex];<BR>&nbsp;&nbsp;var optFrom = targetForm[fromName].options;<BR>&nbsp;&nbsp;var optTo = targetForm[toName].options;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var index=0; index&lt;optFrom.length; index++) {<BR>&nbsp;&nbsp;&nbsp;if (!isExist(optTo, optFrom[index].text)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;var opt = new Option();<BR>&nbsp;&nbsp;&nbsp;&nbsp;opt.value = optFrom[index].value;<BR>&nbsp;&nbsp;&nbsp;&nbsp;opt.text =&nbsp;optFrom[index].text;<BR>&nbsp;&nbsp;&nbsp;&nbsp;optTo.add(opt, optTo.length);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;function removeOptions(formIndex, targetName) {<BR>&nbsp;&nbsp;var target = document.forms[formIndex][targetName].options;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var index=0; index&lt;target.length; index++) {<BR>&nbsp;&nbsp;&nbsp;if (target[index].selected) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;target.remove(index);<BR>&nbsp;&nbsp;&nbsp;&nbsp;index--;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;function removeAllOptions(formIndex, targetName) {<BR>&nbsp;&nbsp;var target = document.forms[formIndex][targetName].options;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;for (var index=0; index&lt;target.length; index++) {<BR>&nbsp;&nbsp;&nbsp;target.remove(index);<BR>&nbsp;&nbsp;&nbsp;index--;<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;function isExist(object, str) {<BR>&nbsp;&nbsp;for (var index=0; index&lt;object.length; index++) {<BR>&nbsp;&nbsp;&nbsp;if (object[index].text == str) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;return true;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;return false;<BR>&nbsp;}<BR>&lt;/script&gt;</P>
<P>jsp如下</P>
<P>&nbsp;&nbsp; &lt;script&gt;initUserData("&lt;%=getDeptUsers(conn)%&gt;");&lt;/script&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;select name="user_dept" onChange="getDeptUsers(0,'user_dept', 'fileplan_man');"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script&gt;getDepts(0,"user_dept");&lt;/script&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/select&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;select name="fileplan_man"&gt;<BR>&nbsp;&nbsp; &lt;script&gt;getDeptUsers(0,"user_dept", "fileplan_man");&lt;/script&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/select&gt;</P>]]></description>
</item><item>
<title><![CDATA[java文件操作大全 (转载)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=12838</link>
<author>jjs_love</author>
<pubDate>2006/3/23 13:12:25</pubDate>
<description><![CDATA[<P>作者：yesjoy　来源：<A href="http://www.javaresearch.org">www.javaresearch.org</A></P>
<P>java文件操作大全<BR><BR><BR><BR><BR>文件的建立/检查与删除<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;文件的建立、检查与删除&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath("");<BR>//out.println(path);<BR>File&nbsp;f=new&nbsp;File(path,"File.txt");<BR>//out.println(f);<BR>//out.println(f.exists());<BR><BR>if(f.exists()){//检查File.txt是否存在<BR>f.delete();//删除File.txt文件<BR>out.println(path&nbsp;+&nbsp;"\\File.txt&nbsp;存在，已删除。");<BR>}else{<BR>f.createNewFile();//在当前目录下建立一个名为File.txt的文件<BR>out.println(path&nbsp;+&nbsp;"\\File.txt&nbsp;不存在，已建立。");//输出目前所在的目录路径<BR>}<BR>%&gt;<BR><BR>目录的建立/检查与删除<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;目录的建立/检查与删除&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath("");<BR>path=path&nbsp;+&nbsp;"\\Sub";//将要建立的目录路径<BR>File&nbsp;d=new&nbsp;File(path);//建立代表Sub目录的File对象，并得到它的一个引用<BR>if(d.exists()){//检查Sub目录是否存在<BR>d.delete();<BR>out.println("Sub目录存在，已删除");<BR>}else{<BR>d.mkdir();//建立Sub目录<BR>out.println("Sub目录不存在，已建立");<BR>}<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR><BR>如何在JSP中处理虚拟目录<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;JSP中如何处理虚拟目录&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>取得虚拟目录对应的磁盘路径&lt;br&gt;<BR>Web站点主目录的位置为&lt;font&nbsp;color=#ff0000&gt;&lt;%=request.getRealPath("/")%&gt;&lt;/font&gt;&lt;br&gt;<BR>JSP网页所在的目录位置&lt;font&nbsp;color=#ff0000&gt;&lt;%=request.getRealPath("./")%&gt;&lt;/font&gt;&lt;br&gt;<BR>JSP网页所在目录上一层目录的位置&lt;font&nbsp;color=#ff0000&gt;&lt;%=request.getRealPath("../")%&gt;&lt;/font&gt;&lt;br&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR><BR>文件属性的取得<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.util.Date,java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;文件属性的取得&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath("/");<BR>File&nbsp;f=new&nbsp;File(path,"ReadData.txt");<BR>if(f.exists()){<BR>%&gt;<BR>&lt;%=f.getName()%&gt;的属性如下：&lt;br&gt;&lt;br&gt;<BR>文件长度为：&lt;%=f.length()%&gt;<BR>&lt;%=f.isFile()?"是文件":"不是文件"%&gt;&lt;br&gt;<BR>&lt;%=f.isDirectory()?"是目录":"不是目录"%&gt;&lt;br&gt;<BR>&lt;%=f.canRead()?"可读取":"不可读取"%&gt;&lt;br&gt;<BR>&lt;%=f.canWrite()?"可写入":"不可写入"%&gt;&lt;br&gt;<BR>&lt;%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%&gt;&lt;br&gt;<BR>文件的最后修改日期为：&lt;%=new&nbsp;Date(f.lastModified())%&gt;&lt;br&gt;<BR>&lt;%<BR>}else{<BR>f.createNewFile();//在当前目录下建立一个名为ReaData.txt的文件<BR>%&gt;&nbsp;<BR>&lt;%=f.getName()%&gt;的属性如下：&lt;br&gt;&lt;br&gt;<BR>文件长度为：&lt;%=f.length()%&gt;<BR>&lt;%=f.isFile()?"是文件":"不是文件"%&gt;&lt;br&gt;<BR>&lt;%=f.isDirectory()?"是目录":"不是目录"%&gt;&lt;br&gt;<BR>&lt;%=f.canRead()?"可读取":"不可读取"%&gt;&lt;br&gt;<BR>&lt;%=f.canWrite()?"可写入":"不可写入"%&gt;&lt;br&gt;<BR>&lt;%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%&gt;&lt;br&gt;<BR>文件的最后修改日期为：&lt;%=new&nbsp;Date(f.lastModified())%&gt;&lt;br&gt;<BR>&lt;%<BR>}<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR><BR>取出目录中文件的方法<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;取出目录中文件的方法--列出目录中的文件&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath("/");<BR>File&nbsp;d=new&nbsp;File(path);//建立当前目录中文件的File对象<BR>File&nbsp;list[]=d.listFiles();//取得代表目录中所有文件的File对象数组<BR>out.println("&lt;font&nbsp;color=#ff0000&gt;"&nbsp;+&nbsp;path&nbsp;+&nbsp;"目录下的文件：&lt;/font&gt;&lt;br&gt;");<BR>for(int&nbsp;i=0;i&lt;list.length;i++){<BR>if(list&lt;I&gt;.isFile()){<BR>out.println(list&lt;I&gt;.getName()&nbsp;+&nbsp;"&lt;br&gt;");<BR>}<BR>}<BR>out.println("&lt;br&gt;&lt;font&nbsp;color=#ff0000&gt;"&nbsp;+&nbsp;path&nbsp;+&nbsp;"目录下的目录：&lt;/font&gt;&lt;br&gt;");<BR>for(int&nbsp;i=0;i&lt;list.length;i++){<BR>if(list&lt;I&gt;.isDirectory()){<BR>out.println(list&lt;I&gt;.getName()&nbsp;+&nbsp;"&lt;br&gt;");<BR>}<BR>}<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR><BR>判断是否为空白文件<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;判断是否为空白文件&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath("/");<BR>out.println(path);<BR>FileReader&nbsp;fr=new&nbsp;FileReader(path&nbsp;+&nbsp;"\\AtEnd.txt");//建立FileReader对象，并实例化为fr<BR>//对FileReader类生成的对象使用read()方法，可以从字符流中读取下一个字符。<BR>if(fr.read()==-1)//判断是否已读到文件的结尾<BR>{<BR>out.print("AtEnd.txt文件中没有数据&lt;br&gt;");<BR>}else{<BR>out.println("AtEnd.txt文件中有数据");<BR>}<BR>fr.close();<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR><BR>读取所有的文件数据<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*,java.lang.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;读取所有的文件数据&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath(".");<BR>FileReader&nbsp;fr=new&nbsp;FileReader(path&nbsp;+&nbsp;"\\ReadData.txt");<BR>//关键在于读取过程中，要判断所读取的字符是否已经到了文件的末尾，并且这个字符是不是文件中的断行符，即判断该字符值是否为13。<BR>int&nbsp;c=fr.read();//从文件中读取一个字符<BR>//判断是否已读到文件结尾<BR>while(c!=-1){<BR>out.print((char)c);//输出读到的数据<BR>c=fr.read();//从文件中继续读取数据<BR>if(c==13){//判断是否为断行字符<BR>out.print("&lt;br&gt;");//输出分行标签<BR>fr.skip(1);//略过一个字符<BR>//c=fr.read();//读取一个字符<BR>}<BR>}<BR>fr.close();<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR><BR>一行一行读取数据<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;文件读取&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath("");//取得当前目录的路径<BR>FileReader&nbsp;fr=new&nbsp;FileReader(path&nbsp;+&nbsp;"\\file\\inc\\t.txt");//建立FileReader对象，并实例化为fr<BR>BufferedReader&nbsp;br=new&nbsp;BufferedReader(fr);//建立BufferedReader对象，并实例化为br<BR>String&nbsp;Line=br.readLine();//从文件读取一行字符串<BR>//判断读取到的字符串是否不为空<BR>while(Line!=null){<BR>out.println(Line&nbsp;+&nbsp;"&lt;br&gt;");//输出从文件中读取的数据<BR>Line=br.readLine();//从文件中继续读取一行数据<BR>}<BR>br.close();//关闭BufferedReader对象<BR>fr.close();//关闭文件<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR><BR>略过文件中的字符不读取<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;略过字节不读取&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath(".");<BR>FileReader&nbsp;fr=new&nbsp;FileReader(path&nbsp;+&nbsp;"\\ReadData.txt");<BR>fr.skip(2);//跳过2个字节<BR>int&nbsp;c=fr.read();//读取一个字节<BR>while(c!=-1){<BR>out.print((char)c);<BR>c=fr.read();<BR>}<BR>fr.close();<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR><BR>将数据写入文件<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;将数据写入文件&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath(".");<BR>FileWriter&nbsp;fw=new&nbsp;FileWriter(path&nbsp;+&nbsp;"\\WriteData.txt");//建立FileWriter对象，并实例化fw<BR>//将字符串写入文件<BR>fw.write("大家好！");<BR>fw.write("本书是《JSP编程技巧》");<BR>fw.write("请多多指教！");<BR>fw.write("email:stride@sina.com");<BR>fw.close();<BR><BR>FileReader&nbsp;fr=new&nbsp;FileReader(path&nbsp;+&nbsp;"\\WriteData.txt");<BR>BufferedReader&nbsp;br=new&nbsp;BufferedReader(fr);//建立BufferedReader对象，并实例化为br<BR>String&nbsp;Line=br.readLine();<BR>//读取一行数据<BR>out.println(Line&nbsp;+&nbsp;"&lt;br&gt;");<BR>br.close();//关闭BufferedReader对象<BR>fr.close();<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR><BR>将写入文件的数据分行<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;将写入文件的数据分行&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath(".");<BR>FileWriter&nbsp;fw=new&nbsp;FileWriter(path&nbsp;+&nbsp;"\\WriteData.txt");<BR>BufferedWriter&nbsp;bw=new&nbsp;BufferedWriter(fw);<BR>bw.write("大家好！");<BR>bw.write("本书是《JSP编程技巧》。");<BR>bw.newLine();//断行<BR>bw.write("请多多指教！");<BR>bw.newLine();//断行<BR>bw.write("email:&nbsp;stride@sina.com");<BR>bw.flush();//将数据更新至文件<BR>fw.close();//关闭文件流<BR>out.println("写入文件内容为：&lt;br&gt;");<BR>FileReader&nbsp;fr=new&nbsp;FileReader(path&nbsp;+&nbsp;"\\WriteData.txt");<BR>BufferedReader&nbsp;br=new&nbsp;BufferedReader(fr);<BR>String&nbsp;Line=br.readLine();//读取一行数据<BR>while(Line!=null){<BR>out.println(Line&nbsp;+&nbsp;"&lt;br&gt;");<BR>Line=br.readLine();<BR>}<BR>fr.close();<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR>如何将数据追加写入到文件<BR>&lt;%@&nbsp;page&nbsp;contentType="text/html;charset=gb2312"%&gt;<BR>&lt;%@&nbsp;page&nbsp;import="java.io.*"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;将写入文件的数据分行&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;%<BR>String&nbsp;path=request.getRealPath(".");<BR>RandomAccessFile&nbsp;rf=new&nbsp;RandomAccessFile(path&nbsp;+&nbsp;"\\WriteData.txt","rw");//定义一个类RandomAccessFile的对象，并实例化<BR>rf.seek(rf.length());//将指针移动到文件末尾<BR>rf.writeBytes("\nAppend&nbsp;a&nbsp;line&nbsp;to&nbsp;the&nbsp;file!");<BR>rf.close();//关闭文件流<BR>out.println("写入文件内容为：&lt;br&gt;");<BR>FileReader&nbsp;fr=new&nbsp;FileReader(path&nbsp;+&nbsp;"\\WriteData.txt");<BR>BufferedReader&nbsp;br=new&nbsp;BufferedReader(fr);//读取文件的BufferedRead对象<BR>String&nbsp;Line=br.readLine();<BR>while(Line!=null){<BR>out.println(Line&nbsp;+&nbsp;"&lt;br&gt;");<BR>Line=br.readLine();<BR>}<BR>fr.close();//关闭文件<BR>%&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;<BR></P>]]></description>
</item><item>
<title><![CDATA[url中传中文]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=12739</link>
<author>jjs_love</author>
<pubDate>2006/3/21 11:49:47</pubDate>
<description><![CDATA[
<P><A href='mailto:%@ page language="java" contentType="text/html;charset=GBK"%><%@ page import="java.sql.*, java.net.*,java.io.*,java.util.* " %>'>　&lt;%@ page language="java" contentType="text/html;charset=GBK"%&gt;<BR>&lt;%@ page import="java.sql.*, java.net.*,java.io.*,java.util.* " %&gt;</A></P>
<P>&lt;%&nbsp;&nbsp; request.getLocale().setDefault(Locale.CHINA); <BR>&nbsp;&nbsp;String s="中国人";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;{&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = URLEncoder.encode(s,"UTF-8");<BR>%&gt;&nbsp;&nbsp; <BR>&nbsp;&lt;a href="b.jsp?s=&lt;%=s%&gt;"&gt;sdf&lt;/a&gt;<BR>&lt;% } catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;out.print(e.getMessage());<BR>&nbsp;&nbsp; }</P>
<P>%&gt;</P>
<P>如果是用js来处理传中文的问题可以采用如下方法</P>
<P>var title="传中文";&nbsp;</P>
<P>var act_str="&lt;%=request.getContextPath()%&gt;/tzwZlTj.do?method=fzTjFx&amp;title="+encodeURIComponent(title);</P>]]></description>
</item><item>
<title><![CDATA[ORACLE  中ID自动增加字段]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=12561</link>
<author>jjs_love</author>
<pubDate>2006/3/15 9:14:17</pubDate>
<description><![CDATA[<P><A>　自动增加字</A><BR>&nbsp;CREATE TABLE t_topic (<BR>&nbsp; topicId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(18,0)&nbsp;&nbsp; NOT NULL&nbsp; ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;-- 主题ID<BR>&nbsp;topicTitle&nbsp;&nbsp; VARCHAR2(100)&nbsp; NOT NULL ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;-- 主题名<BR>&nbsp;topicContent&nbsp;varchar2(2000) NOT NULL ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;-- 主题内容<BR>&nbsp;topicAuthor&nbsp;&nbsp; VARCHAR2(20)&nbsp;&nbsp; NOT NULL ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 主题发表者(论坛帖子发表人)<BR>&nbsp;topicBoaId&nbsp;&nbsp; NUMBER(1,0)&nbsp;&nbsp;&nbsp; NOT NULL REFERENCES t_board(boaId) ,&nbsp;-- 主题属于论坛哪个模块<BR>&nbsp;topicHits&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(18,0)&nbsp;&nbsp; DEFAULT '0' ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 主题点击数<BR>&nbsp;topicElite&nbsp;&nbsp; NUMBER(1,0)&nbsp;&nbsp;&nbsp; DEFAULT '0' ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 是否为精华帖子 0、否 1、是<BR>&nbsp;topicTop&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(1,0)&nbsp;&nbsp;&nbsp; DEFAULT '0' ,&nbsp;&nbsp;&nbsp;-- 是否置顶主题 0、否 1、是<BR>&nbsp;topicLock&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(1,0)&nbsp;&nbsp;&nbsp; DEFAULT '0' ,&nbsp;&nbsp;&nbsp;-- 是否禁止回复 0、否 1、是<BR>&nbsp;topicDel&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(1,0)&nbsp;&nbsp;&nbsp; DEFAULT '0' ,&nbsp;&nbsp;&nbsp;-- 是否删除回复 0、否 1、是(特殊用途,管理员文章不让跟贴)<BR>&nbsp;topicPubTime&nbsp;DATE NOT NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 主题被创建时间<BR>&nbsp; topicReNum&nbsp;&nbsp; NUMBER(18,0)&nbsp;&nbsp; DEFAULT '0' ,&nbsp;&nbsp;&nbsp;&nbsp;-- 回复主题的总数<BR>&nbsp;topicReUser&nbsp;&nbsp; VARCHAR2(20)&nbsp;&nbsp; DEFAULT '' ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 最后回复的作者<BR>&nbsp;topicReTime&nbsp;&nbsp; DATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;-- 最后回复的时间<BR>&nbsp;topicIp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(15) DEFAULT '' ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 发表人的IP<BR>&nbsp;PRIMARY KEY (topicId)<BR>);</P>
<P>Create Sequence t_topic_Id_sequence&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --主题序列<BR>INCREMENT BY 1<BR>START WITH 1<BR>NOMAXVALUE<BR>NOCYCLE;</P>
<P>&nbsp;</P>
<P>CREATE OR REPLACE TRIGGER t_topic_Id_trigger //触发器<BR>BEFORE INSERT<BR>ON t_topic<BR>FOR EACH ROW<BR>DECLARE<BR>newId NUMBER(18,0);<BR>BEGIN<BR>SELECT t_topic_Id_sequence.nextval INTO newId FROM dual;<BR>:new.topicId := newId;<BR>END;</P>]]></description>
</item><item>
<title><![CDATA[MYSQL到ORACLE程序迁移的注意事项]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=12493</link>
<author>jjs_love</author>
<pubDate>2006/3/13 14:04:09</pubDate>
<description><![CDATA[
<P><A>　MYSQL到ORACLE程序迁移的注意事项&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </A></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P>
<P><BR>&nbsp;&nbsp;&nbsp; 有很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求，随着应用用户的增多，<BR>数据量的增加，MYSQL渐渐地出现不堪重负的情况：连接很慢甚至宕机，于是就有把数据从MYSQL迁到<BR>ORACLE的需求，应用程序也要相应做一些修改。本人总结出以下几点注意事项，希望对大家有所帮助。</P>
<P>1． 自动增长的数据类型处理<BR>&nbsp;&nbsp;&nbsp; MYSQL有自动增长的数据类型，插入记录时不用操作此字段，会自动获得数据值。<BR>ORACLE没有自动增长的数据类型，需要建立一个自动增长的序列号，插入记录时要把序列号的下一个<BR>值赋于此字段。</P>
<P>&nbsp;&nbsp;&nbsp; CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1&nbsp; START&nbsp; WITH&nbsp; 1 <BR>MAXVALUE&nbsp; 99999&nbsp; CYCLE&nbsp; NOCACHE;<BR>&nbsp;&nbsp;&nbsp; 其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999<BR>&nbsp;&nbsp;&nbsp; INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL</P>
<P>2. 单引号的处理<BR>&nbsp;&nbsp;&nbsp; MYSQL里可以用双引号包起字符串，ORACLE里只可以用单引号包起字符串。在插入和修改字符串<BR>前必须做单引号的替换：把所有出现的一个单引号替换成两个单引号。</P>
<P>3.&nbsp; 翻页的SQL语句的处理<BR>&nbsp;&nbsp;&nbsp; MYSQL处理翻页的SQL语句比较简单，用LIMIT 开始位置, 记录个数；PHP里还可以用SEEK定位到结果<BR>集的位置。<BR>&nbsp;&nbsp;&nbsp; ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能<BR>用ROWNUM&lt;100, 不能用ROWNUM&gt;80。<BR>&nbsp;&nbsp;&nbsp; 以下是经过分析后较好的两种ORACLE翻页SQL语句( ID是唯一关键字的字段名 )：<BR>&nbsp;&nbsp;&nbsp; 语句一：<BR>&nbsp;SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT<BR>&nbsp;ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW &gt; 80 AND <BR>&nbsp;NUMROW &lt; 100 ) ORDER BY 条件3; <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp; 语句二：<BR>&nbsp;SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM <BR>TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW &gt; 80 AND NUMROW &lt; 100 ) ORDER BY 条件3;</P>
<P>4． 长字符串的处理<BR>&nbsp;&nbsp;&nbsp; 长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于<BR>4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型，方法借用ORACLE里自带的DBMS_LOB程序<BR>包。插入修改记录前一定要做进行非空和长度判断，不能为空的字段值和超出长度字段值都应该提出警告, <BR>返回上次操作。</P>
<P>5.&nbsp; 日期字段的处理<BR>&nbsp;&nbsp;&nbsp; MYSQL日期字段分DATE和TIME两种，ORACLE日期字段只有DATE，包含年月日时分秒信息，用当前数据库<BR>的系统时间为SYSDATE, 精确到秒，或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)<BR>年-月-日 24小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式, 可以参看<BR>ORACLE DOC.<BR>&nbsp;&nbsp;&nbsp; 日期型字段转换成字符串函数TO_CHAR(‘2001-08-01’,’YYYY-MM-DD HH24:MI:SS’)</P>
<P>&nbsp;&nbsp;&nbsp; 日期字段的数学运算公式有很大的不同。<BR>&nbsp;&nbsp; &nbsp;MYSQL找到离当前时间7天用 <BR>&nbsp;DATE_FIELD_NAME &gt; SUBDATE（（NOW（），INTERVAL 7 DAY）<BR>&nbsp;&nbsp;ORACLE找到离当前时间7天用<BR>&nbsp;DATE_FIELD_NAME &gt;SYSDATE - 7;</P>
<P>6.&nbsp; 空字符的处理<BR>&nbsp;&nbsp;&nbsp; MYSQL的非空字段也有空的内容，ORACLE里定义了非空字段就不容许有空的内容。<BR>&nbsp;&nbsp;&nbsp; 按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判<BR>断，如果为NULL或空字符，需要把它改成一个空格的字符串。</P>
<P>7. 字符串的模糊比较<BR>&nbsp;&nbsp; MYSQL里用&nbsp;&nbsp;字段名 like '%字符串%'<BR>&nbsp;&nbsp; ORACLE里也可以用&nbsp;字段名 like '%字符串%'&nbsp;&nbsp;但这种方法不能使用索引, 速度不快<BR>&nbsp;&nbsp; 用字符串比较函数&nbsp;&nbsp;instr(字段名,'字符串')&gt;0&nbsp;&nbsp;会得到更精确的查找结果&nbsp;</P>
<P>8. 程序和函数里，操作数据库的工作完成后请注意结果集和指针的释放。<BR></P>]]></description>
</item><item>
<title><![CDATA[取得程序的物理路径]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=jjs_love&amp;id=12490</link>
<author>jjs_love</author>
<pubDate>2006/3/13 12:59:55</pubDate>
<description><![CDATA[
<P>取得程序的物理路径</P>
<P>&nbsp;private String getClassPath()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; String strClassName = getClass().getName();<BR>&nbsp;&nbsp;&nbsp; String strPackageName = "";<BR>&nbsp;&nbsp;&nbsp; if(getClass().getPackage() != null)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; strPackageName = getClass().getPackage().getName();<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; String strClassFileName = "";<BR>&nbsp;&nbsp;&nbsp; if(!"".equals(strPackageName))<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; strClassFileName = strClassName.substring(strPackageName.length() + 1,strClassName.length());<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; strClassFileName = strClassName;<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; URL url = null;<BR>&nbsp;&nbsp;&nbsp; url = getClass().getResource(strClassFileName + ".class");<BR>&nbsp;&nbsp;&nbsp; String strURL = url.toString();<BR>&nbsp;&nbsp;&nbsp; strURL = strURL.substring(strURL.indexOf('/') + 1,strURL.indexOf("/WEB-INF/"));<BR>&nbsp;&nbsp;&nbsp; strURL = strURL.replaceAll("%20"," "); //防止路径中存在空格<BR>&nbsp;&nbsp;&nbsp; return strURL;<BR>&nbsp;&nbsp;&nbsp; }</P>]]></description>
</item>
</channel>
</rss>