




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、現(xiàn)在到處都有這方面的教程,我重點說一下我自己搞的一個框架。特點:支持Form的無閃提交(方法有點笨)支持框架,即支持傳統(tǒng)網(wǎng)頁架構(gòu)多線程并發(fā)請求(要語言支持線程)動態(tài)加載文件,只加載有用的!處理了Ajax框架臃腫的JS文件問題。采用no table的全div + css布局a. 獲得XMLHTTPRequest對象,網(wǎng)上到處都找得到了,不多說:function newXMLHttpRequest() var xmlreq = false;if (window.XMLHttpRequest) xmlreq = new XMLHttpRequest(); else if (window.Active
2、XObject) try xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); catch (e1) try xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); catch (e2) return xmlreq;這里提供一個通用的支持多瀏覽器的方法。b.提出異步請求/這里用Bcandy作為方法名是為了感謝一個對我來說很重要的人,她一直在支持我function Bcandy(Tid,url,parm,js) if(url = "")return;/這是一
3、個加載信息提示框,也可以不要!document.getElementById("load").style.visibility = "visible"/加載相應(yīng)頁面的JS文件if(js != null)/加載文件LoadJS(js);/ 獲取一個XMLHttpRequest實例var req = newXMLHttpRequest();/ 設(shè)置用來從請求對象接收回調(diào)通知的句柄函數(shù)var handlerFunction = getReadyStateHandler(req,Tid);req.onreadystatechange = handlerFunct
4、ion;/ 第三個參數(shù)表示請求是異步的req.open("POST", url, true);/ 指示請求體包含form數(shù)據(jù)req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");/ 發(fā)送參數(shù)req.send(parm);function getReadyStateHandler(req,Tid) / 返回一個監(jiān)聽XMLHttpRequest實例的匿名函數(shù)return function () / 如果請求的狀態(tài)是“完成”if (req.ready
5、State = 4) / 成功接收了服務(wù)器響應(yīng)if (req.status = 200) /下面一句是重點,這里顯示了返回信息的內(nèi)容部分,也可以加以修改。進(jìn)行其它處理document.getElementById(Tid).innerHTML = req.responseText;document.getElementById(Tid).style.visibility = "visible"/這一句是實現(xiàn)加載信息提示框的隱藏,也可以不要。document.getElementById("load").style.visibility = "h
6、idden" else / 有HTTP問題發(fā)生document.getElementById("load").style.visibility = "hidden"alert("HTTP error: "+req.status);/動態(tài)加載文件function LoadJS(file)var head = document.getElementsByTagName('HEAD').item(0);var script = document.createElement('SCRIPT');scr
7、ipt.src = file;script.type = "text/javascript"head.appendChild(script);這就是基本的框架了,因為使用了request.responseText;所以,可以直接請求一個頁面jsp,servlet但在使用Struts框架的請求時要進(jìn)行特殊處理,因為Form不支持異步請求。建議在這些頁面上不要加入標(biāo)簽,就像.net里的asxm文件!而且在使用Struts框架時有點要注意的是,Mapping對象直接返回null就可以了,因為我們會在下面講到并發(fā)多線程。來處理這個問題的??偟膩砜?,有點像是積木搭建起來的。這樣方便文
8、件的修改和擴(kuò)展,互相之間并不影響,而且,實現(xiàn)了代碼和標(biāo)簽分離。在進(jìn)行傳統(tǒng)頁面改版時,也不用重新編寫全部代碼。只要修改一小部分就可以完美實現(xiàn)Ajax帶來的無閃刷新快感。以上代碼均在,下測試過!首先建立一個數(shù)據(jù)表menumId菜單主鍵name菜單名稱url菜單鏈接father低級菜單sub是否最底層菜單(用于判斷是否還可以繼續(xù)展開)target菜單鏈接目標(biāo)(用ajax方式打開時作為顯示id)pa菜單參數(shù)(這項用于ajax方式打開菜單)制作一個菜單對象類class Menuprivate int mId;private String name;./其它成員public getMid()return
9、mId;public setMid(int mId)this.mId = mId;./其它成員的get set方法,另一個是操作類class MenuOpt()public Vector getMenus(int father)Vector vector = new Vector();/這里是取得父級菜單為father的全部菜單/并封裝進(jìn)Vector的一個對象中。return vector;其次就是一般的jsp文件了。但要注意以前說過的,不要包含標(biāo)簽!menu.jsp:%page contentType="text/html; charset=GB2312"%>%ta
10、glib uri=" prefix="c"%>jsp:useBean id="menu" scope="page" class="ycoe.basic.MenuOpt"/>jsp:setProperty name="menu" property="father" value="$param.father"/>div>c:forEach var="m" items="$menu.vector&q
11、uot; varStatus = "c">c:choose>c:when test="$m.sub eq 'Y'">div onClick="showMenu('$m.mid','$m.url','$m.target','father=$m.mid')">img src="pic/menu0.gif" id="img$m.mid" alt="" style=" c
12、ursor:hand;">a href="#" class="text1">$/div>div style="display:none;" id="tr$m.mid">div style="padding-left:12pt" id="$m.mid">/div>/c:when>c:otherwise>div onclick="openMenu('$m.url','$m.ta
13、rget','$m.pa');">img src="pic/menu1.gif" id="img$m.mid" alt="">a href="#" class="text1">$/div>menu.js:/operMenu(打開下拉菜單的,打開的地址,鏈接打開的目標(biāo),參數(shù))。/這是用在menu.jsp的方法function showMenu(id,url,target,param)var trObj = document.ge
14、tElementById("tr"+id);var tdObj = document.getElementById(id);/tryif(document.getElementById("tr"+id).style.display = "none")/顯示菜單if(tdObj.innerHTML = null | tdObj.innerHTML = "")/提取數(shù)據(jù)document.getElementById("tr"+id).style.display = ""docum
15、ent.getElementById("img"+id).src = "pic/menu2.gif"Bcandy(id,"page/menu.jsp",param,"");openMenu(url,target,param);else/如果里面有內(nèi)容,直接顯示document.getElementById("tr"+id).style.display = ""document.getElementById("img"+id).src = "pic
16、/menu2.gif"openMenu(url,target,param);/Bcandy(target,url,param,"");/打開菜單鏈接else/隱藏菜單document.getElementById("tr"+id).style.display = "none"document.getElementById("img"+id).src = "pic/menu0.gif"/catch(e)/打開菜單function openMenu(url,target,param)/這里
17、不用我寫了吧。有好幾種實現(xiàn)方法,建議使用ajax實現(xiàn)! 最后是顯示頁面:% page contentType="text/html; charset=GB2312" %>meta http-equiv=Content-Type content="text/html; charset=gb2312">style>.text1:hover border: 1px #999999 solid; background-color: #CCCCCC; height: 12px;.text1border: 1px #FFFFFF solid; he
18、ight: 12px;function ini()Bcandy("0","menu.jsp","id=0&father=0","menu.js");body onload="ini();">div id="load" style="z-index:1; color:#FF0000; visibility:hidden; filter: Alpha(opacity=85); background-color:#FFFFFF; left: 48%; top
19、: 48%;BORDER-RIGHT: #000000 1px solid; PADDING-RIGHT: 12px; BORDER-TOP: #000000 1px solid; PADDING-LEFT: 12px;PADDING-BOTTOM: 12px; BORDER-LEFT: #000000 1px solid; LINE-HEIGHT: 22px; PADDING-TOP: 12px; BORDER-BOTTOM: #000000 1px solid; POSITION: absolute;">img src='pic/loop.gif' alt="">數(shù)據(jù)處理中,請稍候.br>div id="0" align="center">可以看到,無論在哪個層面,都和傳統(tǒng)的沒什么分別,只有jsp部分除去文件頭而已(其實不去掉也行的,呵呵),而且,還可以看到,一個頁面,已經(jīng)分成了好幾部分。就像之前說的那樣,積木式的(這是網(wǎng)上看到一篇關(guān)于.net框
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)廠房房產(chǎn)轉(zhuǎn)讓合同范本
- 《新年好》教學(xué)反思
- 《小數(shù)與單位換算》教學(xué)反思
- 醫(yī)院臨時采購合同范本
- 醫(yī)療協(xié)作合同范本
- 醫(yī)院項目勞務(wù)合同范本
- 《8、9的加減法》教案
- 即墨網(wǎng)絡(luò)推廣平臺合同范例
- 3月學(xué)雷鋒系列活動總結(jié)
- 南寧食堂承包業(yè)務(wù)合同范本
- 世界給予我的 課件-2024-2025學(xué)年高二下學(xué)期開學(xué)第一課主題班會
- 法社會學(xué)教程(第三版)教學(xué)
- 2023版押品考試題庫必考點含答案
- 2023版押品考試題庫必考點含答案
- reaxys使用介紹課件
- 工程建設(shè)項目管理培訓(xùn)教材課件
- 11-化學(xué)動力學(xué)基礎(chǔ)-2-考研試題資料系列
- 《簡愛》課本劇劇本
- 社區(qū)獲得性肺炎臨床路徑
- 安全文明施工管理(EHS)方案(24頁)
- 水廠項目基于BIM技術(shù)全生命周期解決方案-城市智慧水務(wù)講座課件
評論
0/150
提交評論