一
表單部分 (l)
首先是表單填寫頁面
用一個ID為AutoSaveMsg的DIV來顯示返回信息
並且用一個ID為Draft_AutoSave的CheckBox來確定是否進行自動保存
然後將Textarea的ID命名為message
同時為了應對多用戶同時使用的需要
加上用戶名
每個用戶的草稿分開保存
為了說明方便
這裡把一些修飾性的東西去掉
這樣看起來比較明了
<h
>AJAX應用之草稿自動保存</h
><br />
<!
用戶名默認為NONAME
>
用戶名
<input type=
text
name=
memName
id=
memName
size=
value=
NONAME
disabled=
true
/>
<!
在自動保存選項的onclick事件中調用自動保存狀態設置函數
>
<input onclick=
SetAutoSave();
type=
checkbox
id=
Draft_AutoSave
value=
checked=
true
/>自動保存?
<br /><br />
內容
<textarea cols=
rows=
id=
message
>你編輯的內容將被自動保存
以便恢復</textarea><br /><br />
<!
AutoSaveMsg顯示返回信息
>
<div id=
AutoSaveMsg
></div><br />
<input type=
submit
onclick=
Save();
value=
Save
/>
<!
調用函數恢復最後保存的草稿
>
<input type=
button
onclick=
AutoSaveRestore();
value=
Restore
/>
</div>
</div>
<!
將JS代碼放在所有對象之後
以免在頁面未加載完成時出現對象不存在的錯誤
>
|<!
AJAX類
>
<script type=
text/javascript
src=
ajaxrequest
js
></script>
<!
自動保存代碼
>
<script type=
text/javascript
src=
autosave
js
></script>
二
自動保存代碼(autosave
jsp)
// 首先設置全局變量
// 要保存的內容對象FormContent
var FormContent;
// 顯示返回信息的對象
var AutoSaveMsg=document
getElementById(
AutoSaveMsg
);
// 用戶名
var memName=document
getElementById(
memName
)
value;
// 自動保存時間間隔
var AutoSaveTime=
;
// 計時器對象
var AutoSaveTimer;
// 首先設置一次自動保存狀態
SetAutoSave();
// 自動保存函數
function AutoSave() {
FormContent=document
getElementById(
message
);
// 如果內容或用戶名為空
則不進行處理
直接返回
if(!FormContent
value||!memName) return;
// 創建AJAXRequest對象
var ajaxobj=new AJAXRequest;
ajaxobj
url=
autosave
jsp
;
ntent=
action=AutoSave&memname=
+memName+
&postcontent=
+FormContent
value;
ajaxobj
callback=function(xmlObj) {
// 顯示反饋信息
AutoSaveMsg
innerHTML=xmlObj
responseText;
}
ajaxobj
send();
}
// 設置自動保存狀態函數
function SetAutoSave() {
// 是否自動保存?
if(document
getElementById(
Draft_AutoSave
)
checked==true)
// 是
設置計時器
AutoSaveTimer=setInterval(
AutoSave()
AutoSaveTime);
else
// 否
清除計時器
clearInterval(AutoSaveTimer);
}
function AutoSaveRestore() {// 恢復最後保存的草稿
AutoSaveMsg
innerHTML=
正在恢復
請稍候……
FormContent=document
getElementById(
message
);
// 如果用戶名為空
則不進行處理
直接返回
if(!memName) return;
// 創建AJAXRequest對象
var ajaxobj=new AJAXRequest;
ajaxobj
url=
autosave
jsp
;
ntent=
action=Restore&memname=
+memName;
ajaxobj
callback=function(xmlObj) {
// 顯示反饋信息
if(xmlObj
responseText!=
) {
// 恢復草稿
var s=xmlObj
responseText
replace(/^[\n|\r\n]*|[\n|\r\n]*$/g
);//去掉首尾空行
FormContent
innerText=s;
// 提示用戶恢復成功
AutoSaveMsg
innerHTML=
恢復成功
;
}
}
ajaxobj
send();
}
function Save() {//將內容保存至數據庫
沒有完成
FormContent=document
getElementById(
message
);
// 如果內容或用戶名為空
則不進行處理
直接返回
if(!FormContent
value||!memName) return;
// 創建AJAXRequest對象
var ajaxobj=new AJAXRequest;
ajaxobj
url=
autosave
jsp
;
ntent=
action=Save&memname=
+memName+
&postcontent=
+FormContent
value;
ajaxobj
callback=function(xmlObj) {
// 顯示反饋信息
AutoSaveMsg
innerHTML=xmlObj
responseText;
}
ajaxobj
send();
}
三
最後是autosave
jsp
用於在後台保存草稿
程序代碼
<%@ page contentType=
text/html; charset=gb
%>
<%@ page import=
java
util
*
%>
<%@ page import=
java
io
*
%>
<%
String PostContent
memName
action;
String filename;
File f;
FileWriter fw;
action=request
getParameter(
action
);//獲取操作
是保存草稿還是恢復草稿
//獲取用戶名
memName=request
getParameter(
memname
);
//獲取草稿內容
PostContent=request
getParameter(
postcontent
);
filename=memName+
txt
;//保存草稿的文件
filename= request
getRealPath(
/temp/
+filename);
if(action
equals(
Save
)||action
equals(
AutoSave
)){ //這裡兩個動作合並了
保存到數據庫的代碼沒有寫
f = new File(filename);
if(!f
exists())//如果文件不存
則建立
{
f
createNewFile();
}
fw = new FileWriter(filename); //建立FileWrite對象
並設定由fw對象變量引用
PostContent=new String(PostContent
getBytes(
ISO
_
)
UTF
);
fw
write(PostContent);
fw
close(); //關閉文件
out
println(
最後於
+new Date()
toString()+
自動保存成功!!
);
}else if(action
equals(
Restore
)){//恢復操作
FileReader fr = new FileReader(filename); //建立FileReader對象
並設定由fr對象變量引用
BufferedReader br = new BufferedReader(fr); //建立BufferedReader對象
並設定由br對象變量引
StringBuffer bf=new StringBuffer();
String Line;
while((Line = br
readLine())!=null){ //讀取一行數據
bf
append(Line+
\n
);
}
out
print(bf
toString()
trim());
}else{
out
println(
發生錯誤
);
}
%>
四
AJAX類(ajaxrequest
js)請下載
From:http://tw.wingwit.com/Article/program/Java/JSP/201405/30749.html