整體刷新和局部刷新frameset窗口問題深入探討_JSP教程
推薦:jsp超鏈接中文亂碼的解決方法jsp超鏈接中文亂碼的解決方法,需要的朋友可以參考一下
在項目中,經(jīng)常會遇到頁面分割,最常見的系統(tǒng)或網(wǎng)站的主界面。主頁面分為,上面系統(tǒng)簡介、下面作者簡介、左邊系統(tǒng)功能菜單、右邊則是菜單真正展示的界面。遇到這種這種分割頁面,大家首先想到是frameset,使用framset分割多種frame,這種方式簡單。若是不喜歡使用framset,喜歡前臺設(shè)計的人也許會選擇div拼接,浮動,這就考查css樣式的功底了。
這次主要講解局部刷新的問題。需求是:左邊f(xié)rame,右邊f(xié)rame。
大家肯定疑問,這樣刷新沒有問題啊。的確如此。現(xiàn)在使用framset,分割兩frame,各自更新各自。右邊f(xié)rame展示菜單盡管更新提交即可。對左邊f(xié)rame是沒有影響的。
為了方便理解,左邊Frame簡稱LeftFrame,右邊Frame簡稱RightFrame;假如我提交RightFrame頁面,需要更新LeftFrame【動態(tài)】頁面。那如何辦呢?
其實就是從數(shù)據(jù)庫中重新讀數(shù)據(jù);
復(fù)制代碼 代碼如下:hl5o.cn
<FRAMESETcols="280,*"frameborder=yesbordercolor=silver>
<FRAMESRC="modifyMenu!showTreeMenu"NAME="menuTree"SCROLLING="No"id="leftTree">
<FRAMESRC="showModifyMenu.jsp"NAME="main"SCROLLING="AUTO"id="showModifyMenu">
lt;/FRAMESET>
其中modifyMenu!showTreeMenu是轉(zhuǎn)向到tree.jsp頁面
現(xiàn)在項目中,前臺使用struts2,當提交右邊頁面數(shù)據(jù)時,當時設(shè)想:然后再次跳轉(zhuǎn)到主界面,相當于重新讀取數(shù)據(jù),但是加載的主界面竟然是顯示在右邊區(qū)域,這樣就成了兩個LeftFrame。即使更改Struts2中的resultType的重定向也不可以。
最后,竟然一個簡單的JS解決問題。
在提交右邊頁面RightFrame,使用JS更新左邊LeftFrame。如下:
在rightFrame中的body的onload的事件:
復(fù)制代碼 代碼如下:hl5o.cn
functioninit(){
//leftTree是左邊Frame的id
//重新加載這個頁面
window.parent.frames["leftTree"].location.reload();
}
window.parent.frames["leftTree"].location.reload()
當時你在某一個思路上山窮水盡的時候,可以嘗試換種思路,也是會柳暗花明.
需求如下:若刷新右邊RightFrame頁面,只刷新部分左邊LeftFrame【刷新某個div】。
提到局部部分刷新,肯定想到是Ajax局部刷新。
那我們用純js的Ajax基礎(chǔ)實現(xiàn):
復(fù)制代碼 代碼如下:hl5o.cn
functioncreateXmlHttpRequest(){
if(window.XMLHttpRequest){
returnnewXMLHttpRequest();
}elseif(window.ActiveXObject){
returnnewActiveXObject("Microsoft.XMLHTTP");
}
}
functioninit(){
//則進行局部刷新
varxmlHttpReq=createXmlHttpRequest();
//獲得出發(fā)的url的,比如struts2的action或者servlet或jsp頁面
varurl="success.jsp";
xmlHttpReq.open("GET",url,true);
//因為你在作一個異步調(diào)用,
//所以你需要注冊一個XMLHttpRequest對象將調(diào)用的回調(diào)事件處理器
xmlHttpReq.onreadystatechange=function(){
if(xmlHttpReq.readyState==4){
if(xmlHttpReq.status==200){
//使用parent獲得左邊頁面中的某一個div,然后更改展示的外觀
window.parent.frames["leftTree"].document.getElementById(divId).innerHTML="測試";
}else{
alert(xmlHttpReq.status+xmlHttpReq.responseText);
}
}
};
xmlHttpReq.send(null);
}
window.parent.frames["leftTree"].document.getElementById(divId).innerHTML=xmlHttpReq.responseText
后臺action中的寫法如下:
復(fù)制代碼 代碼如下:hl5o.cn
01.HttpServletResponseresponse=ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
out=response.getWriter();
out.
兩種刷新方式,一種整體刷新;一種局部刷新;
分享:檢測輸入的字符是否為0-9的數(shù)字(測試)輸入的字符判斷是否為0-9,采用for循環(huán)實現(xiàn),感興趣的朋友可以參考下哈,希望可以幫助到你
相關(guān)JSP教程:
- jsp response.sendRedirect不跳轉(zhuǎn)的原因分析及解決
- JSP指令元素(page指令/include指令/taglib指令)復(fù)習整理
- JSP腳本元素和注釋復(fù)習總結(jié)示例
- JSP FusionCharts Free顯示圖表 具體實現(xiàn)
- 網(wǎng)頁模板:關(guān)于jsp頁面使用jstl的異常分析
- JSP頁面中文傳遞參數(shù)使用escape編碼
- 基于jsp:included的使用與jsp:param亂碼的解決方法
- Java Web項目中連接Access數(shù)據(jù)庫的配置方法
- JDBC連接Access數(shù)據(jù)庫的幾種方式介紹
- 網(wǎng)站圖片路徑的問題:絕對路徑/虛擬路徑
- (jsp/html)網(wǎng)頁上嵌入播放器(常用播放器代碼整理)
- jsp下顯示中文文件名及絕對路徑下的圖片解決方法
- 相關(guān)鏈接:
- 教程說明:
JSP教程-整體刷新和局部刷新frameset窗口問題深入探討
。