﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-waysun一路阳光-随笔分类-AJAX</title><link>http://www.blogjava.net/1504/category/32242.html</link><description>不轻易服输,不轻言放弃.--心是梦的舞台，心有多大，舞台有多大。踏踏实实做事，认认真真做人。</description><language>zh-cn</language><lastBuildDate>Mon, 22 Mar 2010 10:51:48 GMT</lastBuildDate><pubDate>Mon, 22 Mar 2010 10:51:48 GMT</pubDate><ttl>60</ttl><item><title>AJAX和Struts的action交互使用[原创总结]</title><link>http://www.blogjava.net/1504/archive/2009/02/22/256094.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Sun, 22 Feb 2009 11:34:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2009/02/22/256094.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/256094.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2009/02/22/256094.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/256094.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/256094.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt;">1.请求页面的JS,客户端实现<br />
&lt;script type="text/javascript"><br />
&#160;var flagvalue=0;<br />
&#160;var rest="";<br />
&#160;var resta="";<br />
&#160;//实现AJAX验证<br />
&#160;var http_request = false;<br />
&#160;var infoForm_flag=false;<br />
&#160;var lotId="";<br />
function Save()<br />
{<br />
&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; var infoForm=document.projectSetForm;<br />
&#160;&#160;&#160;&#160;&#160; infoForm_flag=infoForm;<br />
&#160;&#160;&#160;&#160;&#160; lotId=infoForm.lotId.value;<br />
&#160;&#160;&#160;&#160;&#160; //表名称<br />
&#160;&#160;&#160;&#160;&#160; var dc = infoForm.tablename.value;<br />
&#160;&#160;&#160;&#160;&#160; if(dc==""||dc==null){<br />
&#160;&#160;&#160;&#160;&#160;&#160; alert("表名称不能为空!");<br />
&#160;&#160;&#160;&#160;&#160;&#160; infoForm.tablename.focus(); <br />
&#160;&#160;&#160;&#160;&#160;&#160; infoForm.tablename.select();<br />
&#160;&#160;&#160;&#160;&#160;&#160; return false;<br />
&#160;}<br />
function send_request(url)<br />
&#160; {//初始化、指定处理函数、发送请求的函数<br />
&#160;&#160;&#160; http_request = false;<br />
&#160;&#160;&#160; //开始初始化XMLHttpRequest对象<br />
&#160;&#160;&#160; if(window.XMLHttpRequest) <br />
&#160;&#160;&#160; { //Mozilla 浏览器<br />
&#160;&#160;&#160;&#160;&#160; http_request = new XMLHttpRequest();<br />
&#160;&#160;&#160;&#160;&#160; if (http_request.overrideMimeType) <br />
&#160;&#160;&#160;&#160;&#160; {//设置MiME类别<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; http_request.overrideMimeType('text/xml');<br />
&#160;&#160;&#160;&#160;&#160; }<br />
&#160;&#160;&#160; }<br />
&#160;&#160;&#160; else if (window.ActiveXObject) <br />
&#160;&#160;&#160; { // IE浏览器<br />
&#160;&#160;&#160;&#160;&#160; try <br />
&#160;&#160;&#160;&#160;&#160; {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; http_request = new ActiveXObject("Msxml2.XMLHTTP");<br />
&#160;&#160;&#160;&#160;&#160; }<br />
&#160;&#160;&#160;&#160;&#160;&#160; catch (e) <br />
&#160;&#160;&#160;&#160;&#160; {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; try <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; http_request = new ActiveXObject("Microsoft.XMLHTTP");<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch (e) <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />
&#160;&#160;&#160;&#160;&#160; }<br />
&#160;&#160;&#160; }<br />
&#160;&#160;&#160; if (!http_request) { // 异常，创建对象实例失败<br />
&#160;&#160;&#160;&#160; window.alert("不能创建XMLHttpRequest对象实例.");<br />
&#160;&#160;&#160;&#160; return false;<br />
&#160;&#160;&#160; }<br />
&#160;&#160;&#160; http_request.onreadystatechange = processRequest;<br />
&#160;&#160;&#160; // 确定发送请求的方式和URL以及是否同步执行下段代码<br />
&#160;&#160;&#160; http_request.open("GET", url, true);<br />
&#160;&#160;&#160; http_request.send(null);<br />
&#160; }<br />
&#160;&#160;&#160;&#160; //处理返回信息的函数<br />
&#160;&#160;&#160;&#160; function processRequest() <br />
&#160;&#160;&#160;&#160; {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (http_request.readyState == 4) <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //判断对象状态<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (http_request.status == 200) <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //信息已经成功返回，开始处理信息<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var str=http_request.responseText;//获得从服务器返回的文本信息<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if(str=="no")<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; alert("您选择了模型分属不同的模板,请选择同一模板对应是模型!");<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //return false;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; infoForm_flag.action="projectSet.do?do=add&amp;lotId="+lotId;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; infoForm_flag.submit();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; infoForm_flag.action="projectSet.do?do=creattable&amp;save=-1";<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; infoForm_flag.submit();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } else <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //页面不正常<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; alert("您所请求的页面有异常。");<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />
&#160;&#160;&#160;&#160; }<br />
&#160; function userCheck() <br />
&#160; {<br />
&#160;&#160;&#160; send_request('projectSet.do?do=check&amp;rest='+rest); <br />
&#160; }<br />
&lt;/script><br />
2.ProjectSetAction.java</span>
<p><span style="font-size: 10pt;">package com.gpdi.softevaluate.action;</span></p>
<p><span style="font-size: 10pt;">import java.io.PrintWriter;<br />
import java.text.SimpleDateFormat;<br />
import java.util.ArrayList;<br />
import java.util.Calendar;<br />
import java.util.HashSet;<br />
import java.util.Map;<br />
import java.util.Set;</span></p>
<p><span style="font-size: 10pt;">import java.util.Iterator;<br />
import java.util.List;</span></p>
<p><span style="font-size: 10pt;">import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;</span></p>
<p><span style="font-size: 10pt;">public class ProjectSetAction extends DispatchAction <br />
{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></p>
<p><span style="font-size: 10pt;">/**<br />
&#160; * &lt;p>模板验证&lt;/p><br />
&#160; * @param mapping<br />
&#160; * @param form<br />
&#160; * @param request<br />
&#160; * @param response<br />
&#160; * @return<br />
&#160; * @throws Exception<br />
&#160; */<br />
&#160;public ActionForward check(ActionMapping mapping, ActionForm
form,HttpServletRequest request, HttpServletResponse response)throws
Exception<br />
&#160;{<br />
&#160;&#160; String rest="";<br />
&#160;&#160; String lotId="";<br />
&#160;&#160; String retn="";<br />
&#160;&#160; String flag="";<br />
&#160;&#160; CommDaoFactory mgObj = new CommDaoFactory();<br />
&#160;&#160; try<br />
&#160;&#160; {<br />
&#160;&#160;&#160;&#160;&#160;&#160; rest=request.getParameter("rest");<br />
&#160;&#160;&#160;&#160;&#160;&#160; lotId=request.getParameter("lotId");<br />
&#160;&#160; }<br />
&#160;&#160; catch(Exception e)<br />
&#160;&#160; {<br />
&#160;&#160;&#160; <br />
&#160;&#160; }<br />
if(!rest.equals("0")||!rest.equals("")||rest!=null)<br />
&#160;{<br />
&#160;&#160;&#160;&#160; flag="no";<br />
}<br />
else<br />
{<br />
&#160;&#160;&#160;&#160;&#160; flag="ok";</span></p>
<p><span style="font-size: 10pt;">}<br />
&#160;&#160;&#160;&#160;&#160;&#160; PrintWriter out=response.getWriter();<br />
//服务器返回信息<br />
&#160;&#160;&#160;&#160;&#160;&#160; out.write(flag);<br />
&#160;&#160;&#160;&#160;&#160;&#160; out.close();<br />
&#160;&#160;&#160;&#160; //读取本Action所有的请求参数，将path重新构造，加上请求参数</span></p>
<p><span style="font-size: 10pt;">&#160;&#160;&#160;&#160; //ActionForward forward= new ActionForward("project/projectSet.do?do=add&amp;lotId=6");<br />
&#160;&#160;&#160;&#160; //forward.setRedirect(true);<br />
&#160;&#160;&#160;&#160;&#160; //传参数后返回<br />
&#160;&#160;&#160;&#160; //return forward;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160; return mapping.findForward(null);<br />
&#160;<br />
&#160;}<br />
</span><font size="3"><font style="font-size: 10pt;" size="3">public
ActionForward creattable(ActionMapping mapping, ActionForm
form,HttpServletRequest request, HttpServletResponse response)throws
Exception<br />
{<br />
&#160;&#160;&#160;&#160; //实现功能代码<br />
return mapping.findForward("create");<br />
}</font><br />
<span style="font-size: 10pt;">}<br />
3.struts.config.xml<br />
<font style="font-size: 10pt;" size="3">&#160;&lt;action attribute="projectSetForm" name="projectSetForm"<br />
&#160;&#160;&#160;&#160;parameter="do" path="/project/projectSet" scope="request"<br />
&#160;&#160;&#160;&#160;&#160;&#160; type="com.gpdi.softevaluate.action.ProjectSetAction" validate="false"><br />
&#160;&#160;&#160;&lt;forward name="list" path="/project/viewProject.jsp" /><br />
&#160;&#160;&#160;&lt;forward name="add" path="/project/addProject.jsp" /><br />
&#160;&#160;&#160;&lt;forward name="create" path="/project/createTable.jsp" /><br />
&#160;&#160;&lt;/action></font></span></font></p>
<img src ="http://www.blogjava.net/1504/aggbug/256094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2009-02-22 19:34 <a href="http://www.blogjava.net/1504/archive/2009/02/22/256094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js实现根据浏览器类型自动调用不同CSS文件[收藏]</title><link>http://www.blogjava.net/1504/archive/2008/11/27/242936.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Thu, 27 Nov 2008 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/11/27/242936.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/242936.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/11/27/242936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/242936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/242936.html</trackback:ping><description><![CDATA[<span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">script&nbsp;</span><span style="color: rgb(255,0,0)">type</span><span style="color: rgb(0,0,255)">="text/javascript"</span><span style="color: rgb(0,0,255)">&gt;</span><span id="_109_575_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">...</span><span id="_109_575_Open_Text"><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">...<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&lt;!--</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)"><br />
<img id="_172_229_Open_Image" onclick="this.style.display='none'; document.getElementById('_172_229_Open_Text').style.display='none'; document.getElementById('_172_229_Closed_Image').style.display='inline'; document.getElementById('_172_229_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_172_229_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_172_229_Closed_Text').style.display='none'; document.getElementById('_172_229_Open_Image').style.display='inline'; document.getElementById('_172_229_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: rgb(0,0,255); background-color: rgb(245,245,245)">if</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;(window.navigator.userAgent.indexOf(</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">MSIE</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">)</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&gt;=</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">1</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">)</span><span id="_172_229_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">...</span><span id="_172_229_Open_Text"><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)">//</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)">如果浏览器为IE</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;&nbsp;&nbsp;&nbsp;setActiveStyleSheet(</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">default.css</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">);<br />
<img id="_239_457_Open_Image" onclick="this.style.display='none'; document.getElementById('_239_457_Open_Text').style.display='none'; document.getElementById('_239_457_Closed_Image').style.display='inline'; document.getElementById('_239_457_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_239_457_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_239_457_Closed_Text').style.display='none'; document.getElementById('_239_457_Open_Image').style.display='inline'; document.getElementById('_239_457_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />}</span></span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;</span><span style="color: rgb(0,0,255); background-color: rgb(245,245,245)">else</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;...</span><span id="_239_457_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">...</span><span id="_239_457_Open_Text"><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">{<br />
<img id="_302_377_Open_Image" onclick="this.style.display='none'; document.getElementById('_302_377_Open_Text').style.display='none'; document.getElementById('_302_377_Closed_Image').style.display='inline'; document.getElementById('_302_377_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_302_377_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_302_377_Closed_Text').style.display='none'; document.getElementById('_302_377_Open_Image').style.display='inline'; document.getElementById('_302_377_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255); background-color: rgb(245,245,245)">if</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;(window.navigator.userAgent.indexOf(</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">Firefox</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">)</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&gt;=</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">1</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">)</span><span id="_302_377_Open_Text"><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)">//</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)">如果浏览器为Firefox</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setActiveStyleSheet(</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">default2.css</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">);<br />
<img id="_387_455_Open_Image" onclick="this.style.display='none'; document.getElementById('_387_455_Open_Text').style.display='none'; document.getElementById('_387_455_Closed_Image').style.display='inline'; document.getElementById('_387_455_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_387_455_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_387_455_Closed_Text').style.display='none'; document.getElementById('_387_455_Open_Image').style.display='inline'; document.getElementById('_387_455_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;</span><span style="color: rgb(0,0,255); background-color: rgb(245,245,245)">else</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;...</span><span id="_387_455_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">...</span><span id="_387_455_Open_Text"><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)">//</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)">如果浏览器为其他</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setActiveStyleSheet(</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">newsky.css</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="_498_568_Open_Image" onclick="this.style.display='none'; document.getElementById('_498_568_Open_Text').style.display='none'; document.getElementById('_498_568_Closed_Image').style.display='inline'; document.getElementById('_498_568_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_498_568_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_498_568_Closed_Text').style.display='none'; document.getElementById('_498_568_Open_Image').style.display='inline'; document.getElementById('_498_568_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: rgb(0,0,255); background-color: rgb(245,245,245)">function</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;setActiveStyleSheet(title)...</span><span id="_498_568_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">...</span><span id="_498_568_Open_Text"><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">{&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;document.getElementsByTagName(</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">link</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">)[</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">0</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">].href</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">=</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">style/</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">+</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">title;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)">//</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)">--&gt;</span><span style="color: rgb(0,128,0); background-color: rgb(245,245,245)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span></span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">script</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />以上脚本放在</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">head</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">之前即可.</span><br />
<span style="color: rgb(153,51,0)">CSS实现根据浏览器类型自动调用不同CSS文件。放在元素head中<br />
</span>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">link&nbsp;</span><span style="color: rgb(255,0,0)">type</span><span style="color: rgb(0,0,255)">="text/css"</span><span style="color: rgb(255,0,0)">&nbsp;href</span><span style="color: rgb(0,0,255)">="MasterPage.css"</span><span style="color: rgb(255,0,0)">&nbsp;media</span><span style="color: rgb(0,0,255)">="all"</span><span style="color: rgb(255,0,0)">&nbsp;rel</span><span style="color: rgb(0,0,255)">="Stylesheet"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">[if&nbsp;lte&nbsp;IE&nbsp;6&nbsp;]&gt;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&lt;link&nbsp;rel="Stylesheet"&nbsp;type="text/css"&nbsp;href="css/iebugs/ie6.css"&nbsp;/&gt;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&lt;![endif]</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">[if&nbsp;IE&nbsp;7&nbsp;]&gt;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&lt;link&nbsp;rel="Stylesheet"&nbsp;type="text/css"&nbsp;href="css/iebugs/ie7.css"&nbsp;/&gt;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&lt;![endif]</span><span style="color: rgb(0,128,0)">--&gt;</span></div>
</div>
<br />
<img src ="http://www.blogjava.net/1504/aggbug/242936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-11-27 10:16 <a href="http://www.blogjava.net/1504/archive/2008/11/27/242936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS时间格式的判断和大小的判断【总结备用】</title><link>http://www.blogjava.net/1504/archive/2008/11/14/240540.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Fri, 14 Nov 2008 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/11/14/240540.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/240540.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/11/14/240540.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/240540.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/240540.html</trackback:ping><description><![CDATA[1、判断时间格式<br />
<p>&#160;function&#160;&#160; verifyDate(tmpDateValue){&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; var&#160;&#160; tmpLength&#160;&#160; =&#160;&#160; tmpDateValue.length;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; if&#160;&#160; (tmpLength&#160;&#160; ==&#160;&#160; 0||tmpLength==null)<br />
&#160;&#160;&#160;&#160;&#160; {&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;&#160; true;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; for&#160;&#160; (var&#160;&#160; i&#160;&#160; =&#160;&#160; 0;&#160;&#160; i&#160;&#160; &lt;&#160;&#160; tmpLength;i++){&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; aChar&#160;&#160; =&#160;&#160; tmpDateValue.substring(i,i+1);&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if(aChar&#160;&#160; !=&#160;&#160; "-"&#160;&#160; &amp;&amp;&#160;&#160; (aChar&#160;&#160; &lt;&#160;&#160; "0"&#160;&#160; ||&#160;&#160; aChar&#160;&#160; >&#160;&#160; "9"))&#160;&#160; {&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;&#160; false;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; if&#160;&#160; ((tmpLength&#160;&#160; &lt;&#160;&#160; 8&#160;&#160; ||&#160;&#160; tmpLength&#160;&#160; >&#160;&#160; 10)&#160;&#160; &amp;&amp;&#160;&#160; tmpLength&#160;&#160; !=&#160;&#160; 0)&#160;&#160; {&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;&#160; false;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; for&#160;&#160; (var&#160;&#160; j=&#160;&#160; 0;&#160;&#160; j&#160;&#160; &lt;&#160;&#160; 4;j++){&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; aChar&#160;&#160; =&#160;&#160; tmpDateValue.substring(j,j+1);&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if(aChar&#160;&#160; &lt;&#160;&#160; "0"&#160;&#160; ||&#160;&#160; aChar&#160;&#160; >&#160;&#160; "9")&#160;&#160; {&#160;&#160; <br />
&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;&#160; false;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; if&#160;&#160; (tmpDateValue.substring(4,5)&#160;&#160; !=&#160;&#160; "-"&#160;&#160; ||&#160;&#160; tmpDateValue.substring(5,6)&#160;&#160; ==&#160;&#160; "-"){&#160;&#160; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;&#160; false;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; if&#160;&#160; (tmpLength&#160;&#160; ==&#160;&#160; 8){&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if&#160;&#160; (tmpDateValue.substring(6,7)&#160;&#160; !=&#160;&#160; "-"&#160;&#160; ||&#160;&#160; tmpDateValue.substring(7,8)&#160;&#160; ==&#160;&#160; "-"&#160;&#160; ){&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;&#160; false;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; if&#160;&#160; (tmpLength&#160;&#160; ==&#160;&#160; 9){&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if&#160;&#160; (tmpDateValue.substring(8,9)&#160;&#160; ==&#160;&#160; "-"&#160;&#160; ){&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;&#160; false;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; if&#160;&#160; (tmpLength&#160;&#160; ==&#160;&#160; 10){&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if&#160;&#160; (tmpDateValue.substring(7,8)&#160;&#160; !=&#160;&#160; "-"&#160;&#160; ||&#160;&#160; tmpDateValue.substring(6,7)&#160;&#160; ==&#160;&#160; "-"&#160;&#160; ||&#160;&#160; tmpDateValue.substring(8,9)&#160;&#160; ==&#160;&#160; "-"&#160;&#160; ||&#160;&#160; tmpDateValue.substring(9,10)&#160;&#160; ==&#160;&#160; "-"&#160;&#160; ){&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;&#160; false;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; var&#160;&#160; count=0;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; for&#160;&#160; (var&#160;&#160; k&#160;&#160; =&#160;&#160; 0;&#160;&#160; k&#160;&#160; &lt;&#160;&#160; tmpLength;k++){&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; aChar&#160;&#160; =&#160;&#160; tmpDateValue.substring(k,k+1);&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if(aChar&#160;&#160; ==&#160;&#160; "-")&#160;&#160; {&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; count++;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; if&#160;&#160; (count!=2){&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;&#160; false;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; }&#160;&#160; <br />
&#160;&#160;&#160;&#160;&#160; return&#160;&#160; true;&#160;&#160; <br />
&#160; }</p>
2、判断时间大小<br />
&#160;&#160;&#160;&#160; var&#160; tmpBeginTime = new Date(start_time.replace(/-/g,"\/"));<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; var&#160; tmpEndTime = new Date(end_time.replace(/-/g,"\/"));<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (tmpBeginTime>tmpEndTime)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; alert("开始时间不能大于结束时间!");<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return false;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />
<img src ="http://www.blogjava.net/1504/aggbug/240540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-11-14 15:18 <a href="http://www.blogjava.net/1504/archive/2008/11/14/240540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>异步加载树1【总结】</title><link>http://www.blogjava.net/1504/archive/2008/10/30/237613.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Thu, 30 Oct 2008 07:11:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/10/30/237613.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/237613.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/10/30/237613.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/237613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/237613.html</trackback:ping><description><![CDATA[1.效果图如下<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/1504/menu.jpg" border="0" /><br />
2.manageMenu.jsp菜单显示页面<br />
<p>&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br />
&lt;%<br />
String path = request.getContextPath();<br />
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";<br />
%&gt;</p>
<p>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />
&lt;html&gt;<br />
&nbsp; &lt;head&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;base href="&lt;%=basePath%&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;My JSP 'ManageMenu.jsp' starting page&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&lt;meta http-equiv="pragma" content="no-cache"&gt;<br />
&nbsp;&lt;meta http-equiv="cache-control" content="no-cache"&gt;<br />
&nbsp;&lt;meta http-equiv="expires" content="0"&gt;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&gt;<br />
&nbsp;&lt;meta http-equiv="description" content="This is my page"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;link rel="STYLESHEET" type="text/css" href="css/dhtmlXTree.css"&gt;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;script src="js/dhtmlXCommon.js"&gt;&lt;/script&gt;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;script src="js/dhtmlXTree.js"&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript" src="&lt;%=request.getContextPath()%&gt;/dwr/engine.js"&gt;&lt;/script&gt;<br />
&nbsp;&lt;script type="text/javascript" src="&lt;%=request.getContextPath()%&gt;/dwr/util.js"&gt;&lt;/script&gt;<br />
&nbsp;&lt;script type='text/javascript' src='&lt;%=request.getContextPath()%&gt;/dwr/interface/service.js'&gt; &lt;/script&gt;<br />
&lt;style type="text/css"&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; .input<br />
&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width:300px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height:20px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; border:solid 0px;<br />
&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; .input1<br />
&nbsp;&nbsp; {&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width:70px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height:20px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; border:solid 0px;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; .input2<br />
&nbsp;&nbsp; {&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width:300px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height:20px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; border:solid 1px;<br />
&nbsp;&nbsp; }<br />
&lt;/style&gt;<br />
&lt;script type="text/javascript"&gt;<br />
var oPopup = window.createPopup();<br />
var array_info;<br />
function showmenu(height)<br />
{<br />
&nbsp;&nbsp;&nbsp; var lefter2 = event.clientY+12;<br />
&nbsp;&nbsp;&nbsp; var topper2 = event.clientX+10;<br />
&nbsp;&nbsp;&nbsp; var height2=file_menu.clientHeight;<br />
&nbsp;&nbsp;&nbsp; oPopup.document.body.innerHTML = oContextHTML.innerHTML+"&lt;input type='hidden' id='file_id' value='"+event.srcElement.id+"' name='file_id'&gt;"; <br />
&nbsp;&nbsp;&nbsp; oPopup.show(topper2, lefter2, 150,height,this_win);<br />
}</p>
<p>function viewRight()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp; var id=tree.getSelectedItemId();//被选中的节点<br />
&nbsp;&nbsp;&nbsp; //tree.insertNewNext(id,'1',"FFTT",viewRight,"tombs_mag.gif","magazines_open.gif","magazines_close.gif","回家","SELECT");<br />
&nbsp;&nbsp;&nbsp; if(id!="0_0_-1")//当不是根菜单时<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //alert(":::"+array_info[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp; chs&nbsp;&nbsp; =&nbsp;&nbsp; new&nbsp;&nbsp; Array();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chs&nbsp;&nbsp; =&nbsp;&nbsp; id.split("_");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var id=chs[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var ids=chs[1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var v=array_info[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var height=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var adds=document.getElementById("add");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var edits=document.getElementById("edit");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var deletes=document.getElementById("delete");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var st_add="";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var st_edit="";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var st_delete="";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var dis_add="";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var dis_edit="";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var dis_delete="";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ids==-1)//一级目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height=75;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st_add="&lt;SPAN ONCLICK=\"parent.add('"+chs[2]+"')\"&gt;新增节点（&lt;u&gt;A&lt;/u&gt;dd）&lt;/SPAN&gt; ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st_edit="&lt;SPAN ONCLICK=\"parent.edit('"+v[0]+"','"+v[1]+"','"+v[2]+"','"+v[3]+"','"+v[4]+"','"+v[5]+"')\"&gt;修改节点（&lt;u&gt;E&lt;/u&gt;dit）&lt;/SPAN&gt;&nbsp; ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st_delete=" &lt;SPAN ONCLICK=\"parent.deletes('"+id+"')\"&gt;删除节点（&lt;u&gt;D&lt;/u&gt;elete）&lt;/SPAN&gt; ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dis_add="";//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dis_edit="";//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dis_delete="";//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height=50;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st_add="";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st_edit="&lt;SPAN ONCLICK=\"parent.edit('"+v[0]+"','"+v[1]+"','"+v[2]+"','"+v[3]+"','"+v[4]+"','"+v[5]+"')\"&gt;修改节点（&lt;u&gt;E&lt;/u&gt;dit）&lt;/SPAN&gt;&nbsp; ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st_delete=" &lt;SPAN ONCLICK=\"parent.deletes('"+id+"')\"&gt;删除节点（&lt;u&gt;D&lt;/u&gt;elete）&lt;/SPAN&gt; ";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dis_add="none";//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dis_edit="";//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dis_delete="";//将设为显示</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; adds.innerHTML=st_add;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edits.innerHTML=st_edit;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deletes.innerHTML=st_delete;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adds.style.display=dis_add;//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edits.style.display=dis_edit;//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deletes.style.display=dis_delete;//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showmenu(height);</p>
<p>&nbsp;}<br />
&nbsp;else//根目录<br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp; var adds=document.getElementById("add");<br />
&nbsp;&nbsp;&nbsp;&nbsp; var edits=document.getElementById("edit");<br />
&nbsp;&nbsp;var deletes=document.getElementById("delete");<br />
&nbsp;&nbsp;&nbsp;&nbsp; adds.innerHTML="&lt;SPAN ONCLICK=\"parent.add('root')\"&gt;新增节点（&lt;u&gt;A&lt;/u&gt;dd）&lt;/SPAN&gt; ";<br />
&nbsp;&nbsp;&nbsp;&nbsp; edits.innerHTML="";<br />
&nbsp;&nbsp;&nbsp;&nbsp; deletes.innerHTML="";<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; adds.style.display="";//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp; edits.style.display="none";//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp; deletes.style.display="none";//将设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp; var height=25;<br />
&nbsp;&nbsp;&nbsp;&nbsp; showmenu(height);<br />
&nbsp;}<br />
&nbsp;<br />
}<br />
function tonclick()<br />
{<br />
&nbsp;&nbsp;&nbsp; var id=tree.getSelectedItemId();//被选中的节点<br />
&nbsp;&nbsp;&nbsp; if(id!="0_0_-1")//当不是根菜单时<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp; chs&nbsp;&nbsp; =&nbsp;&nbsp; new&nbsp;&nbsp; Array();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chs&nbsp;&nbsp; =&nbsp;&nbsp; id.split("_");<br />
&nbsp;&nbsp;&nbsp;&nbsp; service.getMenuInfo(chs[0],menuclick); <br />
&nbsp;&nbsp;&nbsp;&nbsp; var table=document.getElementById("table");//显示节点信息的表<br />
&nbsp;&nbsp;&nbsp;&nbsp; var tdshow=document.getElementById("tdshow");//显示节点信息的表<br />
&nbsp;&nbsp;&nbsp;&nbsp; var add_show=document.getElementById("add_show");<br />
&nbsp;&nbsp;&nbsp;&nbsp; tdshow.style.display="";//将表格设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp; add_show.style.display="none";//将表格设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp; table.style.display="";//将表格设为显示<br />
&nbsp;&nbsp;&nbsp;&nbsp; //alert(table_style);<br />
&nbsp;&nbsp;&nbsp;&nbsp; //tree.insertNewNext(id,'1',"FFTT",viewRight,"tombs_mag.gif","magazines_open.gif","magazines_close.gif","回家","SELECT");<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
function hander()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; var id=tree.getSelectedItemId();//被选中的节点<br />
&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; alert(id);<br />
&nbsp;&nbsp;&nbsp;&nbsp; tonclick();<br />
&nbsp;&nbsp;&nbsp;&nbsp; viewRight();<br />
}<br />
function menuclick(data)<br />
{<br />
&nbsp;&nbsp;&nbsp; array_info=data;<br />
&nbsp;&nbsp;&nbsp; var array=data[0];<br />
&nbsp;&nbsp;&nbsp; var cms_name=document.getElementById("name");//显示节点的名称<br />
&nbsp;&nbsp;&nbsp; var cms_link=document.getElementById("link");//显示节点的链接<br />
&nbsp;&nbsp;&nbsp; var cms_orders=document.getElementById("orders");//显示节点的排序号<br />
&nbsp;&nbsp;&nbsp; var cms_is_show=document.getElementById("is_show");//节点是否显示<br />
&nbsp;&nbsp;&nbsp; var cms_is_quick=document.getElementById("is_quick");//节点是否作为快速通道<br />
&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; var legend=document.getElementById("legend");//<br />
&nbsp;&nbsp;&nbsp; legend.innerHTML=array[0];<br />
&nbsp;&nbsp;&nbsp; cms_name.value=array[0];<br />
&nbsp;&nbsp;&nbsp; cms_link.value=array[1];<br />
&nbsp;&nbsp;&nbsp; cms_orders.value=array[2];<br />
&nbsp;&nbsp;&nbsp; if(array[3]==0)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cms_is_show.value="显示";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cms_is_show.value="不显示";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; if(array[4]==0)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cms_is_quick.value="是";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cms_is_quick.value="否";<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>}<br />
&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
function add(id)<br />
{<br />
&nbsp;&nbsp;&nbsp; //菜单响应添加时调用<br />
&nbsp;&nbsp;&nbsp; var add_show=document.getElementById("add_show");<br />
&nbsp;&nbsp;&nbsp; var tdshow=document.getElementById("tdshow");<br />
&nbsp;&nbsp;&nbsp; var click=document.getElementById("click");<br />
&nbsp;&nbsp;&nbsp; var add_legend=document.getElementById("add_legend");<br />
&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; var add_cms_name=document.getElementById("add_name");//显示节点的名称<br />
&nbsp;&nbsp;&nbsp; var add_cms_link=document.getElementById("add_link");//显示节点的链接<br />
&nbsp;&nbsp;&nbsp; var add_cms_orders=document.getElementById("add_orders");//显示节点的排序号<br />
&nbsp;&nbsp;&nbsp; var add_cms_is_show=document.getElementById("add_is_show");//节点是否显示<br />
&nbsp;&nbsp;&nbsp; var add_cms_is_quick=document.getElementById("add_is_quick");//节点是否作为快速通道<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; add_show.style.display="";<br />
&nbsp;&nbsp;&nbsp; tdshow.style.display="none";<br />
&nbsp;&nbsp;&nbsp; //bt.style.display="";<br />
&nbsp;&nbsp;&nbsp; //bt.value="添加节点";<br />
&nbsp;&nbsp;&nbsp; add_legend.innerHTML="添加节点";<br />
&nbsp;&nbsp;&nbsp; click.innerHTML="&lt;input type=\"button\" name=\"bt\" value=\"添加节点\"&nbsp; onclick=\"adds('"+id+"')\" id=\"bt\"&gt;";<br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp; add_cms_name.value="";<br />
&nbsp;&nbsp;&nbsp; add_cms_link.value="";<br />
&nbsp;&nbsp;&nbsp; add_cms_orders.value="";<br />
&nbsp;&nbsp;&nbsp; add_cms_is_show.value="0";<br />
&nbsp;&nbsp;&nbsp; add_cms_is_quick.value="1";</p>
<p>}<br />
&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
function edit(name,link,orders,is_show,is_quick,id)<br />
{<br />
&nbsp;&nbsp;&nbsp; //菜单响应修改时调用<br />
&nbsp;&nbsp;&nbsp; var add_show=document.getElementById("add_show");<br />
&nbsp;&nbsp;&nbsp; var tdshow=document.getElementById("tdshow");<br />
&nbsp;&nbsp;&nbsp; var click=document.getElementById("click");<br />
&nbsp;&nbsp;&nbsp; var add_legend=document.getElementById("add_legend");<br />
&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; var add_cms_name=document.getElementById("add_name");//显示节点的名称<br />
&nbsp;&nbsp;&nbsp; var add_cms_link=document.getElementById("add_link");//显示节点的链接<br />
&nbsp;&nbsp;&nbsp; var add_cms_orders=document.getElementById("add_orders");//显示节点的排序号<br />
&nbsp;&nbsp;&nbsp; var add_cms_is_show=document.getElementById("add_is_show");//节点是否显示<br />
&nbsp;&nbsp;&nbsp; var add_cms_is_quick=document.getElementById("add_is_quick");//节点是否作为快速通道</p>
<p>&nbsp;&nbsp;&nbsp; add_show.style.display="";<br />
&nbsp;&nbsp;&nbsp; tdshow.style.display="none";<br />
&nbsp;&nbsp;&nbsp; //bt.style.display="";<br />
&nbsp;&nbsp;&nbsp; //bt.value="修改节点";<br />
&nbsp;&nbsp;&nbsp; add_legend.innerHTML="修改"+name;<br />
&nbsp;&nbsp;&nbsp; click.innerHTML="&lt;input type=\"button\" name=\"bt\" value=\"修改节点\"&nbsp; onclick=\"edits('"+id+"')\" id=\"bt\"&gt;";<br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp; add_cms_name.value=name;<br />
&nbsp;&nbsp;&nbsp; add_cms_link.value=link;<br />
&nbsp;&nbsp;&nbsp; add_cms_orders.value=orders;<br />
&nbsp;&nbsp;&nbsp; add_cms_is_show.value=is_show;<br />
&nbsp;&nbsp;&nbsp; add_cms_is_quick.value=is_quick;<br />
}<br />
&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
var stname;<br />
function adds(id)<br />
{<br />
&nbsp;&nbsp; //alert("添加按钮--"+id);<br />
&nbsp;&nbsp; //数据库添加时调用<br />
&nbsp;&nbsp; var form =document.form1;<br />
&nbsp;&nbsp; var name=form.add_name.value;<br />
&nbsp;&nbsp; var link=form.add_link.value;<br />
&nbsp;&nbsp; var orders=form.add_orders.value;<br />
&nbsp;&nbsp; var is_show=form.add_is_show.value;<br />
&nbsp;&nbsp; var is_quick=form.add_is_quick.value;<br />
&nbsp;&nbsp; if(name==""||name==null)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("节点名称不能为空!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; if(link==""||link==null)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link="#";<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; if(orders==""||orders==null)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orders="1";<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; if(is_show==""||is_show==null)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is_show="0";<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; if(is_quick==""||is_quick==null)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is_quick="1";<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; stname=name;<br />
&nbsp;&nbsp; //alert(id);<br />
&nbsp;&nbsp; service.Add(id,name,link,orders,is_show,is_quick,clickAdd); <br />
}<br />
function clickAdd(info)<br />
{<br />
&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp; returninfo=new&nbsp;&nbsp; Array();<br />
&nbsp;returninfo&nbsp;&nbsp; =&nbsp;&nbsp; info.split(";");<br />
&nbsp;if(returninfo[0]=="true")<br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("新增【"+stname+"】节点成功!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var id=tree.getSelectedItemId();//被选中的节点<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var insertid=returninfo[1]+"_"+returninfo[2]+"_"+returninfo[3];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //alert("::::"+insertid);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree.insertNewChild(id,insertid,stname,hander,"book_titel.gif","books_open.gif","book.gif","","")&nbsp;&nbsp; ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //var form2=document.form2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //form2.action="cms/manageMenu.jsp";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //form2.submit(); <br />
&nbsp;}<br />
&nbsp;else<br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp; alert("新增【"+stname+"】节点失败!");<br />
&nbsp;}</p>
<p>}<br />
&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
function deletes(id)<br />
{<br />
&nbsp;&nbsp; //菜单,数据库删除时调用<br />
&nbsp;&nbsp; var bln = window.confirm("您确定要删除此界面吗?");<br />
&nbsp;&nbsp; if(bln==true)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; service.deleteAll(id,clickDelete);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree.deleteItem(tree.getSelectedItemId(),true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; else<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;&nbsp; }<br />
}<br />
function clickDelete(info)<br />
{<br />
&nbsp;&nbsp;&nbsp; alert(info); <br />
}<br />
&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
function edits(id)<br />
{<br />
&nbsp;&nbsp; //数据库修改时调用<br />
&nbsp;&nbsp; var form =document.form1;<br />
&nbsp;&nbsp; var name=form.add_name.value;<br />
&nbsp;&nbsp; var link=form.add_link.value;<br />
&nbsp;&nbsp; var orders=form.add_orders.value;<br />
&nbsp;&nbsp; var is_show=form.add_is_show.value;<br />
&nbsp;&nbsp; var is_quick=form.add_is_quick.value;<br />
&nbsp;&nbsp; service.modify(id,name,link,orders,is_show,is_quick,clickModify); </p>
<p>}<br />
function clickModify(info)<br />
{<br />
&nbsp;&nbsp;&nbsp; alert(info); <br />
}<br />
&lt;/script&gt;</p>
<p>&lt;/head&gt;<br />
&nbsp; <br />
&lt;body id="this_win"&gt;</p>
<p>&nbsp; &nbsp;&lt;table&gt;<br />
&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&lt;td valign="top"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;form name="form2" method="post" action=""&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="treeboxbox_tree" style="width:250; height:600;background-color:#f5f5f5;border :1px solid Silver;; overflow:auto;"&gt;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script&gt;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree.setImagePath("images/imgs/");&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree.setXMLAutoLoading("cms/cmsmenu.jsp?op=open");&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree.loadXML("cms/cmsmenu.jsp?op=init");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //tree.enableItemEditor(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree.setOnClickHandler(tonclick);//单击事件调用方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree.setOnRightClickHandler(viewRight);//设置右键调用方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tree.insertNewChild('root',5,"新节点",viewRight,"0","0","0","0","SELECT")&nbsp;&nbsp; ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //tree.insertNewItem('0',100,"New Node 1",0,0,0,0,"SELECT");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/script&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;td rowspan="2" style="padding-left:25" valign="top" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;form name="form1" method="post" action=""&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;fieldset style="DISPLAY:none " id="tdshow"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;legend id="legend"&gt;&lt;/legend&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;table width="554" border="0" id="table" style="DISPLAY: none"&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="102" height="24" scope="col"&gt;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left"&gt;&lt;font size="2"&gt;名字：&lt;/font&gt;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="168" scope="col"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="name" type="text" value="name" id="name" readonly class='input' &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="98" scope="col"&gt;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left"&gt;&lt;font size="2"&gt;链接:&lt;/font&gt;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="168" scope="col"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="link" type="text" value="link" id="link" readonly class='input'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;&lt;font size="2"&gt;序号：&nbsp;&nbsp;&nbsp; &lt;/font&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="orders" type="text" value="orders" id="orders" readonly class='input'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div align="left"&gt;&lt;font size="2"&gt;是否显示：&lt;/font&gt;&nbsp;&nbsp;&nbsp; &lt;/div&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div align="left" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="is_show" type="text" value="is_show" id="is_show" readonly class='input'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;&lt;font size="2"&gt;是否快速通道：&lt;/font&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div align="left" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="is_quick" type="text" value="is_quick" id="is_quick" readonly class='input'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&amp;nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&amp;nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&amp;nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;/fieldset&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;fieldset style="DISPLAY:none " id="add_show"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;legend id="add_legend"&gt;&lt;/legend&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;table width="554" border="0" id="add_table"&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="102" height="24" scope="col"&gt;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left"&gt;&lt;font size="2"&gt;名字：&lt;/font&gt;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="168" scope="col"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="add_name" type="text" value="name" id="add_name"&nbsp; class='input2' &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="98" scope="col"&gt;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left"&gt;&lt;font size="2"&gt;链接:&lt;/font&gt;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="168" scope="col"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="add_link" type="text" value="link" id="add_link"&nbsp; class='input2'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;&lt;font size="2"&gt;序号：&nbsp;&nbsp;&nbsp; &lt;/font&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div align="left" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="add_orders" type="text" value="orders" id="add_orders"&nbsp; class='input2'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div align="left"&gt;&lt;font size="2"&gt;是否显示：&lt;/font&gt;&nbsp;&nbsp;&nbsp; &lt;/div&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div align="left" &gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;select name="add_is_show" id="add_is_show"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;option value="0" selected&gt;显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;option value="1"&gt;不显示</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;&lt;font size="2"&gt;是否快速通道：&lt;/font&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div align="left" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;select name="add_is_quick" id="add_is_quick"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;option value="0" selected&gt;是<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;option value="1"&gt;否</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&amp;nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&amp;nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="21"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td id="click"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&amp;nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;/fieldset&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&lt;/tr&gt;<br />
&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&lt;/tr&gt;<br />
&lt;/table&gt;</p>
<p><br />
&nbsp;&nbsp; &lt;DIV ID="oContextHTML" STYLE="display:none;"&gt; <br />
&nbsp;&nbsp;&lt;div id="file_menu"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DIV onmouseover="this.style.filter='progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#99ccff, EndColorStr=#FFFFFF)';" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseout="this.style.filter='';" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STYLE="font-family:verdana; font-size:70%; height:25px; background:#e4e4e4; border:1px solid black; padding:3px; padding-left:20px;&nbsp; cursor:hand;DISPLAY: none" id="add"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DIV&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DIV onmouseover="this.style.filter='progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=yellowgreen,EndColorStr=#FFFFFF)';" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseout="this.style.filter='';"&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STYLE="font-family:verdana; font-size:70%; height:25px; background:#e4e4e4; border:1px solid black; padding:3px; padding-left:20px; cursor:hand; border-top:0px solid black;DISPLAY: none" id="edit"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DIV&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DIV onmouseover="this.style.filter='progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=gold, EndColorStr=#FFFFFF)';" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseout="this.style.filter='';"&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STYLE="font-family:verdana; font-size:70%; height:25px; background:#e4e4e4; border:1px solid black; padding:3px; padding-left:20px;&nbsp; cursor:hand;DISPLAY: none" id="delete"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DIV&gt;<br />
&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/DIV&gt;</p>
<p><br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
 <img src ="http://www.blogjava.net/1504/aggbug/237613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-10-30 15:11 <a href="http://www.blogjava.net/1504/archive/2008/10/30/237613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现类似于google搜索提示的功能【收藏】</title><link>http://www.blogjava.net/1504/archive/2008/08/05/220193.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Tue, 05 Aug 2008 07:56:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/05/220193.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/220193.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/05/220193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/220193.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/220193.html</trackback:ping><description><![CDATA[转自：http://hi.baidu.com/mahaibao/blog/item/cf38b1546103011e3b2935c3.html<br />
<p>最近和朋友们一起做了一个搜索提示的功能&nbsp;&nbsp;&nbsp; 使用了ajax+mysql数据库进行的操作，代码贴出来给大家参考一下：</p>
<p><strong>suggest.html:</strong></p>
<p>&lt;html&gt;<br />
&lt;head&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;style type="text/css" media="screen"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; body {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; font: 11px arial;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; .suggest_link {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background-color: #FFFFFF;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; padding: 2px 6px 2px 6px;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; .suggest_link_over { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background-color: #E8F2FE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; padding: 2px 6px 2px 6px;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; #search_suggest {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; position: absolute;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background-color: #FFFFFF; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text-align: left; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; border: 1px solid #000000;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;/style&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;script language="JavaScript" type="text/javascript" src="ajax_search.js"&gt;&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;h3&gt;Simple AJAX Search Suggest&lt;/h3&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;div style="width: 500px;"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;form id="frmSearch" action=""&gt;<br />
&lt;input type="text" id="txtSearch" name="txtSearch" alt="Search Criteria" onkeyup="searchSuggest();" autocomplete="off" /&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /&gt;&lt;br /&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;div id="search_suggest"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>&nbsp;</p>
<strong>ajax_search.js文件：</strong>
<p><br />
//Gets the browser specific XmlHttpRequest Object<br />
function getXmlHttpRequestObject() {<br />
if (window.XMLHttpRequest) {<br />
&nbsp;&nbsp;&nbsp; return new XMLHttpRequest();<br />
} else if(window.ActiveXObject) {<br />
&nbsp;&nbsp;&nbsp; return new ActiveXObject("Microsoft.XMLHTTP");<br />
} else {<br />
&nbsp;&nbsp;&nbsp; alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");<br />
}<br />
}<br />
function createAjaxObj(){<br />
&nbsp;&nbsp;&nbsp; var httprequest=false<br />
&nbsp;&nbsp;&nbsp; if (window.XMLHttpRequest)<br />
&nbsp;&nbsp;&nbsp; { // if Mozilla, Safari etc<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; httprequest=new XMLHttpRequest()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (httprequest.overrideMimeType)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; httprequest.overrideMimeType('text/xml')<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; else if (window.ActiveXObject)<br />
&nbsp;&nbsp;&nbsp;&nbsp; { // if IE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; httprequest=new ActiveXObject("Msxml2.XMLHTTP");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; httprequest=new ActiveXObject("Microsoft.XMLHTTP");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (e){}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; return httprequest<br />
}<br />
//Our XmlHttpRequest object to get the auto suggest<br />
var searchReq = createAjaxObj();</p>
<p>//Called from keyup on the search textbox.<br />
//Starts the AJAX request.<br />
function searchSuggest() {<br />
if (searchReq.readyState == 4 || searchReq.readyState == 0) {<br />
&nbsp;&nbsp;&nbsp; var str = escape(document.getElementById('txtSearch').value);<br />
&nbsp;&nbsp;&nbsp; searchReq.open("GET", 'search?search=' + str, true);<br />
&nbsp;&nbsp;&nbsp; searchReq.onreadystatechange = handleSearchSuggest; <br />
&nbsp;&nbsp;&nbsp; searchReq.send(null);<br />
}&nbsp;&nbsp;<br />
}</p>
<p>//Called when the AJAX response is returned.<br />
function handleSearchSuggest() {<br />
if (searchReq.readyState == 4) {<br />
&nbsp;&nbsp;&nbsp; var ss = document.getElementById('search_suggest')<br />
&nbsp;&nbsp;&nbsp; ss.innerHTML = '';<br />
&nbsp;&nbsp;&nbsp; var str = searchReq.responseText.split("\n");<br />
&nbsp;&nbsp;&nbsp; for(i=0; i &lt; str.length - 1; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; //Build our element string.&nbsp;&nbsp;&nbsp; This is cleaner using the DOM, but<br />
&nbsp;&nbsp;&nbsp;&nbsp; //IE doesn't support dynamically added attributes.<br />
&nbsp;&nbsp;&nbsp;&nbsp; var suggest = '&lt;div onmouseover="javascript:suggestOver(this);" ';<br />
&nbsp;&nbsp;&nbsp;&nbsp; suggest += 'onmouseout="javascript:suggestOut(this);" ';<br />
&nbsp;&nbsp;&nbsp;&nbsp; suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';<br />
&nbsp;&nbsp;&nbsp;&nbsp; suggest += 'class="suggest_link"&gt;' + str[i] + '&lt;/div&gt;';<br />
&nbsp;&nbsp;&nbsp;&nbsp; ss.innerHTML += suggest;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
}</p>
<p>//Mouse over function<br />
function suggestOver(div_value) {<br />
div_value.className = 'suggest_link_over';<br />
}<br />
//Mouse out function<br />
function suggestOut(div_value) {<br />
div_value.className = 'suggest_link';<br />
}<br />
//Click function<br />
function setSearch(value) {<br />
document.getElementById('txtSearch').value = value;<br />
document.getElementById('search_suggest').innerHTML = '';<br />
}</p>
<p>&nbsp;</p>
<p><strong>数据库的代码：</strong></p>
<p><br />
CREATE DATABASE /*!32312 IF NOT EXISTS*/ search;<br />
USE search;</p>
<p><br />
DROP TABLE IF EXISTS SUGGEST;<br />
CREATE TABLE SUGGEST (<br />
&nbsp;&nbsp;&nbsp; SUGGEST_ID int(11) NOT NULL auto_increment,<br />
&nbsp;&nbsp;&nbsp; TITLE varchar(255) default NULL,<br />
&nbsp;&nbsp;&nbsp; PRIMARY KEY&nbsp;&nbsp;&nbsp; (SUGGEST_ID)<br />
)TYPE=MyISAM ;</p>
<p>LOCK TABLES SUGGEST WRITE;<br />
INSERT INTO SUGGEST VALUES (1,'Home'),(2,'TECHNOLOGIES'),(3,'SOLUTIONS&nbsp;&nbsp;&nbsp; AND SOFTWARE'),(4,'Websites'),(5,'Web Apps'),(6,'Applications'),(7,'E-COMMERCE SOLUTIONS'),(8,'osCommerce'),(9,'CMS / Portals'),(10,'Microsoft .NET'),(11,'J2EE'),(12,'LAMP'),(13,'PHP'),(14,'MySQL'),(15,'Apache'),(16,'ASP.NET'),(17,'Windows Applications'),(18,'JSP'),(19,'SWING'),(20,'Web Technologies'),(21,'XHTML'),(22,'RSS / ATOM'),(23,'XML'),(24,'XSL'),(25,'XAML'),(26,'AJAX'),(27,'About DynamicAJAX'),(28,'CSS'),(29,'The Basics'),(30,'SAJAX'),(31,'About The Site Images'),(32,'About Me'),(33,'JavaScript'),(34,'RSS 2.0'),(35,'ATOM 1.0'),(36,'Search Engine Optimization'),(37,'Flash'),(38,'Open Source'),(39,'HTTP Server'),(40,'Full Text Search'),(41,'Best Practices'),(42,'XML Schema Definitons'),(43,'Web Content Accessibility Guidelines'),(44,'Printable Pages'),(45,'Search Engine'),(46,'Navigation'),(47,'Direct Web Remoting'),(48,'Mars Exploration Rovers'),(49,'Cassini'),(50,'Fun with Queries'),(51,'SEO Tricks and Tactics'),(52,'osCommerce Contributions'),(53,'PHP &amp; IIS'),(54,'Regular Expressions'),(55,'Rants'),(56,'URL Rewrite'),(57,'Fun with CSS'),(58,'ActionScript'),(59,'Visual Studio 2005'),(60,'SQL Server'),(61,'Search Engine Commands'),(62,'Web Site Layout'),(63,'AJAX'),(64,'AJAX Basics'),(65,'ATLAS'),(66,'SAJAX'),(67,'Tutorials'),(68,'Novice'),(69,'Frameworks'),(70,'Ajax.NET'),(71,'Framework Tutorials'),(72,'SAJAX'),(73,'Ajax.NET'),(74,'Direct Web Remoting'),(75,'Intermediate'),(76,'AJAX Example Sites'),(77,'My Tutorials'),(78,'AJAX Web Chat Part 1'),(79,'The JavaScript'),(80,'Sending The Request'),(81,'Color Schemes'),(82,'AJAX Resources'),(83,'The Backend'),(84,'Usability Additions'),(85,'AJAX Instant Messenger Part 1'),(86,'Ruby on Rails'),(87,'Crazy Queries'),(88,'XmlHttpRequest Methods'),(89,'XmlHttpRequest Properties'),(90,'AjaxTags'),(91,'Direct Web Remoting'),(92,'My URL Rewriting'),(93,'Great Quotes'),(94,'IXSSO Queries'),(95,'AFLAX'),(96,'Other Technologies'),(97,'Microsoft Indexing Server'),(98,'.NET &amp; CISSO');<br />
UNLOCK TABLES;</p>
<p><strong>SearchSuggest.java：</strong></p>
<p>package book.suggest;</p>
<p>import java.sql.Connection;<br />
import java.sql.DriverManager;<br />
import java.sql.ResultSet;<br />
import java.sql.SQLException;<br />
import java.sql.Statement;<br />
import java.util.Vector;</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>public class SearchSuggest extends HttpServlet {<br />
public void doPost(HttpServletRequest request, HttpServletResponse response)<br />
&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, java.io.IOException {<br />
&nbsp;&nbsp;&nbsp; String search = request.getParameter("search");//获得请求中cate的值<br />
&nbsp;&nbsp;&nbsp; //定义查询数据库的SQL语句<br />
&nbsp;&nbsp;&nbsp; String sql = "select title from suggest where title like '"+search+"%' order by title";</p>
<p>&nbsp;&nbsp;&nbsp; Connection conn = null;//声明Connection对象<br />
&nbsp;&nbsp;&nbsp; Statement stmt = null;//声明Statement对象<br />
&nbsp;&nbsp;&nbsp; ResultSet rs = null;//声明ResultSet对象<br />
&nbsp;&nbsp;&nbsp; Vector vData = new Vector();<br />
&nbsp;&nbsp;&nbsp; //response.setContentType("text/xml");//设置返回数据类型为xml格式<br />
&nbsp;&nbsp;&nbsp; java.io.PrintWriter out = response.getWriter();</p>
<p>&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp; // 加载数据库驱动类<br />
&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("com.mysql.jdbc.Driver");<br />
&nbsp;&nbsp;&nbsp;&nbsp; // 访问数据库的地址<br />
&nbsp;&nbsp;&nbsp;&nbsp; String url = "jdbc:mysql://localhost/search";<br />
&nbsp;&nbsp;&nbsp;&nbsp; //创建Connection对象<br />
&nbsp;&nbsp;&nbsp;&nbsp; conn = DriverManager.getConnection(url, "root", "");<br />
&nbsp;&nbsp;&nbsp;&nbsp; // 创建Statement对象<br />
&nbsp;&nbsp;&nbsp;&nbsp; stmt = conn.createStatement();<br />
&nbsp;&nbsp;&nbsp;&nbsp; // 执行SQL语句，返回记录集<br />
&nbsp;&nbsp;&nbsp;&nbsp; rs = stmt.executeQuery(sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp; //定义AblumEO实体对象<br />
&nbsp;&nbsp;&nbsp;&nbsp; while (rs.next())<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vData.add(rs.getString("TITLE"));<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer buf = new StringBuffer();<br />
&nbsp;&nbsp;&nbsp;&nbsp; for (int i=0;i&lt;vData.size();i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String keyword = (String)vData.get(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buf.append(keyword+"\n");<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; out.print(buf.toString());<br />
//&nbsp;&nbsp;&nbsp;&nbsp; out.print(parasToXML(vData));//调用parasToXML()方法<br />
&nbsp;&nbsp;&nbsp; } catch (Exception e) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();</p>
<p>&nbsp;&nbsp;&nbsp; } finally {//最后关必记录集，Connection对象<br />
&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // this will close any associated ResultSets<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (stmt != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (conn != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp; } catch (SQLException sqle) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p>public void doGet(HttpServletRequest request, HttpServletResponse response)<br />
&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, java.io.IOException {</p>
<p>&nbsp;&nbsp;&nbsp; doPost(request, response);<br />
}<br />
/*<br />
public String parasToXML(Vector v) {// 该方法将数据转化成XML格式输出<br />
&nbsp;&nbsp;&nbsp; StringBuffer buf = new StringBuffer();<br />
&nbsp;&nbsp;&nbsp; buf.append("&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;");<br />
&nbsp;&nbsp;&nbsp; buf.append("&lt;pictures&gt;");<br />
&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; v.size(); i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; AlbumEO album = (AlbumEO) v.get(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp; buf.append("&lt;item&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp; buf.append("&lt;name&gt;" + album.getAlbumName() + "&lt;/name&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp; buf.append("&lt;url&gt;" + album.getAlbumURL() + "&lt;/url&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp; buf.append("&lt;description&gt;" + album.getAlbumDescription()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + "&lt;/description&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp; buf.append("&lt;/item&gt;");<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; buf.append("&lt;/pictures&gt;");<br />
&nbsp;&nbsp;&nbsp; return buf.toString();<br />
}<br />
*/<br />
}</p>
<p>&nbsp;</p>
<p><strong>本示例共有 四部分，请大家复制到自己的文件中进行 运行，最后的结果如图：</strong></p>
<div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/mahaibao/pic/item/3475e862103aa1dbe7113aa9.jpg" border="0" small="0"  alt="" /></div>
<img src ="http://www.blogjava.net/1504/aggbug/220193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-05 15:56 <a href="http://www.blogjava.net/1504/archive/2008/08/05/220193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript 操作select控件大全（新增、修改、删除、选中、清空、判断存在等）【收藏】</title><link>http://www.blogjava.net/1504/archive/2008/08/05/220184.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Tue, 05 Aug 2008 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/05/220184.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/220184.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/05/220184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/220184.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/220184.html</trackback:ping><description><![CDATA[转自：http://www.phpchina.com/26200/viewspace_28436.html<br />
<p class="xspace-smalltxt">2008-03-05 10:45:16 / 个人分类：<a href="http://www.phpchina.com/26200/spacelist_type_blog_itemtypeid_3144.html">js</a> </p>
<div class="xspace-itemmessage" id="xspace-showmessage"><font color="#008080">1<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></font><span style="color: #000000">判断select选项中&nbsp;是否存在Value="paraValue"的Item&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />向select选项中&nbsp;加入一个Item&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />从select选项中&nbsp;删除一个Item&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />删除select中选中的项&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />修改select选项中&nbsp;value="paraValue"的text为"paraText"&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />设置select中text="paraText"的第一个Item为选中&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />设置select中value="paraValue"的Item为选中&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />得到select的当前选中项的value&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />得到select的当前选中项的text&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />得到select的当前选中项的Index&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />清空select的项&nbsp;</span><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">js&nbsp;代码<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;1.判断select选项中&nbsp;是否存在Value="paraValue"的Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;jsSelectIsExitItem(objSelect,&nbsp;objItemValue)&nbsp;</span><span id="Codehighlighter1_111_405_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;isExit&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;objSelect.options.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_208_368_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(objSelect.options[i].value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;objItemValue)&nbsp;</span><span id="Codehighlighter1_274_354_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isExit&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;isExit;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;2.向select选项中&nbsp;加入一个Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;jsAddItemToSelect(objSelect,&nbsp;objItemText,&nbsp;objItemValue)&nbsp;</span><span id="Codehighlighter1_518_830_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">判断是否存在&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(jsSelectIsExitItem(objSelect,&nbsp;objItemValue))&nbsp;</span><span id="Codehighlighter1_602_659_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">该Item的Value值已经存在</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_666_820_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;varItem&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Option(objItemText,&nbsp;objItemValue);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objSelect.options.add(varItem);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">成功加入</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;3.从select选项中&nbsp;删除一个Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;jsRemoveItemFromSelect(objSelect,&nbsp;objItemValue)&nbsp;</span><span id="Codehighlighter1_934_1398_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">判断是否存在&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(jsSelectIsExitItem(objSelect,&nbsp;objItemValue))&nbsp;</span><span id="Codehighlighter1_1018_1326_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;objSelect.options.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_1087_1281_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(objSelect.options[i].value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;objItemValue)&nbsp;</span><span id="Codehighlighter1_1157_1263_Open_Text"><span style="color: #000000">{&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;objSelect.options.remove(i);&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;</span><span style="color: #0000ff">break</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">成功删除</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_1333_1388_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">该select中&nbsp;不存在该项</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;4.删除select中选中的项&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;jsRemoveSelectedItemFromSelect(objSelect)&nbsp;</span><span id="Codehighlighter1_1486_1705_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;length&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;objSelect.options.length&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;length;&nbsp;i&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">--</span><span style="color: #000000">)</span><span id="Codehighlighter1_1583_1699_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(objSelect[i].selected&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">)</span><span id="Codehighlighter1_1630_1689_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objSelect.options[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;5.修改select选项中&nbsp;value="paraValue"的text为"paraText"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;jsUpdateItemToSelect(objSelect,&nbsp;objItemText,&nbsp;objItemValue)&nbsp;</span><span id="Codehighlighter1_1844_2320_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">判断是否存在&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(jsSelectIsExitItem(objSelect,&nbsp;objItemValue))&nbsp;</span><span id="Codehighlighter1_1928_2248_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;objSelect.options.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_1997_2203_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(objSelect.options[i].value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;objItemValue)&nbsp;</span><span id="Codehighlighter1_2067_2185_Open_Text"><span style="color: #000000">{&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;objSelect.options[i].text&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;objItemText;&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;</span><span style="color: #0000ff">break</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">成功修改</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_2255_2310_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">该select中&nbsp;不存在该项</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;6.设置select中text="paraText"的第一个Item为选中&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;jsSelectItemByValue(objSelect,&nbsp;objItemText)&nbsp;</span><span id="Codehighlighter1_2436_2945_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">判断是否存在&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;isExit&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;objSelect.options.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_2558_2774_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(objSelect.options[i].text&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;objItemText)&nbsp;</span><span id="Codehighlighter1_2622_2760_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objSelect.options[i].selected&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isExit&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Show出结果&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(isExit)&nbsp;</span><span id="Codehighlighter1_2828_2873_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">成功选中</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_2880_2935_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">该select中&nbsp;不存在该项</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;7.设置select中value="paraValue"的Item为选中&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">document.all.objSelect.value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;objItemValue;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;8.得到select的当前选中项的value&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;currSelectValue&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.all.objSelect.value;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;9.得到select的当前选中项的text&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;currSelectText&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.all.objSelect.options[document.all.objSelect.selectedIndex].text;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;10.得到select的当前选中项的Index&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;currSelectIndex&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.all.objSelect.selectedIndex;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;11.清空select的项&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img title="点击图片可在新窗口打开" style="cursor: pointer" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">document.all.objSelect.options.length&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
</span></div>
<br />
</div>
<img src ="http://www.blogjava.net/1504/aggbug/220184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-05 15:21 <a href="http://www.blogjava.net/1504/archive/2008/08/05/220184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>模态窗口的使用步骤【总结】</title><link>http://www.blogjava.net/1504/archive/2008/08/05/220174.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Tue, 05 Aug 2008 07:02:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/05/220174.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/220174.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/05/220174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/220174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/220174.html</trackback:ping><description><![CDATA[1.&nbsp; x.jsp<br />
<p><br />
function open(form)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var apply_id=form.flag.value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var srcFile = "/uniframework/configuration.action?actName=applyToDistribut&amp;flag="+apply_id; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var winFeatures = "dialogWidth=850px;dialogHeight=550px;status=no;help=no;"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var seleItemValue='';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var checkbox = form.checkbox;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(checkbox){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(checkbox.length)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for(var i=0;i&lt;checkbox.length;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;if(i==0)seleItemValue = form.checkbox[i].value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;seleItemValue+=","+form.checkbox[i].value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;seleItemValue = form.checkbox.value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var obj = form1; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var ret = window.showModalDialog(srcFile, seleItemValue, winFeatures);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ret!=undefined){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;addCTItemToTable(ret);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
}<br />
function addCTItemToTable(data)<br />
{<br />
&nbsp;var tableobj = document.getElementById("CTTable");<br />
&nbsp;var appli_id="";<br />
&nbsp;if (tableobj != null) <br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp; for(var k=0;k&lt;data.length;k++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var st=data[k];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appli_id=st[7];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var newRow = tableobj.insertRow(tableobj.rows.length);<br />
&nbsp;&nbsp;&nbsp;c1 = newRow.insertCell(0);<br />
&nbsp;&nbsp;&nbsp;c1.innerHTML = "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;input type=checkbox name=checkbox checked class=checkbox1 value='"+st[0]+"'&gt;&amp;nbsp;&amp;nbsp;";<br />
&nbsp;&nbsp;&nbsp;c2 = newRow.insertCell(1);<br />
&nbsp;&nbsp;&nbsp;c2.innerHTML = '&lt;div align=\"center\"&gt;' + st[1] + '&lt;/div&gt;';<br />
&nbsp;&nbsp;&nbsp;c3 = newRow.insertCell(2);<br />
&nbsp;&nbsp;&nbsp;c3.innerHTML = '&lt;div align=\"center\"&gt;'+st[2]+'&lt;/div&gt;';<br />
&nbsp;&nbsp;&nbsp;c4 = newRow.insertCell(3);<br />
&nbsp;&nbsp;&nbsp;c4.innerHTML = '&lt;div align=\"center\"&gt;'+st[3]+'&lt;/div&gt;';<br />
&nbsp;&nbsp;&nbsp;c5 = newRow.insertCell(4);<br />
&nbsp;&nbsp;&nbsp;c5.innerHTML = '&lt;div align=\"center\"&gt;'+st[4]+'&lt;/div&gt;';<br />
&nbsp;&nbsp;&nbsp;c6 = newRow.insertCell(5);<br />
&nbsp;&nbsp;&nbsp;c6.innerHTML = '&lt;div align=\"center\"&gt;'+st[5]+'&lt;/div&gt;';<br />
&nbsp;&nbsp;&nbsp;c7 = newRow.insertCell(6);<br />
&nbsp;&nbsp;&nbsp;c7.innerHTML = '&lt;div align=\"center\"&gt;'+st[6]+'&lt;/div&gt;'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
2.y.jsp<br />
<br />
function addCTItemReturnT(form)<br />
{<br />
<br />
&nbsp;&nbsp;&nbsp; applyid=form.info3.value;<br />
&nbsp;var check= form.checkbox;<br />
&nbsp;var arr=new Array();<br />
&nbsp;&nbsp;&nbsp; var string="";<br />
&nbsp;&nbsp;&nbsp; var index=0;<br />
&nbsp;if(check.length)<br />
&nbsp;{<br />
&nbsp;&nbsp;for(var i=0;i&lt;check.length;i++)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var checkval = check[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(checkval.checked)<br />
&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; var row = checkval.parentElement.parentElement;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var data=[];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[0] = checkval.value;//产品型号;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[1] = form.ASSET_CODE[row.rowIndex -1].value;//资产编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[2] = form.PROJECTNO[row.rowIndex -1].value;//项目编号<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[3] = form.CI_NAME[row.rowIndex -1].value;// 配置项名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[4] = form.RESPONSIBILITY[row.rowIndex -1].value;//责任人<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[5] = form.KEEPER[row.rowIndex -1].value;//使用人<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[6] = form.PRODUCT_MODLE[row.rowIndex -1].value;//产品型号<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[7] = applyid;//产品型号<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr[index]=data;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index++;<br />
&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; <br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; for(var k=0;k&lt;arr.length;k++)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var st=arr[k];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //alert("---"+st[0]+"::"+st[3]);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;window.returnValue=arr;<br />
&nbsp;window.close();<br />
}
<img src ="http://www.blogjava.net/1504/aggbug/220174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-05 15:02 <a href="http://www.blogjava.net/1504/archive/2008/08/05/220174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>模态窗口window.showModalDialog使用手册【收藏】</title><link>http://www.blogjava.net/1504/archive/2008/08/05/220171.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Tue, 05 Aug 2008 06:58:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/05/220171.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/220171.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/05/220171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/220171.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/220171.html</trackback:ping><description><![CDATA[转自：http://tgyd2006.javaeye.com/blog/169887<br />
<div class="blog_content">Window.Open()参数： <br />
&lt;SCRIPT LANGUAGE="javascript"&gt; <br />
&lt;!-- <br />
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no') <br />
//写成一行 <br />
--&gt; <br />
&lt;/SCRIPT&gt; <br />
参数解释： <br />
&lt;SCRIPT LANGUAGE="javascript"&gt; js脚本开始； <br />
window.open 弹出新窗口的命令； <br />
'page.html' 弹出窗口的文件名； <br />
'newwindow' 弹出窗口的名字（不是文件名），非必须，可用空''代替； <br />
height=100 窗口高度； <br />
width=400 窗口宽度； <br />
top=0 窗口距离屏幕上方的象素值； <br />
left=0 窗口距离屏幕左侧的象素值； <br />
toolbar=no 是否显示工具栏，yes为显示； <br />
menubar，scrollbars 表示菜单栏和滚动栏。 <br />
resizable=no 是否允许改变窗口大小，yes为允许； <br />
location=no 是否显示地址栏，yes为允许； <br />
status=no 是否显示状态栏内的信息（通常是文件已经打开），yes为允许； <br />
&lt;/SCRIPT&gt; <br />
<br />
window.showModalDialog()参数： <br />
JavaScript:window.showModalDialog('Ori_Photo.aspx','','resizable:yes;scroll:yes;status:no;dialogWidth=320px;dialogHeight=230px;center=yes;help=no'); <br />
<br />
<br />
window.showModalDialog(URL,dialogArgments.features) 打开一个新窗口 <br />
<br />
URL为要开启的网页名字。 <br />
dialogArgments为设定好传递给新视窗网页的参数，可以为任意数据类型。 <br />
feature 与open()的类似，都是格式方面的设定。调用格式为featureName1:featureValue1:(分号)featureName2:featureValue2: <br />
<br />
关于feature具体的参数我就不详细写了，看名字就应该知道什么用处了吧。 <br />
certer , dialogHeight, dialogLeft,dialogTop,dialogWidth,help(是否显示help按钮，下同），status,resizeable <br />
值＝1为yes,0为no. <br />
<br />
我认为最重要的是dialogArgments，可以传递值到新的窗口。 <br />
第二重要就是 它的返回值 window.returnValue.可以在showModalDialog开启的窗口关闭后前，回传一个任意类型的值。 <br />
<br />
<br />
<br />
<br />
基本介绍： <br />
showModalDialog() (IE 4+ 支持) <br />
showModelessDialog() (IE 5+ 支持) <br />
window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。 <br />
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。 <br />
<br />
使用方法： <br />
vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) <br />
vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures]) <br />
<br />
参数说明： <br />
sURL--必选参数，类型：字符串。用来指定对话框要显示的文档的URL。 <br />
vArguments--可选参数，类型：变体。用来向对话框传递参数。传递的参数类型不限，包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。 <br />
sFeatures--可选参数，类型：字符串。用来描述对话框的外观等信息，可以使用以下的一个或几个，用分号&#8220;;&#8221;隔开。 <br />
1.dialogHeight :对话框高度，不小于１００px，ＩＥ４中dialogHeight 和 dialogWidth 默认的单位是em，而ＩＥ５中是px，为方便其见，在定义modal方式的对话框时，用px做单位。 <br />
2.dialogWidth: 对话框宽度。 <br />
3.dialogLeft: 离屏幕左的距离。 <br />
4.dialogTop: 离屏幕上的距离。 <br />
5.center: {yes | no | 1 | 0 }：窗口是否居中，默认yes，但仍可以指定高度和宽度。 <br />
6.help: {yes | no | 1 | 0 }：是否显示帮助按钮，默认yes。 <br />
7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。 <br />
8.status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。 <br />
9.scroll:{ yes | no | 1 | 0 | on | off }：指明对话框是否显示滚动条。默认为yes。 <br />
下面几个属性是用在HTA中的，在一般的网页中一般不使用。 <br />
10.dialogHide:{ yes | no | 1 | 0 | on | off }：在打印或者打印预览时对话框是否隐藏。默认为no。 <br />
11.edge:{ sunken | raised }：指明对话框的边框样式。默认为raised。 <br />
12.unadorned:{ yes | no | 1 | 0 | on | off }：默认为no。 <br />
<br />
参数传递： <br />
1.要想对话框传递参数，是通过vArguments来进行传递的。类型不限制，对于字符串类型，最大为4096个字符。也可以传递对象，例如： <br />
parent.htm <br />
代码运行框： <br />
&lt;script&gt; <br />
var obj = new Object(); <br />
obj.name="51js"; <br />
window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px"); <br />
&lt;/script&gt; <br />
modal.htm <br />
&lt;script&gt; <br />
var obj = window.dialogArguments <br />
alert("您传递的参数为：" + obj.name) <br />
&lt;/script&gt; <br />
<br />
[Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行] <br />
2.可以通过window.returnValue向打开对话框的窗口返回信息，当然也可以是对象。例如： <br />
代码运行框： <br />
&lt;script&gt; <br />
str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px"); <br />
alert(str); <br />
&lt;/script&gt; <br />
modal.htm <br />
&lt;script&gt; <br />
window.returnValue="/"; <br />
&lt;/script&gt; </div>
<img src ="http://www.blogjava.net/1504/aggbug/220171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-05 14:58 <a href="http://www.blogjava.net/1504/archive/2008/08/05/220171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>树(下拉页面)的实现【收藏】</title><link>http://www.blogjava.net/1504/archive/2008/08/05/220149.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Tue, 05 Aug 2008 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/05/220149.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/220149.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/05/220149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/220149.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/220149.html</trackback:ping><description><![CDATA[<strong>转自：http://shuaijie506.javaeye.com/blog/34865<br />
关键字: javascript,下拉页面</strong>
<div class="blog_content">
<p>这几天又花时间做了一个，使用起来效果更好，因为没有时间写更多的帮助，大家慢慢研究代码吧！</p>
<p>&nbsp;</p>
<p><font color="#c0c0c0">最近项目中要用到下拉多选树，有人从网上找了一个，用了一段时间后发现有一些问题，一个页面中只能有一个<span class="hilite1">下拉树</span>，我就研究其中的代码，自己重新写了一个下拉页面的脚本，能够在一个页面中使用多个<span class="hilite1">下拉树</span>。</font></p>
<p><font color="#c0c0c0">其原理其实就是用DIV的隐藏的显示来实现下拉页面，页面放在了DIV里的一个FRAME里，用JS来控制这些显示与隐藏，废话不多说了，把源码给大家公布一下。代码中如有不足之处敬请大家指出。</font></p>
<p><font color="#c0c0c0">给大家说一下它的用法，首先在页面里加上JS文件：</font><font face="Arial"> <script src="dropDownTree.js"></script><br />
<font color="#c0c0c0">在需要<span class="hilite1">下拉树</span>的地方写一个DIV：<font face="Arial"></font></font></font><font color="#c0c0c0"> </font></p>
<p><font color="#c0c0c0">&nbsp;</font></p>
<p><font face="Arial"><font face="Arial"><font face="Arial" color="#c0c0c0">JS里用到了两个图片，你可以把这两个图片放到主页面同一层的路径下，或者直接修改JS源文件，把它指向你自己的路径。</font></font></font></p>
<p><font color="#c0c0c0">目标页面需要加一些东西，写一个函数：<br />
</font><font face="Arial"><br />
<font color="#c0c0c0">function getUserData(tag){<br />
&nbsp;var ids = tree1.getAllChecked();<br />
&nbsp;if(ids.length==0)return "";<br />
&nbsp;if(tag=="id")<br />
&nbsp;&nbsp;return tree1.getAllChecked();<br />
&nbsp;else if(tag=="name"){<br />
&nbsp;&nbsp;var idArray = ids.split(",");<br />
&nbsp;&nbsp;var names=tree1.getItemText(idArray[0]);<br />
&nbsp;&nbsp;for(i=1;i &nbsp;&nbsp;&nbsp;names += "," + tree1.getItemText(idArray[i]);<br />
&nbsp;&nbsp;return names;<br />
&nbsp;}<br />
}<br />
其中的返回值可以根据你的页面要实现的功能改动。</font></font></p>
<p><font color="#c0c0c0"></font></p>
<div id="tree1"><font color="#c0c0c0"></font></div>
<br />
<font color="#c0c0c0">在页面的onload事件中创建：</font><font face="Arial" color="#c0c0c0">dropDownPage.createNewPage("2.htm","tree1","text1",200);<br />
这个函数中的参数给大家详细解释一下，<br />
第一个是下拉时出来的页面的URL；<br />
第二个是你创建的DIV的ID；<br />
第三个是你用来存放页面返回ID的FORM的字段的(id或name都行，如果你的主页面里没有这样的字段，JS会帮你创建它)；<br />
第四个是宽度，单位是象素。</font> <br />
</div>
<a href="/Files/1504/Example.rar">/Files/1504/Example.rar</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="/Files/1504/tree.rar">/Files/1504/tree.rar</a> 
<img src ="http://www.blogjava.net/1504/aggbug/220149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-05 14:07 <a href="http://www.blogjava.net/1504/archive/2008/08/05/220149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tab【自己备用】</title><link>http://www.blogjava.net/1504/archive/2008/08/05/220103.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Tue, 05 Aug 2008 02:37:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/05/220103.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/220103.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/05/220103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/220103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/220103.html</trackback:ping><description><![CDATA[<p>&lt;%@ page contentType="text/html;charset=UTF-8"%&gt;<br />
&lt;%@ taglib prefix="ww" uri="/struts-tags" %&gt;<br />
&lt;%@ taglib prefix="display" uri="/WEB-INF/displaytag-el.tld" %&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;申请表&lt;/title&gt;<br />
&lt;link rel="stylesheet" href="/uniframework/style/default.css"&gt;<br />
&lt;link rel="stylesheet" href="/uniframework/style/displaytag.css"&gt;<br />
&lt;link rel="stylesheet" href="/uniframework/style/dhtmlxtabbar.css"&gt;<br />
&lt;link rel="stylesheet" href="/uniframework/script/jscalendar/skins/theme.css"&gt;<br />
&lt;script src="/uniframework/script/jscalendar/calendar.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/jscalendar/calendar-setup.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/jscalendar/calendar-lang.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/clientValid.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/provider.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/enterKeydown.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/dhtmlxcommon.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/dhtmlxtabbar.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/dhtmlxtabbar_start.js"&gt;&lt;/script&gt;<br />
&lt;link rel="stylesheet" href="/uniframework/style/buttonMenu.css"&gt;<br />
&lt;script src="/uniframework/script/buttonMenu.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/incident_userIncident.js"&gt;&lt;/script&gt;<br />
&lt;script src="/uniframework/script/incidentAjax.js"&gt;&lt;/script&gt;<br />
&lt;script type='text/javascript' src='/uniframework/dwr/interface/itsmservicelocator.js'&gt;&lt;/script&gt;<br />
&lt;script type='text/javascript' src='/uniframework/dwr/engine.js'&gt;&lt;/script&gt;<br />
&lt;script type='text/javascript' src='/uniframework/dwr/util.js'&gt;&lt;/script&gt;&nbsp; <br />
&lt;script type="text/javascript"&gt;<br />
/**<br />
&nbsp;* 清空查询条件<br />
&nbsp;*/<br />
function clean(form)<br />
{<br />
&nbsp;form.all("model.configApply.NUMBER").value = "";<br />
&nbsp;form.all("model.configApply.APPLYER_DEPT_NAME").value = "";<br />
&nbsp;form.all("model.configApply.APPLER").value = "";<br />
}<br />
function queryReturn(form,frame)<br />
{<br />
&nbsp;&nbsp;&nbsp; frame.name = "iframe1";<br />
&nbsp;&nbsp;&nbsp; form.target = frame.name;<br />
&nbsp;form.action="/uniframework/configuration.action?actName=showReturnQuery&amp;info="+currSeleTabId;<br />
&nbsp;form.submit();<br />
}</p>
<p>var currSeleTabId='returning';<br />
var selectTab="";<br />
function oninit(tabbarId)<br />
{<br />
&nbsp;var tabbar = window[tabbarId];<br />
&nbsp;selectTab=tabbar;<br />
&nbsp;tabbar.setOnSelectHandler(seleTable_func);<br />
}<br />
function seleTable_func(idn,ido)<br />
{<br />
&nbsp;currSeleTabId = idn;<br />
&nbsp;//alert(idn);<br />
&nbsp;var form=document.form1;<br />
&nbsp;var number=form.NUMBER.value;<br />
&nbsp;var name=form.APPLYER.value;<br />
&nbsp;var address=form.APPLYER_DEPT_NAME.value;<br />
&nbsp;var url="/uniframework/configuration.action?actName=showReturnQuery&amp;info="+idn;<br />
&nbsp;var url1="&amp;model.configApply.number="+number+"&amp;model.configApply.APPLYER="+name+"&amp;model.configApply.APPLYER_DEPT_NAME="+address;<br />
&nbsp;selectTab.setContentHref(idn,encodeURI(url+url1))<br />
&nbsp;return true;<br />
}</p>
<p>&lt;/script&gt;<br />
&lt;/head&gt;</p>
<p><br />
&lt;body onLoad="form1.NUMBER.focus();"&gt;<br />
&lt;form name="form1" method="post" action="" target="_self"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;table width="98%" border="0" align="center" cellpadding="0" cellspacing="0"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;tr&gt;<br />
&nbsp; &nbsp;&nbsp;&lt;td width="100%" height="22" valign="top"&gt;<br />
&nbsp; &nbsp;&nbsp;&nbsp;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;<br />
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;td width="100%" height="22" class=table_title_bg070&gt;&lt;span class="text_l14"&gt;&lt;img src="/uniframework/images/a01.gif" width="19" height="18"&gt;&lt;a class="ameth" href="/uniframework/jsp/provider/moduleHomepage.jsp"&gt;资产借用申请&lt;/a&gt; &amp;gt;&lt;/span&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;td width="*" valign="top" background="/uniframework/images/table_title_bg070.gif"&gt;&amp;nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/table&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&lt;/table&gt;&lt;br&gt;<br />
&nbsp;<br />
&nbsp;&lt;table width="97%" height="40" border="0" cellspacing="0" cellpadding="0"&gt;<br />
&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;fieldset class="fieldset" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;legend class="legend"&gt;&lt;img src="/uniframework/images/dot12.gif"&gt;&amp;nbsp;查询条件&lt;/legend&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table class="fieldsettable" height="30" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr height="30"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="text17"&gt;编号：&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="text18"&gt;&lt;input type="text" class="Input12" id="NUMBER" name="model.configApply.NUMBER" value="&lt;ww:property value = "model.configApply.NUMBER"/&gt;" title="请输入要查询的编号"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="text19"&gt;部门：&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="text20"&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;input name="model.configApply.APPLYER_DEPT_NAME" type="text" class="Input12" id="APPLYER_DEPT_NAME" value="&lt;ww:property value = "model.configApply.APPLYER_DEPT_NAME"/&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr height="30"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="text17"&gt;归还人：&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="text18" colspan="2"&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;input name="model.configApply.APPLYER" type="text" class="Input12" id="APPLYER" value="&lt;ww:property value = "model.configApply.APPLYER"/&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/fieldset&gt;&lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table width="94%" border="0" cellpadding="0" cellspacing="0"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr height="70%"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;td width="65%" align="right"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button&nbsp; class="btn3_mouseout btn0"&nbsp;&nbsp; onclick="queryReturn(form1,document.frames[0])"&gt;查 询&lt;/button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width="2%"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="5%" align="right"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;button class="btn3_mouseout btn0" onclick="clean(form1)"&gt;重 置&lt;/button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="2%"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="5%"&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;button&nbsp; class="btn3_mouseout btn0" onclick="self.location='/uniframework/configuration.action?actName=toAddAssetsReturn'"&gt;新 增&lt;/button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp; &nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div hrefmode="iframe" id="a_tabbar" class="dhtmlxTabBar" imgpath="/uniframework/images/dhTabbarImg/" style="width:98%; height:410px;"&nbsp; skinColors="#FCFBFC,#F4F3EE" oninit="oninit('a_tabbar');"&gt;&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; &lt;div id="returning" width="100" name="归还中" href="/uniframework/configuration.action?actName=showReturnQuery&amp;info=initreturn" &gt;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id="returned" width="100" name="已归还" href="/uniframework/configuration.action?actName=showReturnQuery&amp;info=returned"&gt;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &lt;div id="no" width="100" name="审批未通过" href="/uniframework/configuration.action?actName=showReturnQuery&amp;info=no"&gt;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &lt;div id="all" width="100" name="所有" href="/uniframework/configuration.action?actName=showReturnQuery&amp;info=all" &gt;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&lt;/table&gt;<br />
&nbsp;&lt;/form&gt;<br />
&lt;/body&gt;</p>
<p>&lt;/html&gt;<br />
</p>
<img src ="http://www.blogjava.net/1504/aggbug/220103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-05 10:37 <a href="http://www.blogjava.net/1504/archive/2008/08/05/220103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>checkbox的判断【收藏】</title><link>http://www.blogjava.net/1504/archive/2008/08/04/219983.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Mon, 04 Aug 2008 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/04/219983.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/219983.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/04/219983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/219983.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/219983.html</trackback:ping><description><![CDATA[function judge(form)<br />
{<br />
&nbsp;var chkbox = form.checkbox;<br />
&nbsp;if(chkbox){<br />
&nbsp;var chkLength = chkbox.length;<br />
&nbsp;if (chkLength) {<br />
&nbsp;&nbsp;for (var i = chkLength-1; i &gt;=0; i--) {<br />
&nbsp;&nbsp;&nbsp;if (chkbox[i].checked) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var cid = chkbox[i].value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var row = -1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row = chkbox[i].parentElement.parentElement.rowIndex;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;catch (e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (row &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var tableobj = document.getElementById("CTTable");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (tableobj != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tableobj.deleteRow(row);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;}else{<br />
&nbsp;&nbsp;//row = chkbox.parentElement.parentElement.rowIndex;<br />
&nbsp;&nbsp;<br />
&nbsp;}<br />
&nbsp;}<br />
&nbsp;<br />
}
<img src ="http://www.blogjava.net/1504/aggbug/219983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-04 16:44 <a href="http://www.blogjava.net/1504/archive/2008/08/04/219983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR与Struts整合2007-08-07 【收藏】</title><link>http://www.blogjava.net/1504/archive/2008/08/03/219703.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Sun, 03 Aug 2008 07:34:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/03/219703.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/219703.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/03/219703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/219703.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/219703.html</trackback:ping><description><![CDATA[<div class="postText">1.下載DWR Version 2 <br />
<a class="ilink" href="https://dwr.dev.java.net/files/documents/2427/47504/dwr.jar" target="_blank">https://dwr.dev.java.net/files/documents/2427/47504/dwr.jar</a> <br />
<br />
2.安裝DWR,把dwr.jar放到WEB-INF/lib下 <br />
<br />
web.xml中加入DWRServlet &amp; ActionServlet <br />
其中&lt;load-on-startup&gt;的部分要特別注意,ActionServlet要先初始化,所以數字要比較小. <br />
<pre>  &lt;servlet&gt;    </pre>
<pre>&lt;servlet-name&gt;action&lt;/servlet-name&gt;    </pre>
<pre>&lt;servlet-class&gt;org.apache.struts.action.ActionServlet</pre>
<pre>&lt;/servlet-class&gt;    </pre>
<pre>&lt;init-param&gt;      </pre>
<pre>&lt;param-name&gt;config&lt;/param-name&gt;      </pre>
<pre>&lt;param-value&gt;/WEB-INF/struts-config.xml&lt;/param-value&gt;    </pre>
<pre>&lt;/init-param&gt;    </pre>
<pre>&lt;init-param&gt;      </pre>
<pre>&lt;param-name&gt;debug&lt;/param-name&gt;      </pre>
<pre>&lt;param-value&gt;2&lt;/param-value&gt;    </pre>
<pre>&lt;/init-param&gt;    </pre>
<pre>&lt;load-on-startup&gt;2&lt;/load-on-startup&gt;  </pre>
<pre>&lt;/servlet&gt;  </pre>
<pre>&lt;servlet-mapping&gt;    </pre>
<pre>&lt;servlet-name&gt;action&lt;/servlet-name&gt;    </pre>
<pre>&lt;url-pattern&gt;*.do&lt;/url-pattern&gt;  </pre>
<pre>&lt;/servlet-mapping&gt;  </pre>
<pre>&lt;servlet&gt;    </pre>
<pre>&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;    </pre>
<pre>&lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt;    </pre>
<pre>&lt;init-param&gt;      </pre>
<pre>&lt;param-name&gt;debug&lt;/param-name&gt;      </pre>
<pre>&lt;param-value&gt;true&lt;/param-value&gt;    </pre>
<pre>&lt;/init-param&gt;    </pre>
<pre>&lt;load-on-startup&gt;10&lt;/load-on-startup&gt;  </pre>
<pre>&lt;/servlet&gt;  </pre>
<pre>&lt;servlet-mapping&gt;   </pre>
<pre> &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;    </pre>
<pre>&lt;url-pattern&gt;/dwr<font class="java-comment" color="#006400">/*&lt;/url-pattern&gt;  </font></pre>
<pre><font class="java-comment" color="#006400">&lt;/servlet-mapping&gt;</font><br />
dwr.xml中加入struts的設定,其中formBean的參數的value值,會對應到struts-config.xml中&lt;form-beans&gt;的設定 </pre>
<pre>&lt;dwr&gt;&nbsp;
<pre>&lt;allow&gt;    </pre>
<pre>&lt;create creator=<font class="java-string" color="#000080">"struts"</font> javascript=<font class="java-string" color="#000080">"testFrm"</font>&gt;      </pre>
<pre>&lt;param name=<font class="java-string" color="#000080">"formBean"</font> value=<font class="java-string" color="#000080">"testActionForm"</font>/&gt;    </pre>
<pre>&lt;/create&gt;  </pre>
<pre>&lt;/allow&gt;  </pre>
<pre>&lt;/dwr&gt;  </pre>
<pre><br />
<br />
struts-config.xml </pre>
<pre>&nbsp;</pre>
<pre>
<pre>&lt;struts-config&gt;  </pre>
<pre>&lt;form-beans&gt;    </pre>
<pre>&lt;form-bean name=<font class="java-string" color="#000080">"testActionForm"</font> type=<font class="java-string" color="#000080">"test.struts.testActionForm"</font> /&gt;  </pre>
<pre>&lt;/form-beans&gt;  </pre>
<pre>&lt;action-mappings&gt;    </pre>
<pre>&lt;action name=<font class="java-string" color="#000080">"testActionForm"</font> path=<font class="java-string" color="#000080">"/testAction"</font> scope=<font class="java-string" color="#000080">"session"</font> type=<font class="java-string" color="#000080">"test.struts.testAction"</font> validate=<font class="java-string" color="#000080">"false"</font>&gt;      </pre>
<pre>&lt;forward name=<font class="java-string" color="#000080">"display"</font> path=<font class="java-string" color="#000080">"/display.jsp"</font> /&gt;    </pre>
<pre>&lt;/action&gt;  </pre>
<pre>&lt;/action-mappings&gt;  </pre>
<pre>&lt;message-resources parameter=<font class="java-string" color="#000080">"ApplicationResources"</font> /&gt;</pre>
<pre>&lt;/struts-config&gt;</pre>
<pre><br />
<br />
testActionForm.java,getDate()會透過dwr,取得現在最新的日期 </pre>
<pre>&nbsp;</pre>
<pre>
<pre><font class="java-reserved_word" color="#000080"><strong>package</strong></font> test.struts;&nbsp;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>import</strong></font> org.apache.struts.action.*;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>import</strong></font> java.util.*;&nbsp;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>public</strong></font> <font class="java-reserved_word" color="#000080"><strong>class</strong></font> testActionForm <font class="java-reserved_word" color="#000080"><strong>extends</strong></font> ActionForm <font class="java-bracket" color="#000080">{</font>&nbsp;    </pre>
<pre><font class="java-reserved_word" color="#000080"><strong>private</strong></font> String strDate;&nbsp;    </pre>
<pre><font class="java-reserved_word" color="#000080"><strong>public</strong></font> <font class="java-reserved_word" color="#000080"><strong>void</strong></font> setStrDate(String strDate) <font class="java-bracket" color="#000080">{</font>        </pre>
<pre>this.strDate = strDate;    </pre>
<pre><font class="java-bracket" color="#000080">}</font>&nbsp;    </pre>
<pre><font class="java-reserved_word" color="#000080"><strong>public</strong></font> String getStrDate() <font class="java-bracket" color="#000080">{</font>        </pre>
<pre><font class="java-reserved_word" color="#000080"><strong>return</strong></font> strDate;    </pre>
<pre><font class="java-bracket" color="#000080">}</font>&nbsp;   </pre>
<pre> <font class="java-comment" color="#006400">//dwr</font>    <font class="java-reserved_word" color="#000080"><strong>public</strong></font> String getDate() <font class="java-bracket" color="#000080">{</font>        </pre>
<pre>Date date = <font class="java-reserved_word" color="#000080"><strong>new</strong></font> Date();        </pre>
<pre><font class="java-reserved_word" color="#000080"><strong>return</strong></font> date.toString();   </pre>
<pre> <font class="java-bracket" color="#000080">}</font>&nbsp;</pre>
<pre><font class="java-bracket" color="#000080">}</font></pre>
</pre>
</pre>
</pre>
<pre><br />
<br />
testAction.java </pre>
<pre>
<pre><font class="java-reserved_word" color="#000080"><strong>package</strong></font> test.struts;&nbsp;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>import</strong></font> org.apache.struts.action.ActionMapping;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>import</strong></font> org.apache.struts.action.ActionForm;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>import</strong></font> javax.servlet.http.HttpServletRequest;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>import</strong></font> javax.servlet.http.HttpServletResponse;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>import</strong></font> org.apache.struts.action.ActionForward;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>import</strong></font> org.apache.struts.action.Action;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>import</strong></font> org.apache.struts.action.*;&nbsp;</pre>
<pre><font class="java-reserved_word" color="#000080"><strong>public</strong></font> <font class="java-reserved_word" color="#000080"><strong>class</strong></font> testAction <font class="java-reserved_word" color="#000080"><strong>extends</strong></font> Action <font class="java-bracket" color="#000080">{</font>    </pre>
<pre>	<font class="java-reserved_word" color="#000080"><strong>public</strong></font> ActionForward execute(ActionMapping mapping, ActionForm form,                                 </pre>
<pre>HttpServletRequest request,                                 </pre>
<pre>HttpServletResponse response) <font class="java-bracket" color="#000080">{</font>&nbsp;        </pre>
<pre>testActionForm actionForm = (testActionForm) form;       </pre>
<pre> System.out.println(actionForm.getStrDate());        </pre>
<pre><font class="java-reserved_word" color="#000080"><strong>return</strong></font> mapping.findForward(<font class="java-string" color="#000080">"display"</font>);    </pre>
<pre><font class="java-bracket" color="#000080">}</font></pre>
<pre><font class="java-bracket" color="#000080">}</font></pre>
<br />
</pre>
<pre></pre>
<pre><br />
date.jsp,在form的部分,請用struts 的 tag library,我把&lt;html:text property="strDate" size="30" &gt;改成&lt;input type="text" name="strDate"&gt;後,無法正常的接受到值. </pre>
<pre>
<pre>&lt;%@ page contentType=<font class="java-string" color="#000080">"text/html; charset=Big5"</font> %&gt;</pre>
<pre>&lt;%@ taglib uri=<font class="java-string" color="#000080">"/WEB-INF/struts-bean.tld"</font> prefix=<font class="java-string" color="#000080">"bean"</font> %&gt;</pre>
<pre>&lt;%@ taglib uri=<font class="java-string" color="#000080">"/WEB-INF/struts-html.tld"</font> prefix=<font class="java-string" color="#000080">"html"</font> %&gt;</pre>
<pre>&lt;%@ taglib uri=<font class="java-string" color="#000080">"/WEB-INF/struts-logic.tld"</font> prefix=<font class="java-string" color="#000080">"logic"</font> %&gt;</pre>
<pre>&lt;html&gt;&lt;head&gt;</pre>
<pre>&lt;title&gt;title&lt;/title&gt;  </pre>
<pre>&lt;script type=<font class="java-string" color="#000080">'text/javascript'</font> src=<font class="java-string" color="#000080">'dwr/interface/testFrm.js'</font>&gt;&lt;/script&gt;  </pre>
<pre>&lt;script type=<font class="java-string" color="#000080">'text/javascript'</font> src=<font class="java-string" color="#000080">'dwr/engine.js'</font>&gt;&lt;/script&gt;  </pre>
<pre>&lt;script type=<font class="java-string" color="#000080">'text/javascript'</font> src=<font class="java-string" color="#000080">'dwr/util.js'</font>&gt;&lt;/script&gt;</pre>
<pre>&lt;/head&gt;</pre>
<pre>&lt;SCRIPT LANGUAGE=<font class="java-string" color="#000080">"JavaScript"</font> type=<font class="java-string" color="#000080">""</font>&gt;&nbsp;</pre>
<pre>function refreshDate() <font class="java-bracket" color="#000080">{</font>   </pre>
<pre> testFrm.getDate(populateDate)</pre>
<pre>;<font class="java-bracket" color="#000080">}</font>&nbsp;</pre>
<pre>function populateDate(data)<font class="java-bracket" color="#000080">{</font>   </pre>
<pre>DWRUtil.setValue(<font class="java-string" color="#000080">'strDate'</font>, data);</pre>
<pre><font class="java-bracket" color="#000080">}</font>&nbsp;</pre>
<pre>&lt;/script&gt;&nbsp;</pre>
<pre>&lt;body&gt;&nbsp;</pre>
<pre>&lt;html:form action=<font class="java-string" color="#000080">"testAction.do"</font>&gt;</pre>
<pre>date：&lt;html:text property=<font class="java-string" color="#000080">"strDate"</font> size=<font class="java-string" color="#000080">"30"</font> &gt;&lt;/html:text&gt;&nbsp;</pre>
<pre>&lt;input type=<font class="java-string" color="#000080">"button"</font> onclick=<font class="java-string" color="#000080">"refreshDate();"</font> value=<font class="java-string" color="#000080">"更新日期"</font>/&gt;&lt;br/&gt;&nbsp;  </pre>
<pre>&lt;html:submit&gt;送出  &lt;/html:submit&gt;</pre>
<pre>&lt;/html:form&gt;&lt;/body&gt;&lt;/html&gt;</pre>
<br />
</pre>
<pre><br />
<br />
display.jsp </pre>
<pre>
<pre>&lt;%@ page contentType=<font class="java-string" color="#000080">"text/html; charset=Big5"</font> %&gt;</pre>
<pre>&lt;%@ taglib uri=<font class="java-string" color="#000080">"/WEB-INF/struts-bean.tld"</font> prefix=<font class="java-string" color="#000080">"bean"</font> %&gt;</pre>
<pre><a href="mailto:%@page%20import=">%@page import=<font class="java-string" color="#000080">"test.struts.*"</font>%</a></pre>
<pre>&lt;html&gt;</pre>
<pre>&lt;head&gt;</pre>
<pre>&lt;title&gt;test&lt;/title&gt;</pre>
<pre>&lt;/head&gt;&lt;body bgcolor=<font class="java-string" color="#000080">"#ffffff"</font>&gt;&lt;h1&gt;您送出的日期:&lt;br&gt;</pre>
<pre>&lt;bean:write name=<font class="java-string" color="#000080">"testActionForm"</font> property=<font class="java-string" color="#000080">"strDate"</font>/&gt;&lt;/h1&gt;</pre>
<pre>&lt;/body&gt;</pre>
<pre>&lt;/html&gt;</pre>
<br />
</pre>
<pre></pre>
<pre>&nbsp;<br />
<br />
</pre>
<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1621900</p>
<br />
</div>
<div class="postFoot">&lt;script src="http://localhost:82/PromoteIcon.aspx?id=1621900"&gt;&lt;/script&gt;[<a title="功能强大的网络收藏夹，一秒钟操作就可以轻松实现保存带来的价值、分享带来的快乐" href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(saveit=window.open('http://wz.csdn.net/storeit.aspx?t='+escape(d.title)+'&amp;u='+escape(d.location.href)+'&amp;c='+escape(t),'keyit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();">收藏到我的网摘</a>]&nbsp;&nbsp; 会上树的猪发表于 2007年05月23日 09:24:00 </div>
<img src ="http://www.blogjava.net/1504/aggbug/219703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-03 15:34 <a href="http://www.blogjava.net/1504/archive/2008/08/03/219703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts+hibernate+spring+dwr的一个小小的DEMO【收藏】</title><link>http://www.blogjava.net/1504/archive/2008/08/03/219702.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Sun, 03 Aug 2008 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/03/219702.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/219702.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/03/219702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/219702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/219702.html</trackback:ping><description><![CDATA[<p>最近无聊，做了一个<span class="hilite1">DWR</span>的验证和<font face="Arial">eXtremeTable的应用的例子</font></p>
<p>前期的系统创建、struts、hibernate、spring的集成工作就不用说了，一路下来&#8230;&#8230;&#8230;&#8230;</p>
<p>主要看<span class="hilite1">DWR</span>的应用，它用于表单验证：</p>
<p>1、先看它的配置：</p>
<p>（1）在web.xml里加上：</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt">&#160;&#160;<span class="tag">&lt;<span class="tag-name">servlet</span><span class="tag">></span>&#160;&#160;</span>
    </li>
    <li class="">&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">></span><span class="hilite1">dwr-invoker</span><span class="tag"><span class="tag-name">servlet-name</span><span class="tag">></span>&#160;&#160; &#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">servlet-class</span><span class="tag">></span>uk.ltd.getahead.<span class="hilite1">dwr.<span class="hilite1">DWR</span>Servlet</span><span class="tag"><span class="tag-name">servlet-class</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">init-param</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">param-name</span><span class="tag">></span>debug<span class="tag"><span class="tag-name">param-name</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">param-value</span><span class="tag">></span>true<span class="tag"><span class="tag-name">param-value</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160;<span class="tag"><span class="tag-name">init-param</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">load-on-startup</span><span class="tag">></span>1<span class="tag"><span class="tag-name">load-on-startup</span><span class="tag">></span>&#160; &#160;&#160; </span>
    </li>
    <li class="alt">&#160;<span class="tag"><span class="tag-name">servlet</span><span class="tag">></span>&#160;&#160; &#160;&#160; </span>
    </li>
    <li class="">&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">servlet-mapping</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">></span><span class="hilite1">dwr-invoker</span><span class="tag"><span class="tag-name">servlet-name</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">url-pattern</span><span class="tag">></span>/<span class="hilite1">dwr/*</span><span class="tag"><span class="tag-name">url-pattern</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class=""><span class="tag"><span class="tag-name">servlet-mapping</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160; </li>
</ol>
</div>
<p>&#160;</p>
<p>（2）再建一个类，用于获取验证输出信息的属性文件，这个文件是参考了良葛格 的<strong><font color="#ff0000"><span class="hilite1">DWR</span> 入門與應用（一）</font></strong></p>
<p>里的Book代码</p>
<p>java 代码</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span class="keyword">package&#160;test.common; &#160;&#160;</span>
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt"><span class="keyword">import</span>&#160;java.util.ResourceBundle; &#160;&#160;
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt"><span class="keyword">public</span>&#160;<span class="keyword">class</span>&#160;GetProperties{ &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="keyword">private</span>&#160;ResourceBundle&#160;resource; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="keyword">public</span>&#160;GetProperties() &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;{ &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;resource&#160;=&#160;ResourceBundle.getBundle(<span class="string">"<span class="hilite1">dwr</span>Pro"</span>); &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;} &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="keyword">public</span>&#160;String&#160;getDescription(String&#160;key)&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;{ &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="keyword">return</span>&#160;resource.getString(key); &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;} &#160;&#160;
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt">}&#160;&#160; </li>
</ol>
</div>
<p>（3）编写属性文件<span class="hilite1">dwr</span>Pro_zh_CN.propertie（中文）和<span class="hilite1">dwr</span>_en.properties（英文）</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt">username_hasUsed&#160;=&#160;用户名已用，请选择别的用户名 &#160;&#160;
    </li>
    <li class="">username_canUse&#160;&#160;=&#160;恭喜！用户名可以使用 &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;
    </li>
    <li class="">username_hasUsed&#160;=username&#160;has&#160;used! &#160;&#160;
    </li>
    <li class="alt">username_canUse&#160;&#160;=&#160;username&#160;can&#160;use!&#160;&#160; </li>
</ol>
</div>
<p>&#160;</p>
<p>（4）配置<span class="hilite1">dwr</span>.xml，里面用了spring的bean 和java类</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span class="tag">&lt;<span class="tag-name"><span class="hilite1">dwr</span></span><span class="tag">></span>&#160;&#160;</span>
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">allow</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">create</span>&#160;<span class="attribute">creator</span>=<span class="attribute-value">"spring"</span>&#160;<span class="attribute">javascript</span>=<span class="attribute-value">"userManager"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">param</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"beanName"</span>&#160;<span class="attribute">value</span>=<span class="attribute-value">"userManager"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">include</span>&#160;<span class="attribute">method</span>=<span class="attribute-value">"findUserIsExist"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">create</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">create</span>&#160;<span class="attribute">creator</span>=<span class="attribute-value">"new"</span>&#160;<span class="attribute">javascript</span>=<span class="attribute-value">"User"</span>&#160;<span class="attribute">scope</span>=<span class="attribute-value">"application"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">param</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"class"</span>&#160;<span class="attribute">value</span>=<span class="attribute-value">"test.common.GetProperties"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">create</span><span class="tag">></span>&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;<span class="tag"><span class="tag-name">allow</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt"><span class="tag"><span class="tag-name"><span class="hilite1">dwr</span></span><span class="tag">></span>&#160;&#160; </span></li>
</ol>
</div>
<p>spring beanName&#160; 的value =&#8220;userManager&#8221;从applicationContext.xml里取得</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span class="tag">&lt;<span class="tag-name">bean</span>&#160;<span class="attribute">id</span>=<span class="attribute-value">"userManagerTarget"</span>&#160;<span class="attribute">class</span>=<span class="attribute-value">"test.spring.serviceImpl.UserServiceImpl"</span><span class="tag">></span>&#160;&#160;</span>
    </li>
    <li class=""><span class="tag">&lt;</span><span class="tag-name">property</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"userDao"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">ref</span>&#160;<span class="attribute">bean</span>=<span class="attribute-value">"userDao"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class=""><span class="tag"><span class="tag-name">property</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt"><span class="tag"><span class="tag-name">bean</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;<span class="tag">&lt;</span><span class="tag-name">bean</span>&#160;<span class="attribute">id</span>=<span class="attribute-value">"userManager"</span>&#160;<span class="attribute">class</span>=<span class="attribute-value">"org.springframework.aop.framework.ProxyFactoryBean"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">property</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"proxyInterfaces"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">></span>test.spring.service.IUserService<span class="tag"><span class="tag-name">value</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">property</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">property</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"interceptorNames"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">list</span><span class="tag">></span>&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">idref</span>&#160;<span class="attribute">bean</span>=<span class="attribute-value">"transactionInterceptor"</span><span class="tag">/></span>&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">idref</span>&#160;<span class="attribute">bean</span>=<span class="attribute-value">"userManagerTarget"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">list</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">property</span><span class="tag">></span>&#160;&#160;&#160;&#160; &#160;&#160; </span>
    </li>
    <li class="">&#160;<span class="tag"><span class="tag-name">bean</span><span class="tag">></span>&#160;&#160;&#160; </span></li>
</ol>
</div>
<p>这里应该大家都懂，就不罗嗦了</p>
<p>&#160;</p>
<p>（5）配好了这些，就可以在页面里用了</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><!--page&#160;language=<span class="string">"java"&#160;pageEncoding=<span class="string">"UTF-8"</span><span-->&#160;&#160;</span></span>
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;
    </li>
    <li class=""><!--ctype&#160;html&#160;public&#160;</sp--><span class="string">"-//W3C//DTD&#160;HTML&#160;4.01&#160;Transitional//EN"> &#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;
    </li>
    <li class="">&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;
    <script&#160;type='text javascript?&#160; src="dwr/</span"><span class="keyword">interface/userManager.js'&gt; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;
    <script&#160;type='text javascript?&#160; src="dwr/engine.js"> &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;
    <script&#160;type='text javascript?&#160; src="dwr/</span"><span class="keyword">interface/GetProperties.js'&gt; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;
    <script&#160;type='text javascript?>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"0"&gt; &nbsp;&nbsp; </span>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <tr>
    </tr>
    &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <td>&nbsp;</td>
    Login: &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <td>&nbsp;</td>
    <span class="string">"text"&nbsp;name=<span class="string">"user.name"</span>&nbsp;id=<span class="string">"username"</span>&nbsp;onblur=<span class="string">"checkName()"</span>/&gt;<span class="string">"check_username"&gt; &nbsp;&nbsp;</span> </span>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <tr>
    </tr>
    &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <td>&nbsp;</td>
    Password: &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <td>&nbsp;</td>
    <span class="string">"password"&nbsp;name=<span class="string">"user.password"</span>&nbsp;id=<span class="string">"username"</span>&nbsp;onblur=<span class="string">"checkpassword()"</span>/&gt;<span class="string">"check_password"&gt; &nbsp;&nbsp;</span> </span>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <tr>
    </tr>
    &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"2"&nbsp;align=<span class="string">"center"</span>&gt; &nbsp;&nbsp; </span>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;
    <li class="">&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt"></li>
</ol>
</div>
<p>&nbsp;</p>
<p>这里当填了Login框，当光标从输入框移开时就实行了</p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span class="keyword">function&nbsp;checkName() &nbsp;&nbsp;</span>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span>&nbsp;username&nbsp;=&nbsp;document.userForm.username.value; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userManager.findUserIsExist(username,callback); &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; </li>
</ol>
</div>
<p>&nbsp;</p>
<p><font face="Arial">userManager.findUserIsExist(username,callback)时关键，这里就用了</font></p>
<p><font face="Arial">&nbsp;
<script src="dwr/interface/userManager.js" type="text/javascript"></script>
<p>&#160;</p>
<p>读取<span class="hilite1">dwr</span>.xml的<font face="Arial">userManager，然后读取applicationContext.xml里<font face="Arial">userManager&#160; bean ，进而实行<font face="Arial">findUserIsExist方法。</font></font></font></p>
<p>&#160;</p>
</span></li>
</ol>
</div>
<img src ="http://www.blogjava.net/1504/aggbug/219702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-03 15:31 <a href="http://www.blogjava.net/1504/archive/2008/08/03/219702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 CAS 在 Tomcat 中实现单点登录</title><link>http://www.blogjava.net/1504/archive/2008/08/03/219699.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Sun, 03 Aug 2008 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/03/219699.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/219699.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/03/219699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/219699.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/219699.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt;">转自：http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html<br />
<img alt="" src="http://www.ibm.com/i/c.gif" width="10" height="1" />
<table width="160" align="right" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td width="10"><img alt="" src="http://www.ibm.com/i/c.gif" width="10" height="1" /></td>
            <td>
            <table width="150" border="0" cellpadding="0" cellspacing="0">
                <tbody>
                    <tr>
                        <td>文档选项</td>
                    </tr>
                </tbody>
            </table>
            <table border="0" cellpadding="0" cellspacing="0">
                <tbody>
                    <tr>
                        <td width="150"><noscript>
                        <tr valign="top">
                            <td width="8"><img alt="" height="1" width="8" src="//www.ibm.com/i/c.gif"/ /></td>
                            <td width="16"><img alt="" width="16" height="16" src="//www.ibm.com/i/c.gif"/ /></td>
                            <td width="122">
                            <p>未显示需要 JavaScript 的文档选项</p>
                            </td>
                        </tr>
                        </noscript>
                        <table width="143" border="0" cellpadding="0" cellspacing="0">
                            <script language="JavaScript" type="text/javascript">
                            <!--
                            document.write('
                            <tr valign="top">
                                <td width="8"><img src="//www.ibm.com/i/c.gif" width="8" height="1" alt=""/ /></td>
                                <td width="16"><img alt="将打印机的版面设置成横向打印模式" height="16" src="//www.ibm.com/i/v14/icons/printer.gif" width="16" vspace="3" /></td>
                                <td width="122">
                                <p><strong><a href="javascript:print()">打印本页</a></strong></p>
                                </td>
                            </tr>
                            ');
                            //-->
                            </script>
                            <tbody>
                                <tr valign="top">
                                    <td width="8"><img src="http://www.ibm.com/i/c.gif" alt="" width="8" height="1" /></td>
                                    <td width="16"><img alt="将打印机的版面设置成横向打印模式" src="http://www.ibm.com/i/v14/icons/printer.gif" vspace="3" width="16" height="16" /></td>
                                    <td width="122">
                                    <p><strong><a href="javascript:print()">打印本页</a></strong></p>
                                    </td>
                                </tr>
                                <input value="单点登录（Single Sign On , 简称 SSO
                                ）是目前比较流行的服务于企业业务整合的解决方案之一， SSO
                                使得在多个应用系统中，用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication
                                Service)是一款不错的针对 Web 应用的单点登录框架，本文介绍了 CAS 的原理、协议、在 Tomcat 中的配置和使用，对于采用
                                CAS 实现轻量级单点登录解决方案的入门读者具有一定指导作用。" name="body" type="hidden" /><input value="使用 CAS 在 Tomcat 中实现单点登录" name="subject" type="hidden" /><input value="cn" name="lang" type="hidden" />
                                <script language="JavaScript" type="text/javascript">
                                <!--
                                document.write('
                                <tr valign="top">
                                    <td width="8"><img src="//www.ibm.com/i/c.gif" width="8" height="1" alt=""/ /></td>
                                    <td width="16"><img src="//www.ibm.com/i/v14/icons/em.gif" height="16" width="16" vspace="3" alt="将此页作为电子邮件发送" /></td>
                                    <td width="122">
                                    <p><a href="javascript:document.email.submit();"><strong>将此页作为电子邮件发送</strong></a></p>
                                    </td>
                                </tr>
                                ');
                                //-->
                                </script>
                                <tr valign="top">
                                    <td width="8"><img src="http://www.ibm.com/i/c.gif" alt="" width="8" height="1" /></td>
                                    <td width="16"><img src="http://www.ibm.com/i/v14/icons/em.gif" alt="将此页作为电子邮件发送" vspace="3" width="16" height="16" /></td>
                                    <td width="122">
                                    <p><a href="javascript:document.email.submit();"><strong>将此
                                    页作为电子邮件发送</strong></a></p>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            </td>
        </tr>
    </tbody>
</table>
<p>级
别： 初级</p>
<p><a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#author">张
涛</a> (<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#122;&#122;&#104;&#97;&#110;&#103;&#116;&#64;&#99;&#110;&#46;&#105;&#98;&#109;&#46;&#99;&#111;&#109;&#63;&#115;&#117;&#98;&#106;&#101;&#99;&#116;&#61;&#37;&#69;&#52;&#37;&#66;&#68;&#37;&#66;&#70;&#37;&#69;&#55;&#37;&#57;&#52;&#37;&#65;&#56;&#37;&#50;&#48;&#67;&#65;&#83;&#37;&#50;&#48;&#37;&#69;&#53;&#37;&#57;&#67;&#37;&#65;&#56;&#37;&#50;&#48;&#84;&#111;&#109;&#99;&#97;&#116;&#37;&#50;&#48;&#37;&#69;&#52;&#37;&#66;&#56;&#37;&#65;&#68;&#37;&#69;&#53;&#37;&#65;&#69;&#37;&#57;&#69;&#37;&#69;&#55;&#37;&#56;&#69;&#37;&#66;&#48;&#37;&#69;&#53;&#37;&#56;&#68;&#37;&#57;&#53;&#37;&#69;&#55;&#37;&#56;&#50;&#37;&#66;&#57;&#37;&#69;&#55;&#37;&#57;&#57;&#37;&#66;&#66;&#37;&#69;&#53;&#37;&#66;&#68;&#37;&#57;&#53;">zzhangt@cn.ibm.com</a>),
软件工程师, IBM<br />
<a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#author">王
秉坤</a> (<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#119;&#97;&#110;&#103;&#98;&#107;&#64;&#99;&#110;&#46;&#105;&#98;&#109;&#46;&#99;&#111;&#109;&#63;&#115;&#117;&#98;&#106;&#101;&#99;&#116;&#61;&#37;&#69;&#52;&#37;&#66;&#68;&#37;&#66;&#70;&#37;&#69;&#55;&#37;&#57;&#52;&#37;&#65;&#56;&#37;&#50;&#48;&#67;&#65;&#83;&#37;&#50;&#48;&#37;&#69;&#53;&#37;&#57;&#67;&#37;&#65;&#56;&#37;&#50;&#48;&#84;&#111;&#109;&#99;&#97;&#116;&#37;&#50;&#48;&#37;&#69;&#52;&#37;&#66;&#56;&#37;&#65;&#68;&#37;&#69;&#53;&#37;&#65;&#69;&#37;&#57;&#69;&#37;&#69;&#55;&#37;&#56;&#69;&#37;&#66;&#48;&#37;&#69;&#53;&#37;&#56;&#68;&#37;&#57;&#53;&#37;&#69;&#55;&#37;&#56;&#50;&#37;&#66;&#57;&#37;&#69;&#55;&#37;&#57;&#57;&#37;&#66;&#66;&#37;&#69;&#53;&#37;&#66;&#68;&#37;&#57;&#53;">wangbk@cn.ibm.com</a>),
软件工程师, IBM<br />
</p>
<p>2008 年  4 月  10 日</p>
<blockquote>单点登录（Single Sign
On , 简称 SSO ）是目前比较流行的服务于企业业务整合的解决方案之一， SSO
使得在多个应用系统中，用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication
Service)是一款不错的针对 Web 应用的单点登录框架，本文介绍了 CAS 的原理、协议、在 Tomcat 中的配置和使用，对于采用
CAS 实现轻量级单点登录解决方案的入门读者具有一定指导作用。</blockquote>
<p><a name="2.CAS 介绍">CAS 介绍</a></p>
<p>CAS 是 Yale 大学发起的一个开源项目，旨在为 Web 应用系统提供一种可靠的单点登录方法，CAS 在
2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点：</p>
<ul>
    <li>
    开源的企业级单点登录解决方案。</li>
    <li>
    CAS Server 为需要独立部署的 Web 应用。</li>
    <li>
    CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用)，包括 Java, .Net, PHP, Perl,
    Apache, uPortal, Ruby 等。</li>
</ul>
<p><a name="N1008D">CAS 原理和协议</a></p>
<p>从结构上看，CAS 包含两个部分： CAS Server 和 CAS Client。CAS Server
需要独立部署，主要负责对用户的认证工作；CAS Client 负责处理对客户端受保护资源的访问请求，需要登录时，重定向到 CAS
Server。图1 是 CAS 最基本的协议过程：</p>
<br />
<a name="N10098"><strong>图 1. CAS 基础协议</strong></a><br />
<img alt="CAS 基础协议" src="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/images/image001.jpg" width="467" height="341" />
<br />
<p>CAS Client 与受保护的客户端应用部署在一起，以 Filter
方式保护受保护的资源。对于访问受保护资源的每个 Web 请求，CAS Client 会分析该请求的 Http 请求中是否包含 Service
Ticket，如果没有，则说明当前用户尚未登录，于是将请求重定向到指定好的 CAS  Server 登录地址，并传递 Service
（也就是要访问的目的资源地址），以便登录成功过后转回该地址。用户在第 3 步中输入认证信息，如果登录成功，CAS Server
随机产生一个相当长度、唯一、不可伪造的 Service Ticket，并缓存以待将来验证，之后系统自动重定向到 Service
所在地址，并为客户端浏览器设置一个 Ticket Granted Cookie（TGC），CAS Client 在拿到 Service
和新产生的 Ticket 过后，在第 5，6 步中与 CAS Server 进行身份合适，以确保 Service Ticket 的合法性。</p>
<p>在该协议中，所有与 CAS 的交互均采用 SSL 协议，确保，ST 和 TGC 的安全性。协议工作过程中会有 2
次重定向的过程，但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。</p>
<p>另外，CAS 协议中还提供了 Proxy （代理）模式，以适应更加高级、复杂的应用场景，具体介绍可以参考 CAS
官方网站上的相关文档。</p>
<p><a name="N100B0">准备工作</a></p>
<p>本文中的例子以 tomcat5.5 为例进行讲解，下载地址：</p>
<p>
<a href="http://tomcat.apache.org/download-55.cgi">http://tomcat.apache.org/download-55.cgi</a>
</p>
<p>到 CAS 官方网站下载 CAS Server 和 Client，地址分别为：</p>
<p>
<a href="http://www.ja-sig.org/downloads/cas/cas-server-3.1.1-release.zip">http://www.ja-sig.org/downloads/cas/cas-server-3.1.1-release.zip</a>
</p>
<p>
<a href="http://www.ja-sig.org/downloads/cas-clients/cas-client-java-2.1.1.zip">http://www.ja-sig.org/downloads/cas-clients/cas-client-java-2.1.1.zip</a>
</p>
<br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br />
            <img alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" height="6" /></td>
        </tr>
    </tbody>
</table>
<table align="right" cellpadding="0" cellspacing="0">
    <tbody>
        <tr align="right">
            <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br />
            <table border="0" cellpadding="0" cellspacing="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" width="16" border="0" height="16" /><br />
                        </td>
                        <td valign="top" align="right"><a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#main" class="fbox"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="3.部署 CAS Server">部署 CAS Server</a></p>
<p>CAS Server 是一套基于 Java 实现的服务，该服务以一个 Java Web Application
单独部署在与 servlet2.3 兼容的 Web 服务器上，另外，由于 Client 与 CAS Server 之间的交互采用 Https
协议，因此部署 CAS Server 的服务器还需要支持 SSL 协议。当 SSL 配置成功过后，像普通 Web 应用一样将 CAS
Server 部署在服务器上就能正常运行了，不过，在真正使用之前，还需要扩展验证用户的接口。</p>
<p>在 Tomcat 上部署一个完整的 CAS Server 主要按照以下几个步骤：</p>
<p><a name="N100DD"><span>配置 Tomcat 使用
Https 协议</span></a></p>
<p>如果希望 Tomcat 支持 Https，主要的工作是配置 SSL 协议，其配置过程和配置方法可以参考
Tomcat 的相关文档。不过在生成证书的过程中，会有需要用到主机名的地方，CAS 建议不要使用 IP 地址，而要使用机器名或域名。</p>
<p><a name="N100E6">部署 CAS Server</a></p>
<p>CAS Server 是一个 Web 应用包，将前面下载的
cas-server-3.1.1-release.zip 解开，把其中的 cas-server-webapp-3.1.1.war 拷贝到
tomcat的 webapps 目录，并更名为 cas.war。由于前面已配置好 tomcat 的 https 协议，可以重新启动
tomcat，然后访问：https://localhost:8443/cas ，如果能出现正常的 CAS 登录页面，则说明 CAS Server
已经部署成功。</p>
<p>虽然 CAS Server
已经部署成功，但这只是一个缺省的实现，在实际使用的时候，还需要根据实际概况做扩展和定制，最主要的是扩展认证 (Authentication)
接口和 CAS Server 的界面。</p>
<p><a name="N100F2">扩展认证接口</a></p>
<p>CAS Server 负责完成对用户的认证工作，它会处理登录时的用户凭证 (Credentials)
信息，用户名/密码对是最常见的凭证信息。CAS Server 可能需要到数据库检索一条用户帐号信息，也可能在 XML
文件中检索用户名/密码，还可能通过 LDAP Server 获取等，在这种情况下，CAS 提供了一种灵活但统一的接口和实现分离的方式，实际使用中
CAS 采用哪种方式认证是与 CAS 的基本协议分离开的，用户可以根据认证的接口去定制和扩展。</p>
<p>
<strong>扩展 AuthenticationHandler</strong>
</p>
<p>CAS 提供扩展认证的核心是 AuthenticationHandler 接口，该接口定义如清单 1 下：</p>
<br />
<a name="N10107"><strong>清单 1. AuthenticationHandler定义</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            public interface AuthenticationHandler {<br />
            /**<br />
            * Method to determine if the credentials supplied are valid.<br />
            * @param credentials The credentials to validate.<br />
            * @return true if valid, return false otherwise.<br />
            * @throws AuthenticationException An AuthenticationException can contain<br />
            * details about why a particular authentication request failed.<br />
            */<br />
            boolean authenticate(Credentials credentials) throws AuthenticationException;<br />
            /**<br />
            * Method to check if the handler knows how to handle the credentials<br />
            * provided. It may be a simple check of the Credentials class or something<br />
            * more complicated such as scanning the information contained in the<br />
            * Credentials object. <br />
            * @param credentials The credentials to check.<br />
            * @return true if the handler supports the Credentials, false othewrise.<br />
            */<br />
            boolean supports(Credentials credentials);<br />
            }<br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>该接口定义了 2 个需要实现的方法，supports ()方法用于检查所给的包含认证信息的Credentials
是否受当前 AuthenticationHandler 支持；而 authenticate()
方法则担当验证认证信息的任务，这也是需要扩展的主要方法，根据情况与存储合法认证信息的介质进行交互，返回 boolean 类型的值，true
表示验证通过，false 表示验证失败。</p>
<p>CAS3中还提供了对AuthenticationHandler
接口的一些抽象实现，比如，可能需要在执行authenticate() 方法前后执行某些其他操作，那么可以让自己的认证类扩展自清单 2
中的抽象类：</p>
<br />
<a name="N10117"><strong>清单 2.
AbstractPreAndPostProcessingAuthenticationHandler定义</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            public abstract class AbstractPreAndPostProcessingAuthenticationHandler <br />
            implements AuthenticateHandler{<br />
            protected Log log = LogFactory.getLog(this.getClass());<br />
            protected boolean preAuthenticate(final Credentials credentials) {<br />
            return true;<br />
            }<br />
            protected boolean postAuthenticate(final Credentials credentials,<br />
            final boolean authenticated) {<br />
            return authenticated;<br />
            }<br />
            public final boolean authenticate(final Credentials credentials)<br />
            throws AuthenticationException {<br />
            if (!preAuthenticate(credentials)) {<br />
            return false;<br />
            }<br />
            final boolean authenticated = doAuthentication(credentials);<br />
            return postAuthenticate(credentials, authenticated);<br />
            }<br />
            protected abstract boolean doAuthentication(final Credentials credentials) <br />
            throws AuthenticationException;<br />
            }<br />
            <br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>AbstractPreAndPostProcessingAuthenticationHandler 类新定义了
preAuthenticate() 方法和 postAuthenticate() 方法，而实际的认证工作交由
doAuthentication() 方法来执行。因此，如果需要在认证前后执行一些额外的操作，可以分别扩展 preAuthenticate()和
ppstAuthenticate() 方法，而 doAuthentication() 取代 authenticate()
成为了子类必须要实现的方法。</p>
<p>由于实际运用中，最常用的是用户名和密码方式的认证，CAS3 提供了针对该方式的实现，如清单 3 所示：</p>
<br />
<a name="N10127"><strong>清单 3.
AbstractUsernamePasswordAuthenticationHandler 定义</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            public abstract class AbstractUsernamePasswordAuthenticationHandler extends <br />
            AbstractPreAndPostProcessingAuthenticationHandler{<br />
            ...<br />
            protected final boolean doAuthentication(final Credentials credentials)<br />
            throws AuthenticationException {<br />
            return authenticateUsernamePasswordInternal((UsernamePasswordCredentials) credentials);<br />
            }<br />
            protected abstract boolean authenticateUsernamePasswordInternal(<br />
            final UsernamePasswordCredentials credentials) throws AuthenticationException;   <br />
            protected final PasswordEncoder getPasswordEncoder() {<br />
            return this.passwordEncoder;<br />
            }<br />
            public final void setPasswordEncoder(final PasswordEncoder passwordEncoder) {<br />
            this.passwordEncoder = passwordEncoder;<br />
            }<br />
            ...<br />
            }<br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>基于用户名密码的认证方式可直接扩展自
AbstractUsernamePasswordAuthenticationHandler，验证用户名密码的具体操作通过实现
authenticateUsernamePasswordInternal()
方法达到，另外，通常情况下密码会是加密过的，setPasswordEncoder() 方法就是用于指定适当的加密器。</p>
<p>从以上清单中可以看到，doAuthentication() 方法的参数是 Credentials
类型，这是包含用户认证信息的一个接口，对于用户名密码类型的认证信息，可以直接使用
UsernamePasswordCredentials，如果需要扩展其他类型的认证信息，需要实现Credentials接口，并且实现相应的
CredentialsToPrincipalResolver 接口，其具体方法可以借鉴 UsernamePasswordCredentials 和
UsernamePasswordCredentialsToPrincipalResolver。</p>
<p>
<strong>JDBC 认证方法</strong>
</p>
<p>用户的认证信息通常保存在数据库中，因此本文就选用这种情况来介绍。将前面下载的
cas-server-3.1.1-release.zip 包解开后，在 modules 目录下可以找到包
cas-server-support-jdbc-3.1.1.jar，其提供了通过 JDBC
连接数据库进行验证的缺省实现，基于该包的支持，我们只需要做一些配置工作即可实现 JDBC 认证。</p>
<p>JDBC 认证方法支持多种数据库，DB2, Oracle, MySql, Microsoft SQL Server
等均可，这里以 DB2 作为例子介绍。并且假设DB2数据库名： CASTest，数据库登录用户名： db2user，数据库登录密码：
db2password，用户信息表为： userTable，该表包含用户名和密码的两个数据项分别为 userName 和 password。</p>
<p>
<strong>1. </strong>
<strong>配置</strong>
<strong> DataStore</strong>
</p>
<p>打开文件
%CATALINA_HOME%/webapps/cas/WEB-INF/deployerConfigContext.xml，添加一个新的
bean 标签，对于 DB2，内容如清单 4 所示：</p>
<br />
<a name="N10152"><strong>清单 4. 配置 DataStore</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            &lt;bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource"&gt;<br />
            &lt;property name="driverClassName"&gt;<br />
            &lt;value&gt;com.ibm.db2.jcc.DB2Driver&lt;/value&gt;<br />
            &lt;/property&gt;<br />
            &lt;property name="url"&gt;<br />
            &lt;value&gt;jdbc:db2://9.125.65.134:50000/CASTest&lt;/value&gt;<br />
            &lt;/property&gt;<br />
            &lt;property name="username"&gt;<br />
            &lt;value&gt;db2user&lt;/value&gt;<br />
            &lt;/property&gt;<br />
            &lt;property name="password"&gt;<br />
            &lt;value&gt;db2password&lt;/value&gt;<br />
            &lt;/property&gt;<br />
            &lt;/bean&gt;<br />
            <br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>其中 id 属性为该 DataStore 的标识，在后面配置 AuthenticationHandler
会被引用，另外，需要提供 DataStore 所必需的数据库驱动程序、连接地址、数据库登录用户名以及登录密码。</p>
<p>
<strong>2. 配置 AuthenticationHandler</strong>
</p>
<p>在 cas-server-support-jdbc-3.1.1.jar 包中，提供了 3 个基于 JDBC 的
AuthenticationHandler，分别为 BindModeSearchDatabaseAuthenticationHandler,
QueryDatabaseAuthenticationHandler,
SearchModeSearchDatabaseAuthenticationHandler。其中
BindModeSearchDatabaseAuthenticationHandler
是用所给的用户名和密码去建立数据库连接，根据连接建立是否成功来判断验证成功与
否；QueryDatabaseAuthenticationHandler 通过配置一个 SQL
语句查出密码，与所给密码匹配；SearchModeSearchDatabaseAuthenticationHandler
通过配置存放用户验证信息的表、用户名字段和密码字段，构造查询语句来验证。</p>
<p>使用哪个 AuthenticationHandler，需要在 deployerConfigContext.xml
中设置，默认情况下，CAS 使用一个简单的 username=password 的
AuthenticationHandler，在文件中可以找到如下一行：&lt;bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePassword<br />
AuthenticationHandler"
/&gt;，我们可以将其注释掉，换成我们希望的一个
AuthenticationHandler，比如，使用QueryDatabaseAuthenticationHandler 或
SearchModeSearchDatabaseAuthenticationHandler 可以分别选取清单 5 或清单 6 的配置。</p>
<br />
<a name="N1016D"><strong>清单 5. 使用
QueryDatabaseAuthenticationHandler</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            &lt;bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"&gt;<br />
            &lt;property name="dataSource" ref=" casDataSource " /&gt;<br />
            &lt;property name="sql" <br />
            value="select password from userTable where lower(userName) = lower(?)" /&gt;<br />
            &lt;/bean&gt;<br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<a name="N10177"><strong>清单 6. 使用
SearchModeSearchDatabaseAuthenticationHandler</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            &lt;bean id="SearchModeSearchDatabaseAuthenticationHandler"<br />
            class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"<br />
            abstract="false" singleton="true" lazy-init="default" <br />
            autowire="default" dependency-check="default"&gt;<br />
            &lt;property  name="tableUsers"&gt;<br />
            &lt;value&gt;userTable&lt;/value&gt;<br />
            &lt;/property&gt;<br />
            &lt;property name="fieldUser"&gt;<br />
            &lt;value&gt;userName&lt;/value&gt;<br />
            &lt;/property&gt;<br />
            &lt;property name="fieldPassword"&gt;<br />
            &lt;value&gt;password&lt;/value&gt;<br />
            &lt;/property&gt;<br />
            &lt;property name="dataSource" ref=" casDataSource " /&gt;<br />
            &lt;/bean&gt;<br />
            <br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>另外，由于存放在数据库中的密码通常是加密过的，所以 AuthenticationHandler
在匹配时需要知道使用的加密方法，在 deployerConfigContext.xml 文件中我们可以为具体的
AuthenticationHandler 类配置一个 property，指定加密器类，比如对于
QueryDatabaseAuthenticationHandler，可以修改如清单7所示：</p>
<br />
<a name="N10184"><strong>清单 7. 添加 passwordEncoder</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            &lt;bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"&gt;<br />
            &lt;property name="dataSource" ref=" casDataSource " /&gt;<br />
            &lt;property name="sql" <br />
            value="select password from userTable where lower(userName) = lower(?)" /&gt;<br />
            &lt;property  name="passwordEncoder"  ref="myPasswordEncoder"/&gt;<br />
            &lt;/bean&gt;<br />
            <br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>其中 myPasswordEncoder 是对清单 8 中设置的实际加密器类的引用：</p>
<br />
<a name="N10191"><strong>清单 8. 指定具体加密器类</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            &lt;bean id="passwordEncoder" <br />
            class="org.jasig.cas.authentication.handler.MyPasswordEncoder"/&gt;<br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这里 MyPasswordEncoder 是根据实际情况自己定义的加密器，实现 PasswordEncoder
接口及其 encode() 方法。</p>
<p>
<strong>3. 部署依赖包</strong>
</p>
<p>在以上配置完成以后，需要拷贝几个依赖的包到 cas 应用下，包括：</p>
<ul>
    <li>
    将 cas-server-support-jdbc-3.1.1.jar 拷贝到 %CATALINA_HOME%/webapps/cas/
    WEB-INF/lib 目录。</li>
    <li>
    数据库驱动，由于这里使用 DB2，将 %DB2_HOME%/java 目录下的 db2java.zip （更名为 db2java.jar）,
    db2jcc.jar, db2jcc_license_cu.jar 拷贝到
    %CATALINA_HOME%/webapps/cas/WEB-INF/lib 目录。对于其他数据库，同样将相应数据库驱动程序拷贝到该目录。</li>
    <li>
    DataStore 依赖于 commons-collections-3.2.jar, commons-dbcp-1.2.1.jar,
    commons-pool-1.3.jar，需要到 apache 网站的 Commons 项目下载以上 3 个包放进
    %CATALINA_HOME%/webapps/cas/WEB-INF/lib 目录。</li>
</ul>
<p><a name="N101B0"><span>扩展 CAS Server
界面</span></a></p>
<p>CAS 提供了 2 套默认的页面，分别为&#8220; default &#8221;和&#8220; simple &#8221;，分别在目录&#8220;
cas/WEB-INF/view/jsp/default &#8221;和&#8220; cas/WEB-INF/view/jsp/simple &#8221;下。其中
default 是一个稍微复杂一些的页面，使用 CSS，而 simple 则是能让 CAS 正常工作的最简化的页面。</p>
<p>在部署 CAS 之前，我们可能需要定制一套新的 CAS Server
页面，添加一些个性化的内容。最简单的方法就是拷贝一份 default 或 simple 文件到&#8220; cas/WEB-INF/view/jsp
&#8221;目录下，比如命名为 newUI，接下来是实现和修改必要的页面，有 4 个页面是必须的：</p>
<ul>
    <li>
    casConfirmView.jsp: 当用户选择了&#8220; warn &#8221;时会看到的确认界面</li>
    <li>
    casGenericSuccess.jsp: 在用户成功通过认证而没有目的Service时会看到的界面</li>
    <li>
    casLoginView.jsp: 当需要用户提供认证信息时会出现的界面</li>
    <li>
    casLogoutView.jsp: 当用户结束 CAS 单点登录系统会话时出现的界面</li>
</ul>
<p>CAS 的页面采用 Spring 框架编写，对于不熟悉 Spring 的使用者，在修改之前需要熟悉该框架。</p>
<p>页面定制完过后，还需要做一些配置从而让 CAS 找到新的页面，拷贝&#8220;
cas/WEB-INF/classes/default_views.properties &#8221;，重命名为&#8220;
cas/WEB-INF/classes/ newUI_views.properties &#8221;，并修改其中所有的值到相应新页面。最后是更新&#8220;
cas/WEB-INF/cas-servlet.xml &#8221;文件中的 viewResolver，将其修改为如清单 9 中的内容。</p>
<br />
<a name="N101D4"><strong>清单 9. 指定 CAS 页面</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            &lt;bean id="viewResolver" <br />
            class="org.springframework.web.servlet.view.ResourceBundleViewResolver" p:order="0"&gt;<br />
            &lt;property name="basenames"&gt;<br />
            &lt;list&gt;<br />
            &lt;value&gt;${cas.viewResolver.basename}&lt;/value&gt;<br />
            &lt;value&gt; newUI_views&lt;/value&gt;<br />
            &lt;/list&gt;<br />
            &lt;/property&gt;<br />
            &lt;/bean&gt;<br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br />
            <img alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" height="6" /></td>
        </tr>
    </tbody>
</table>
<table align="right" cellpadding="0" cellspacing="0">
    <tbody>
        <tr align="right">
            <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br />
            <table border="0" cellpadding="0" cellspacing="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" width="16" border="0" height="16" /><br />
                        </td>
                        <td valign="top" align="right"><a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#main" class="fbox"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="4.部署客户端应用">部署客户端应用</a></p>
<p>单点登录的目的是为了让多个相关联的应用使用相同的登录过程，本文在讲解过程中构造 2个简单的应用，分别以
casTest1 和 casTest2 来作为示例，它们均只有一个页面，显示欢迎信息和当前登录用户名。这 2
个应用使用同一套登录信息，并且只有登录过的用户才能访问，通过本文的配置，实现单点登录，即只需登录一次就可以访问这两个应用。</p>
<p><a name="N101E4"><span>与 CAS Server
建立信任关系</span></a></p>
<p>假设 CAS Server 单独部署在一台机器 A，而客户端应用部署在机器 B 上，由于客户端应用与 CAS
Server 的通信采用 SSL，因此，需要在 A 与 B 的 JRE 之间建立信任关系。</p>
<p>首先与 A 机器一样，要生成 B 机器上的证书，配置 Tomcat 的 SSL 协议。其次，下载<a href="http://blogs.sun.com/andreas/entry/no_more_unable_to_find">http://blogs.sun.com/andreas/entry/no_more_unable_to_find</a>
的 InstallCert.java，运行&#8220; java InstallCert compA:8443 &#8221;命令，并且在接下来出现的询问中输入
1。这样，就将 A 添加到了 B 的 trust store 中。如果多个客户端应用分别部署在不同机器上，那么每个机器都需要与 CAS
Server 所在机器建立信任关系。</p>
<p><a name="N101F4">配置 CAS Filter</a></p>
<p>准备好应用 casTest1 和 casTest2 过后，分别部署在 B 和 C 机器上，由于 casTest1
和casTest2，B 和 C 完全等同，我们以 casTest1 在 B 机器上的配置做介绍，假设 A 和 B 的域名分别为 domainA 和
domainB。</p>
<p>将 cas-client-java-2.1.1.zip 改名为 cas-client-java-2.1.1.jar
并拷贝到 casTest1/WEB-INF/lib目录下，修改 web.xml 文件，添加 CAS Filter，如清单 10 所示：</p>
<br />
<a name="N10203"><strong>清单 10. 添加 CAS Filter</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            &lt;web-app&gt;<br />
            ...<br />
            &lt;filter&gt;<br />
            &lt;filter-name&gt;CAS Filter&lt;/filter-name&gt;<br />
            &lt;filter-class&gt;edu.yale.its.tp.cas.client.filter.CASFilter&lt;/filter-class&gt;<br />
            &lt;init-param&gt;<br />
            &lt;param-name&gt;edu.yale.its.tp.cas.client.filter.loginUrl&lt;/param-name&gt;<br />
            &lt;param-value&gt;https://domainA:8443/cas/login&lt;/param-value&gt;<br />
            &lt;/init-param&gt;<br />
            &lt;init-param&gt;<br />
            &lt;param-name&gt;edu.yale.its.tp.cas.client.filter.validateUrl&lt;/param-name&gt;<br />
            &lt;param-value&gt;https://domainA:8443/cas/serviceValidate&lt;/param-value&gt;<br />
            &lt;/init-param&gt;<br />
            &lt;init-param&gt;<br />
            &lt;param-name&gt;edu.yale.its.tp.cas.client.filter.serverName&lt;/param-name&gt;<br />
            &lt;param-value&gt;domainB:8080&lt;/param-value&gt;<br />
            &lt;/init-param&gt;<br />
            &lt;/filter&gt;<br />
            &lt;filter-mapping&gt;<br />
            &lt;filter-name&gt;CAS Filter&lt;/filter-name&gt;<br />
            &lt;url-pattern&gt;/protected-pattern/*&lt;/url-pattern&gt;<br />
            &lt;/filter-mapping&gt;<br />
            ...<br />
            &lt;/web-app&gt;<br />
            <br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>对于所有访问满足 casTest1/protected-pattern/ 路径的资源时，都要求到 CAS
Server 登录，如果需要整个 casTest1 均受保护，可以将 url-pattern 指定为&#8220;/*&#8221;。</p>
<p>从清单 10 可以看到，我们可以为 CASFilter 指定一些参数，并且有些是必须的，<a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#_Ref188033615">表
格 1</a> 和<a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#_Ref188033632">表
格 2</a> 中分别是必需和可选的参数：</p>
<br />
<a name="表格1|table"><strong>表格 1. CASFilter 必需的参数</strong></a><br />
<table border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            <strong>参数名</strong>
            </td>
            <td style="text-align: left; vertical-align: top;">
            <strong>作用</strong>
            </td>
        </tr>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            edu.yale.its.tp.cas.client.filter.loginUrl
            </td>
            <td style="text-align: left; vertical-align: top;">
            指定 CAS 提供登录页面的 URL
            </td>
        </tr>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            edu.yale.its.tp.cas.client.filter.validateUrl
            </td>
            <td style="text-align: left; vertical-align: top;">
            指定 CAS 提供 service ticket 或 proxy ticket 验证服务的 URL
            </td>
        </tr>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            edu.yale.its.tp.cas.client.filter.serverName
            </td>
            <td style="text-align: left; vertical-align: top;">
            指定客户端的域名和端口，是指客户端应用所在机器而不是 CAS Server 所在机器，该参数或 serviceUrl 至少有一个必须指定
            </td>
        </tr>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            edu.yale.its.tp.cas.client.filter.serviceUrl
            </td>
            <td style="text-align: left; vertical-align: top;">
            该参数指定过后将覆盖 serverName 参数，成为登录成功过后重定向的目的地址
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<a name="表格2|table"><strong>表格 2. CASFilter 可选参数</strong></a><br />
<table border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            <strong>参数名</strong>
            </td>
            <td style="text-align: left; vertical-align: top;">
            <strong>作用</strong>
            </td>
        </tr>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            edu.yale.its.tp.cas.client.filter.proxyCallbackUrl
            </td>
            <td style="text-align: left; vertical-align: top;">
            用于当前应用需要作为其他服务的代理(proxy)时获取 Proxy Granting Ticket 的地址
            </td>
        </tr>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            edu.yale.its.tp.cas.client.filter.authorizedProxy
            </td>
            <td style="text-align: left; vertical-align: top;">
            用于允许当前应用从代理处获取 proxy tickets，该参数接受以空格分隔开的多个 proxy
            URLs，但实际使用只需要一个成功即可。当指定该参数过后，需要修改 validateUrl 到 proxyValidate，而不再是
            serviceValidate
            </td>
        </tr>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            edu.yale.its.tp.cas.client.filter.renew
            </td>
            <td style="text-align: left; vertical-align: top;">
            如果指定为 true，那么受保护的资源每次被访问时均要求用户重新进行验证，而不管之前是否已经通过
            </td>
        </tr>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            edu.yale.its.tp.cas.client.filter.wrapRequest
            </td>
            <td style="text-align: left; vertical-align: top;">
            如果指定为 true，那么 CASFilter 将重新包装 HttpRequest,并且使 getRemoteUser()
            方法返回当前登录用户的用户名
            </td>
        </tr>
        <tr>
            <td style="text-align: left; vertical-align: top;">
            edu.yale.its.tp.cas.client.filter.gateway
            </td>
            <td style="text-align: left; vertical-align: top;">
            指定 gateway 属性
            </td>
        </tr>
    </tbody>
</table>
<br />
<p><a name="N102BB">传递登录用户名</a></p>
<p>CAS 在登录成功过后，会给浏览器回传 Cookie，设置新的到的 Service
Ticket。但客户端应用拥有各自的 Session，我们要怎么在各个应用中获取当前登录用户的用户名呢？CAS Client 的 Filter
已经做好了处理，在登录成功后，就可以直接从 Session 的属性中获取，如清单 11 所示：</p>
<br />
<a name="N102C7"><strong>清单 11. 在 Java 中通过 Session 获取登录用户名</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            // 以下两者都可以<br />
            session.getAttribute(CASFilter.CAS_FILTER_USER);<br />
            session.getAttribute("edu.yale.its.tp.cas.client.filter.user");<br />
            <br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>在 JSTL 中获取用户名的方法如清单 12 所示：</p>
<br />
<a name="N102D4"><strong>清单 12. 通过 JSTL 获取登录用户名</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            &lt;c:out value="${sessionScope[CAS:'edu.yale.its.tp.cas.client.filter.user']}"/&gt;<br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>另外，CAS 提供了一个 CASFilterRequestWrapper
类，该类继承自HttpServletRequestWrapper，主要是重写了 getRemoteUser() 方法，只要在前面配置
CASFilter 的时候为其设置&#8220; edu.yale.its.tp.cas.client.filter.wrapRequest &#8221;参数为
true，就可以通过 getRemoteUser（） 方法来获取登录用户名，具体方法如清单 13 所示：</p>
<br />
<a name="N102E1"><strong>清单 13. 通过 CASFilterRequestWrapper
获取登录用户名</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            CASFilterRequestWrapper  reqWrapper=new CASFilterRequestWrapper(request);<br />
            out.println("The logon user:" + reqWrapper.getRemoteUser());<br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br />
            <img alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" height="6" /></td>
        </tr>
    </tbody>
</table>
<table align="right" cellpadding="0" cellspacing="0">
    <tbody>
        <tr align="right">
            <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br />
            <table border="0" cellpadding="0" cellspacing="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" width="16" border="0" height="16" /><br />
                        </td>
                        <td valign="top" align="right"><a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#main" class="fbox"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="5.效果">效果</a></p>
<p>在 casTest1 和 casTest2 中，都有一个简单 Servlet 作为欢迎页面
WelcomPage，且该页面必须登录过后才能访问，页面代码如清单 14 所示：</p>
<br />
<a name="N102F4"><strong>清单 14. WelcomePage 页面代码</strong></a><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre>                <br />
            public class WelcomePage extends HttpServlet {<br />
            public void doGet(HttpServletRequest request, HttpServletResponse response)<br />
            throws IOException, ServletException<br />
            {<br />
            response.setContentType("text/html");<br />
            PrintWriter out = response.getWriter();<br />
            out.println("&lt;html&gt;");<br />
            out.println("&lt;head&gt;");<br />
            out.println("&lt;title&gt;Welcome to casTest2 sample System!&lt;/title&gt;");<br />
            out.println("&lt;/head&gt;");<br />
            out.println("&lt;body&gt;");<br />
            out.println("&lt;h1&gt;Welcome to casTest1 sample System!&lt;/h1&gt;");<br />
            CASFilterRequestWrapper  reqWrapper=new CASFilterRequestWrapper(request);<br />
            out.println("&lt;p&gt;The logon user:" + reqWrapper.getRemoteUser() + "&lt;/p&gt;");<br />
            HttpSession session=request.getSession();<br />
            out.println("&lt;p&gt;The logon user:" + <br />
            session.getAttribute(CASFilter.CAS_FILTER_USER)  + "&lt;/p&gt;");<br />
            out.println("&lt;p&gt;The logon user:" + <br />
            session.getAttribute("edu.yale.its.tp.cas.client.filter.user") + "&lt;/p&gt;");<br />
            out.println("&lt;/body&gt;");<br />
            out.println("&lt;/html&gt;");<br />
            }<br />
            }<br />
            <br />
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>在上面所有配置结束过后，分别在 A， B， C上启动 cas， casTest1 和
casTest2，按照下面步骤来访问 casTest1 和 casTest2：</p>
<ol type="1">
    <li>
    打开浏览器，访问 <a href="http://domainb:8080/casTest1/WelcomePage">http://domainB:8080/casTest1/WelcomePage</a>
    ，浏览器会弹出安全提示，接受后即转到 CAS 的登录页面，如图 2 所示：</li>
</ol>
<br />
<a name="_Ref188554660"><strong>图 2. CAS 登录页面</strong></a><br />
<img alt="CAS 登录页面" src="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/images/image002.jpg" width="553" height="351" />
<br />
<ol type="1">
    <li>
    登录成功后，再重定向到 casTest1 的 WelcomePage 页面，如<a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#_Ref188552289">图
    </a> 所示：</li>
</ol>
<br />
<a name="_Ref188552289"><strong>图 3. 登录后访问 casTest1 的效果</strong></a><br />
<img alt="登录后访问 casTest1 的效果" src="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/images/image003.jpg" width="554" height="315" />
<br />
<p>可以看到<a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#_Ref188552289">图
</a> 中地址栏里的地址多出了一个 ticket 参数，这就是 CAS 分配给当前应用的 ST(Service Ticket)。</p>
<ol type="1">
    <li>
    再在同一个浏览器的地址栏中输入 <a href="http://domainb:8080/casTest1/WelcomePage">http://domainC:8080/casTest2/WelcomePage</a>
    ，系统不再提示用户登录，而直接出现如图 4 所示的页面，并且显示在 casTest1 中已经登录过的用户。</li>
</ol>
<br />
<a name="N1034A"><strong>图 4. 在 casTest1 中登录过后访问 casTest2
的效果</strong></a><br />
<img alt="在 casTest1 中登录过后访问 casTest2 的效果" src="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/images/image004.jpg" width="553" height="307" />
<br />
<ol type="1">
    <li>
    重新打开一个浏览器窗口，先输入 <a href="http://domainb:8080/casTest1/WelcomePage">http://domainC:8080/casTest2/WelcomePage</a>
    ，系统要求登录，在登录成功过后，正确显示 casTest2 的页面。之后再在地址栏重新输入 <a href="http://domainb:8080/casTest1/WelcomePage">http://domainB:8080/casTest1/WelcomePage</a>
    ，会直接显示 casTest1 的页面而无需再次登录。</li>
</ol>
<br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br />
            <img alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" height="6" /></td>
        </tr>
    </tbody>
</table>
<table align="right" cellpadding="0" cellspacing="0">
    <tbody>
        <tr align="right">
            <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br />
            <table border="0" cellpadding="0" cellspacing="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" width="16" border="0" height="16" /><br />
                        </td>
                        <td valign="top" align="right"><a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html#main" class="fbox"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="6.结束语">结束语</a></p>
<p>本文介绍了 CAS 单点登录解决方案的原理，并结合实例讲解了在 Tomcat 中使用 CAS
的配置、部署方法以及效果。CAS 是作为开源单点登录解决方案的一个不错选择，更多的使用细节可以参考 CAS 官方网站。</p>
<br />
<br />
<p><a name="resources">参考资料 </a></p>
<ul>
    <li>
    有关 CAS 方面的信息， 请参考<a href="http://www.ja-sig.org/products/cas">CAS 官方网站</a>。
    <br />
    <br />
    </li>
    <li>
    浏览<a href="http://www.ja-sig.org/facebook/">JA-SIG 社区</a>，与社区分享 Java 技术。
    </li>
</ul>
<br />
<br />
<p><a name="author">作者简介</a></p>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td colspan="3"><img alt="" src="http://www.ibm.com/i/c.gif" width="100%" height="5" /></td>
        </tr>
        <tr valign="top" align="left">
            <td><br />
            </td>
            <td><img alt="" src="http://www.ibm.com/i/c.gif" width="4" height="5" /></td>
            <td width="100%">
            <p>张涛，IBM 中国软件开发实验室工程师，目前主要致力于基于 Rational 平台解决方案的开发。</p>
            </td>
        </tr>
    </tbody>
</table>
<br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td colspan="3"><img alt="" src="http://www.ibm.com/i/c.gif" width="100%" height="5" /></td>
        </tr>
        <tr valign="top" align="left">
            <td><br />
            </td>
            <td><img alt="" src="http://www.ibm.com/i/c.gif" width="4" height="5" /></td>
            <td width="100%">
            <p>王秉坤，IBM 中国软件开发实验室工程师，目前主要致力于基于 Rational 平台解决方案的开发。</p>
            </td>
        </tr>
    </tbody>
</table>
<br />
</span>
<img src ="http://www.blogjava.net/1504/aggbug/219699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-03 15:19 <a href="http://www.blogjava.net/1504/archive/2008/08/03/219699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个简单的DWR例子[收藏]</title><link>http://www.blogjava.net/1504/archive/2008/08/03/219696.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Sun, 03 Aug 2008 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/03/219696.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/219696.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/03/219696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/219696.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/219696.html</trackback:ping><description><![CDATA[<p>什么是DWR？</p>
<p>&nbsp;&nbsp; DWR是一个Open Source的 java项目。DWR可以让JavaScript调用运行在Web服务器里面的JAVA程序。简单一点或者专业一点就是Easy AJAX for JAVA.</p>
<p>下面将一步一步的介绍怎么完成一个简单DEMO</p>
<p>1，从官方网站下载DWR <a href="https://dwr.dev.java.net/files/documents/2427/32252/dwr.war">https://dwr.dev.java.net/files/documents/2427/32252/dwr.war</a>&nbsp;把他直接放到TOMCAT_HOME/webapps 下面</p>
<p>2，编写一个Java类如下：</p>
<blockquote dir="ltr" style="margin-right: 0px">
<p>&nbsp;&nbsp; DWRTest.java</p>
<p>&nbsp;package com.test.ajax;</p>
<p>/**<br />
&nbsp;* <br />
&nbsp;* @author 方见华<br />
&nbsp;*<br />
&nbsp;*/<br />
public class DWRTest {<br />
&nbsp;public DWRTest(){<br />
&nbsp;&nbsp;<br />
&nbsp;}<br />
&nbsp;public String getMyName(){<br />
&nbsp;&nbsp;return "James Fang";<br />
&nbsp;}<br />
}<br />
&nbsp;</p>
</blockquote>
<p dir="ltr">3, 把DRWTest类配置在dwr.xml中，dwr.xml是DWR的配置文件，所有需要在JavaScript中调用的java的类都必须在这个文件中描述&nbsp;。这个文件的位于TOMCAT_HOME/webapps/dwr/WEB-INF/dwr.xml. 在&lt;allow&gt;标签中添加以下内容</p>
<p dir="ltr">&nbsp;&nbsp;&nbsp; &lt;create creator="new" javascript="MyTest" scope="application"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="class" value="com.test.ajax.DWRTest"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/create&gt;</p>
<p dir="ltr">4, 编写调用DWRTest类 getMyName的方法的HTML文件，test.html</p>
<p dir="ltr">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&nbsp; &lt;title&gt;DWR - My First AJAX&lt;/title&gt;<br />
&nbsp; &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />
&nbsp; &lt;script type='text/javascript' src='/dwr/dwr/interface/MyTest.js'&gt;&lt;/script&gt;<br />
&nbsp; &lt;script type='text/javascript' src='/dwr/dwr/engine.js'&gt;&lt;/script&gt;<br />
&nbsp; &lt;script type='text/javascript' src='/dwr/dwr/util.js'&gt;&lt;/script&gt;<br />
&nbsp; &lt;script language="javascript"&gt;<br />
&nbsp; &nbsp;var mycall=function callBack(data){<br />
&nbsp; &nbsp;DWRUtil.setValue("demo1",data);<br />
&nbsp; &nbsp;<br />
&nbsp; &nbsp;}<br />
&nbsp; &nbsp;function showMyName(){<br />
&nbsp; &nbsp;&nbsp;MyTest.getMyName(mycall);&nbsp;<br />
&nbsp; &nbsp;}</p>
<p dir="ltr">&nbsp; &nbsp;function clearName(){<br />
&nbsp; &nbsp;&nbsp;demo1.value="";&nbsp;<br />
&nbsp; &nbsp;}<br />
&nbsp; &lt;/script&gt;<br />
&nbsp; &lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;h1&gt;Ajax Test Page&lt;/h1&gt;<br />
&lt;input type="button" value="setMyName" onclick="javascript:showMyName()"&gt;&lt;input type="button" value="Clear" onclick="javascript:clearName()"&gt;&lt;br&gt;<br />
&lt;input type="text" id="demo1"&gt;&lt;/select&gt;&lt;br&gt;<br />
&lt;/body&gt;&lt;/html&gt;</p>
<p dir="ltr">&nbsp;5, 运行，在浏览器中输入 <a href="http://localhost:8080/dwr/test.html">http://localhost:8080/dwr/test.html</a></p>
<img src ="http://www.blogjava.net/1504/aggbug/219696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-08-03 15:00 <a href="http://www.blogjava.net/1504/archive/2008/08/03/219696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript中获取radio值得方法 【收藏】</title><link>http://www.blogjava.net/1504/archive/2008/07/30/218614.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Wed, 30 Jul 2008 02:37:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/07/30/218614.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/218614.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/07/30/218614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/218614.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/218614.html</trackback:ping><description><![CDATA[<p>Radio 是 HTML 中的单选框，同一个 form 中，name 相同的 Radio 构成一组，这一组中最多只允许有一个 Radio 被选中。</p>
<p>如果将 form 提交到服务器端 ASP 程序，ASP 程序要获得用户选择的那个 Radio 的 value 是非常方便的，用 request.Form("RadioName")，不必理会有几个 Radio。</p>
<p>但在 JS(JavaScript) 中就要复杂多了，我们不能像对其它元素（如：文本框）一样，使用 formid.objName.value 来取值，我们应该循环这个组的 Radio，判断其 checked 属性，再取值。</p>
<p>为了方便使用javascript获取radio的值，我写了一个通用的函数来实现：</p>
<p>function GetRadioValue(RadioName){<br />
&nbsp;&nbsp;&nbsp; var obj;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; obj=document.getElementsByName(RadioName);<br />
&nbsp;&nbsp;&nbsp; if(obj!=null){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;obj.length;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(obj[i].checked){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return obj[i].value;&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; }<br />
&nbsp;&nbsp;&nbsp; return null;<br />
}</p>
<p>比如，我们有一个name属性为：&#8220;myradio&#8221;的单选控件组，要得到选中的值，只需这样调用就可以了：</p>
<p>var RValue;</p>
<p>RValue=GetRadioValue("myradio");</p>
<p>如果没有给出的radioname控件，则直接返回null，或者这一组控件没有被选择的项，则也返回null。</p>
<img src ="http://www.blogjava.net/1504/aggbug/218614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-07-30 10:37 <a href="http://www.blogjava.net/1504/archive/2008/07/30/218614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用Javascript获得和设置FCKeditor值[收藏]</title><link>http://www.blogjava.net/1504/archive/2008/07/30/218613.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Wed, 30 Jul 2008 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/07/30/218613.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/218613.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/07/30/218613.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/218613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/218613.html</trackback:ping><description><![CDATA[<p><font color="#0000ff">利用Javascript取和设FCKeditor值也是非常容易的，如下：</font></p>
<p><font color="#0000ff">// 获取编辑器中HTML内容<br />
function getEditorHTMLContents(EditorName) { <br />
&nbsp;&nbsp;&nbsp; var oEditor = FCKeditorAPI.GetInstance(EditorName); <br />
&nbsp;&nbsp;&nbsp; return(oEditor.GetXHTML(true)); <br />
}</font></p>
<p><font color="#0000ff">// 获取编辑器中文字内容<br />
function getEditorTextContents(EditorName) { <br />
&nbsp;&nbsp;&nbsp; var oEditor = FCKeditorAPI.GetInstance(EditorName); <br />
&nbsp;&nbsp;&nbsp; return(oEditor.EditorDocument.body.innerText); <br />
}</font></p>
<p><font color="#0000ff">// 设置编辑器中内容<br />
function SetEditorContents(EditorName, ContentStr) { <br />
&nbsp;&nbsp;&nbsp; var oEditor = FCKeditorAPI.GetInstance(EditorName) ; <br />
&nbsp;&nbsp;&nbsp; oEditor.SetHTML(ContentStr) ; <br />
}</font></p>
<p><font color="#0000ff">FCKeditorAPI是FCKeditor加载后注册的一个全局对象，利用它我们就可以完成对编辑器的各种操作。</font></p>
<p><font color="#0000ff">在当前页获得 FCK 编辑器实例：<br />
var Editor = FCKeditorAPI.GetInstance('InstanceName');</font></p>
<p><font color="#0000ff">从 FCK 编辑器的弹出窗口中获得 FCK 编辑器实例：<br />
var Editor = window.parent.InnerDialogLoaded().FCK;</font></p>
<p><font color="#0000ff">从框架页面的子框架中获得其它子框架的 FCK 编辑器实例：<br />
var Editor = window.FrameName.FCKeditorAPI.GetInstance('InstanceName');</font></p>
<p><font color="#0000ff">从页面弹出窗口中获得父窗口的 FCK 编辑器实例： <br />
var Editor = opener.FCKeditorAPI.GetInstance('InstanceName');</font></p>
<p><font color="#0000ff">获得 FCK 编辑器的内容：<br />
oEditor.GetXHTML(formatted); // formatted 为：true|false，表示是否按HTML格式取出<br />
也可用： <br />
oEditor.GetXHTML();</font></p>
<p><font color="#0000ff">设置 FCK 编辑器的内容：<br />
oEditor.SetHTML("content", false); // 第二个参数为：true|false，是否以所见即所得方式设置其内容。此方法常用于"设置初始值"或"表单重置"哦作。</font></p>
<p><font color="#0000ff">插入内容到 FCK 编辑器：<br />
oEditor.InsertHtml("html"); // "html"为HTML文本</font></p>
<p><font color="#0000ff">检查 FCK 编辑器内容是否发生变化：<br />
oEditor.IsDirty();</font></p>
<p><font color="#0000ff">在 FCK 编辑器之外调用 FCK 编辑器工具条命令：<br />
命令列表如下：<br />
DocProps, Templates, Link, Unlink, Anchor, BulletedList, NumberedList, About, Find, Replace, Image, Flash, SpecialChar, Smiley, Table, TableProp, TableCellProp, UniversalKey, Style, FontName, FontSize, FontFormat, Source, Preview, Save, NewPage, PageBreak, TextColor, BGColor, PasteText, PasteWord, TableInsertRow, TableDeleteRows, TableInsertColumn, TableDeleteColumns, TableInsertCell, TableDeleteCells, TableMergeCells, TableSplitCell, TableDelete, Form, Checkbox, Radio, TextField, Textarea, HiddenField, Button, Select, ImageButton, SpellCheck, FitWindow, Undo, Redo</font></p>
<p><font color="#0000ff">使用方法如下：<br />
oEditor.Commands.GetCommand('FitWindow').Execute();</font></p>
<font color="#0000ff">= FCKConfig.BasePath + 'plugins/'&nbsp;&nbsp;<br />
// FCKConfig.Plugins.Add( 'placeholder', 'en,it' ) ; <br />
<br />
<br />
去 掉//后，就相当于把placeholder这个插件功能加上了，fckeditor的插件文件都在/editor/plugins/文件夹下分类按文件 夹放置的，对于fckeditor2.0来说，里面有两个文件夹，也就是有两个官方插件，placeholder这个文件夹就是我们刚才加上去的，主要用 于多参数或单参数自定义标签的匹配，这个在制作编辑模板时非常管用，要想看具体实例的话，大家可以去</font><a href="http://www.lioil.net/" target="_blank"><font color="#0000ff">下载</font></a><font color="#0000ff">acms 这个系统查看学习，另一个文件夹tablecommands就是编辑器里的表格编辑用到的了。当然，如果你想制作自己其它用途的插件，那就只要按照 fckeidtor插件的制作规则制作完放置在/editor/plugins/下就行，然后再在fckeidtor.js里再添加 FCKConfig.Plugins.Add('Plugin Name',',lang,lang');就可以了。<br />
<br />
第二部分 ，如何让编辑器一打开的时候，编辑工具条不出现，等点&#8220;展开工具栏&#8221;时才出现？Easy，FCKeditor本身提供了这个功能啦，打开fckconfig.js，找到<br />
<br />
FCKConfig.ToolbarStartExpanded = true ;<br />
改成<br />
FCKConfig.ToolbarStartExpanded = false ;<br />
就可以啦！<br />
<br />
第三部分，使用自己的表情图标，同样打开fckcofnig.js到最底部那一段<br />
<br />
<br />
FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ;<br />
FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif'] ;<br />
FCKConfig.SmileyColumns = 8 ;<br />
FCKConfig.SmileyWindowWidth&nbsp;&nbsp;&nbsp; = 320 ;<br />
FCKConfig.SmileyWindowHeight = 240 ;<br />
<br />
上面这段已经是我修改过的了，为了我发表此文的版面不会被撑得太开，我把FCKConfig.SmileyImages那一行改得只有三个表情图了。<br />
<br />
第一行，当然是表情图标路径的设置，第二行是相关表情图标文件名的一个List，第三行是指弹出的表情添加窗口最每行的表情数，下面两个参数是弹出的模态窗口的宽和高喽。<br />
<br />
第四部分，文件上传管理部分<br />
<br />
此部分可能是大家最为关心的，上一篇文章简单的讲了如何修改来上传文件以及使用fckeidtor2.0才提供的快速上传功能。再我们继续再深层次的讲解上传功能<br />
<br />
FCKConfig.LinkBrowser = true ;<br />
FCKConfig.ImageBrowser = true ;<br />
FCKConfig.FlashBrowser = true ;在fckconfig.js找到这三句，这三句不是连着的哦，只是我把他们集中到这儿来了，设置为true的意思就是允许使用fckeditor来浏览 服务器端的文件图像以及flash等，这个功能是你插入图片时弹出的窗口上那个&#8220;浏览服务器&#8221;按钮可以体现出来，如果你的编辑器只用来自己用或是只在后台 管理用，这个功能无疑很好用，因为他让你很直观地对服务器的文件进行上传操作。但是如果你的系统要面向前台用户或是像blog这样的系统要用的话，这个安 全隐患可就大了哦。于是我们把其一律设置为false;如下<br />
<br />
FCKConfig.LinkBrowser = false ;<br />
FCKConfig.ImageBrowser = false ;<br />
FCKConfig.FlashBrowser = false ;<br />
<br />
这样一来，我们就只有快速上传可用了啊，好！接下来就来修改，同样以asp为范例进行，进入/editor/filemanager/upload/asp/打开config.asp，修改<br />
ConfigUserFilesPath = "/UserFiles/"这个设置是上传文件的总目录，我这里就不动了，你想改自己改了<br />
<br />
好，再打开此目录下的upload.asp文件，找到下面这一段<br />
<br />
<br />
Dim resourceType<br />
If ( Request.QueryString("Type") &lt;&gt; "" ) Then<br />
resourceType = Request.QueryString("Type")<br />
Else<br />
resourceType = "File"<br />
End If <br />
然后再在其后面添加<br />
<br />
<br />
ConfigUserFilesPath = ConfigUserFilesPath &amp; resourceType &amp;"/"&amp; Year(Date()) &amp;"/"&amp; Month(Date()) &amp;"/" <br />
这样的话，上传的文件就进入&#8220;/userfiles/文件类型（如image或file或flash)/年/月/&#8221;这样的文件夹下了，这个设置对单用户来用已经足够了，如果你想给多用户系统用，那就这样来改<br />
<br />
<br />
ConfigUserFilesPath = ConfigUserFilesPath &amp; Session("username") &amp; resourceType &amp;"/"&amp; Year(Date()) &amp;"/"&amp; Month(Date()) &amp;"/" <br />
这样上传的文件就进入&#8220;/userfiles/用户目录/文件类型/年/月/&#8221;下了，当然如果你不想这么安排也可以修改成别的，比如说用户目录再深一层等，这里的Session("username")请根据自己的需要进行修改或换掉。<br />
<br />
上传的目录设置完了，但是上传程序还不会自己创建这些文件夹，如果不存在的话，上传不会成功的，那么我们就得根据上面的上传路径的要求进行递归来生成目录了。<br />
<br />
找到这一段<br />
<br />
<br />
Dim sServerDir<br />
sServerDir = Server.MapPath( ConfigUserFilesPath )<br />
If ( Right( sServerDir, 1 ) &lt;&gt; "\" ) Then<br />
&nbsp;&nbsp;&nbsp; sServerDir = sServerDir &amp; "\"<br />
End If<br />
<br />
把它下面的这两行<br />
<br />
<br />
Dim oFSO<br />
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" ) <br />
用下面这一段代码来替换<br />
<br />
<br />
dim arrPath,strTmpPath,intRow<br />
strTmpPath = ""<br />
arrPath = Split(sServerDir, "\") <br />
Dim oFSO<br />
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )<br />
for intRow = 0 to Ubound(arrPath)<br />
&nbsp;&nbsp;&nbsp; strTmpPath = strTmpPath &amp; arrPath(intRow) &amp; "\"<br />
&nbsp;&nbsp;&nbsp; if oFSO.folderExists(strTmpPath)=false then<br />
&nbsp;&nbsp;&nbsp;&nbsp; oFSO.CreateFolder(strTmpPath)<br />
&nbsp;&nbsp;&nbsp; end if<br />
next <br />
用这段代码就可以生成你想要的文件夹了，在上传的时候自动生成。<br />
<br />
好 了，上传文件的修改到现在可以暂时告一段落了，但是，对于中文用户还存在这么个问题，就是fckeditor的文件上传默认是不改名的，同时还不支持中文 文件名，这样一来是上传的文件会变成&#8220;.jpg&#8221;这样的无法读的文件，再就是会有重名文件，当然重名这点倒没什么，因为fckeditor会自动改名，会 在文件名后加（1）这样来进行标识。但是，我们通常的习惯是让程序自动生成不重复的文件名<br />
<br />
在刚才那一段代码的下面紧接着就是<br />
' Get the uploaded file name.<br />
sFileName = oUploader.File( "NewFile" ).Name<br />
看清楚了，这个就是文件名啦，我们来把它改掉，当然得有个生成文件名的函数才行，改成下面这样<br />
<br />
'//取得一个不重复的序号<br />
Public Function GetNewID()<br />
dim ranNum<br />
dim dtNow<br />
randomize<br />
dtNow=Now()<br />
ranNum=int(90000*rnd)+10000<br />
GetNewID=year(dtNow) &amp; right("0" &amp; month(dtNow),2) &amp; right("0" &amp; day(dtNow),2) &amp; right("0" &amp; hour(dtNow),2) &amp; right("0" &amp; minute(dtNow),2) &amp; right("0" &amp; second(dtNow),2) &amp; ranNum<br />
End Function<br />
<br />
' Get the uploaded file name.<br />
sFileName = GetNewID() &amp;"."&amp; split(oUploader.File( "NewFile" ).Name,".")(1)<br />
<br />
这样一来，上传的文件就自动改名生成如20050802122536365.jpg这样的文件名了，是由年月日时分秒以及三位随机数组成的文件名了<br />
</font>
<img src ="http://www.blogjava.net/1504/aggbug/218613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-07-30 10:36 <a href="http://www.blogjava.net/1504/archive/2008/07/30/218613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX和Struts的action交互使用[原创总结] </title><link>http://www.blogjava.net/1504/archive/2008/06/18/208949.html</link><dc:creator>weesun一米阳光</dc:creator><author>weesun一米阳光</author><pubDate>Wed, 18 Jun 2008 09:47:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/06/18/208949.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/208949.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/06/18/208949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/208949.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/208949.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">1.请求页面的JS,客户端实现<br />
&lt;script type="text/javascript"&gt;<br />
&nbsp;var flagvalue=0;<br />
&nbsp;var rest="";<br />
&nbsp;var resta="";<br />
&nbsp;//实现AJAX验证<br />
&nbsp;var http_request = false;<br />
&nbsp;var infoForm_flag=false;<br />
&nbsp;var lotId="";<br />
function Save()<br />
{<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var infoForm=document.projectSetForm;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; infoForm_flag=infoForm;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lotId=infoForm.lotId.value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //表名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var dc = infoForm.tablename.value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(dc==""||dc==null){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("表名称不能为空!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; infoForm.tablename.focus(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; infoForm.tablename.select();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;}<br />
function send_request(url)<br />
&nbsp; {//初始化、指定处理函数、发送请求的函数<br />
&nbsp;&nbsp;&nbsp; http_request = false;<br />
&nbsp;&nbsp;&nbsp; //开始初始化XMLHttpRequest对象<br />
&nbsp;&nbsp;&nbsp; if(window.XMLHttpRequest) <br />
&nbsp;&nbsp;&nbsp; { //Mozilla 浏览器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http_request = new XMLHttpRequest();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (http_request.overrideMimeType) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {//设置MiME类别<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http_request.overrideMimeType('text/xml');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; else if (window.ActiveXObject) <br />
&nbsp;&nbsp;&nbsp; { // IE浏览器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http_request = new ActiveXObject("Msxml2.XMLHTTP");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (e) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http_request = new ActiveXObject("Microsoft.XMLHTTP");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (e) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; if (!http_request) { // 异常，创建对象实例失败<br />
&nbsp;&nbsp;&nbsp;&nbsp; window.alert("不能创建XMLHttpRequest对象实例.");<br />
&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; http_request.onreadystatechange = processRequest;<br />
&nbsp;&nbsp;&nbsp; // 确定发送请求的方式和URL以及是否同步执行下段代码<br />
&nbsp;&nbsp;&nbsp; http_request.open("GET", url, true);<br />
&nbsp;&nbsp;&nbsp; http_request.send(null);<br />
&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; //处理返回信息的函数<br />
&nbsp;&nbsp;&nbsp;&nbsp; function processRequest() <br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (http_request.readyState == 4) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&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; if (http_request.status == 200) <br />
&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; //信息已经成功返回，开始处理信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var str=http_request.responseText;//获得从服务器返回的文本信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(str=="no")<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;&nbsp; alert("您选择了模型分属不同的模板,请选择同一模板对应是模型!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //return false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; infoForm_flag.action="projectSet.do?do=add&amp;lotId="+lotId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; infoForm_flag.submit();<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; else<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; infoForm_flag.action="projectSet.do?do=creattable&amp;save=-1";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; infoForm_flag.submit();<br />
&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; } else <br />
&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; //页面不正常<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("您所请求的页面有异常。");<br />
&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; }<br />
&nbsp; function userCheck() <br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; send_request('projectSet.do?do=check&amp;rest='+rest); <br />
&nbsp; }<br />
&lt;/script&gt;<br />
2.ProjectSetAction.java </span>
<p><span style="font-size: 10pt"><span style="font-size: 10pt">package com.gpdi.softevaluate.action;</span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt">import java.io.PrintWriter;<br />
import java.text.SimpleDateFormat;<br />
import java.util.ArrayList;<br />
import java.util.Calendar;<br />
import java.util.HashSet;<br />
import java.util.Map;<br />
import java.util.Set;</span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt">import java.util.Iterator;<br />
import java.util.List;</span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt">import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;</span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt">public class ProjectSetAction extends DispatchAction <br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt">/**<br />
&nbsp; * &lt;p&gt;模板验证&lt;/p&gt;<br />
&nbsp; * @param mapping<br />
&nbsp; * @param form<br />
&nbsp; * @param request<br />
&nbsp; * @param response<br />
&nbsp; * @return<br />
&nbsp; * @throws Exception<br />
&nbsp; */<br />
&nbsp;public ActionForward check(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception<br />
&nbsp;{<br />
&nbsp;&nbsp; String rest="";<br />
&nbsp;&nbsp; String lotId="";<br />
&nbsp;&nbsp; String retn="";<br />
&nbsp;&nbsp; String flag="";<br />
&nbsp;&nbsp; CommDaoFactory mgObj = new CommDaoFactory();<br />
&nbsp;&nbsp; try<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rest=request.getParameter("rest");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lotId=request.getParameter("lotId");<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; catch(Exception e)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; }<br />
if(!rest.equals("0")||!rest.equals("")||rest!=null)<br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp; flag="no";<br />
}<br />
else<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag="ok";</span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintWriter out=response.getWriter();<br />
//服务器返回信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.write(flag);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp; //读取本Action所有的请求参数，将path重新构造，加上请求参数</span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; //ActionForward forward= new ActionForward("project/projectSet.do?do=add&amp;lotId=6");<br />
&nbsp;&nbsp;&nbsp;&nbsp; //forward.setRedirect(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //传参数后返回<br />
&nbsp;&nbsp;&nbsp;&nbsp; //return forward;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; return mapping.findForward(null);<br />
&nbsp;<br />
&nbsp;}<br />
</span></span><font size="3"><span style="font-size: 10pt"><font style="font-size: 10pt" size="3">public ActionForward creattable(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp; //实现功能代码<br />
return mapping.findForward("create");<br />
}</font><br />
</span><span style="font-size: 10pt"><span style="font-size: 10pt">}<br />
3.struts.config.xml<br />
</span><span style="font-size: 10pt">&nbsp;&lt;action attribute="projectSetForm" name="projectSetForm"<br />
&nbsp;&nbsp;&nbsp;&nbsp;parameter="do" path="/project/projectSet" scope="request"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="com.gpdi.softevaluate.action.ProjectSetAction" validate="false"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;forward name="list" path="/project/viewProject.jsp" /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;forward name="add" path="/project/addProject.jsp" /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;forward name="create" path="/project/createTable.jsp" /&gt;<br />
&nbsp;&nbsp;&lt;/action&gt;</span></span></font></p>
<img src ="http://www.blogjava.net/1504/aggbug/208949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">weesun一米阳光</a> 2008-06-18 17:47 <a href="http://www.blogjava.net/1504/archive/2008/06/18/208949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>