熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

ajax+jsp草稿自動保存的實現代碼

2022-06-13   來源: JSP教程 
表單部分 (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=ajaxrequestjs></script>
<! 自動保存代碼 >
<script type=text/javascript src=autosavejs></script>


自動保存代碼(autosavejsp)

  // 首先設置全局變量
// 要保存的內容對象FormContent
var FormContent;
// 顯示返回信息的對象
var AutoSaveMsg=documentgetElementById(AutoSaveMsg);
// 用戶名
var memName=documentgetElementById(memName)value;
// 自動保存時間間隔
var AutoSaveTime=;
// 計時器對象
var AutoSaveTimer;
// 首先設置一次自動保存狀態
SetAutoSave();
// 自動保存函數
function AutoSave() {
     FormContent=documentgetElementById(message);
    // 如果內容或用戶名為空則不進行處理直接返回
    if(!FormContentvalue||!memName) return;
    // 創建AJAXRequest對象
    var ajaxobj=new AJAXRequest;
    ajaxobjurl=autosavejsp;
    ntent=action=AutoSave&memname=+memName+&postcontent=+FormContentvalue;
    ajaxobjcallback=function(xmlObj) {
        // 顯示反饋信息
        AutoSaveMsginnerHTML=xmlObjresponseText;
    }
    ajaxobjsend();
}
// 設置自動保存狀態函數
function SetAutoSave() {
    // 是否自動保存?
    if(documentgetElementById(Draft_AutoSave)checked==true)
        // 是設置計時器
        AutoSaveTimer=setInterval(AutoSave()AutoSaveTime);
    else
        // 否清除計時器
        clearInterval(AutoSaveTimer);
}
function AutoSaveRestore() {// 恢復最後保存的草稿
     AutoSaveMsginnerHTML=正在恢復請稍候……
     FormContent=documentgetElementById(message);
    // 如果用戶名為空則不進行處理直接返回
    if(!memName) return;
    // 創建AJAXRequest對象
    var ajaxobj=new AJAXRequest;
    ajaxobjurl=autosavejsp;
    ntent=action=Restore&memname=+memName;
    ajaxobjcallback=function(xmlObj) {
         // 顯示反饋信息
      if(xmlObjresponseText!=) {
         // 恢復草稿
         var s=xmlObjresponseTextreplace(/^[\n|\r\n]*|[\n|\r\n]*$/g);//去掉首尾空行
         FormContentinnerText=s;
          // 提示用戶恢復成功
        AutoSaveMsginnerHTML=恢復成功;
        }
    }
    ajaxobjsend();
}
function Save() {//將內容保存至數據庫沒有完成
 FormContent=documentgetElementById(message);
    // 如果內容或用戶名為空則不進行處理直接返回
    if(!FormContentvalue||!memName) return;
    // 創建AJAXRequest對象
    var ajaxobj=new AJAXRequest;
    ajaxobjurl=autosavejsp;
    ntent=action=Save&memname=+memName+&postcontent=+FormContentvalue;
    ajaxobjcallback=function(xmlObj) {
        // 顯示反饋信息
        AutoSaveMsginnerHTML=xmlObjresponseText;
    }
    ajaxobjsend();

  最後是autosavejsp用於在後台保存草稿
  程序代碼

<%@ page contentType=text/html; charset=gb %>
<%@ page import=javautil* %>
<%@ page import=javaio* %>

<%
  String PostContentmemNameaction;
  String filename;
  File f; 
  FileWriter fw;
   action=requestgetParameter(action);//獲取操作是保存草稿還是恢復草稿

  //獲取用戶名
   memName=requestgetParameter(memname);

  //獲取草稿內容
   PostContent=requestgetParameter(postcontent);

  filename=memName+txt;//保存草稿的文件
  filename= requestgetRealPath(/temp/+filename);
  if(actionequals(Save)||actionequals(AutoSave)){ //這裡兩個動作合並了保存到數據庫的代碼沒有寫
    f = new File(filename);
    if(!fexists())//如果文件不存則建立
    {
      fcreateNewFile();
    }
   fw = new FileWriter(filename); //建立FileWrite對象並設定由fw對象變量引用
   PostContent=new String(PostContentgetBytes(ISO_)UTF);

   fwwrite(PostContent);
   fwclose(); //關閉文件
    outprintln(最後於+new Date()toString()+自動保存成功!!);

   }else if(actionequals(Restore)){//恢復操作
     FileReader fr = new FileReader(filename); //建立FileReader對象並設定由fr對象變量引用
     BufferedReader br = new BufferedReader(fr); //建立BufferedReader對象並設定由br對象變量引 
    StringBuffer bf=new StringBuffer(); 
    String Line; 
    while((Line = brreadLine())!=null){ //讀取一行數據
      bfappend(Line+\n);
    }
    outprint(bftoString()trim());
  }else{
    outprintln( 發生錯誤);
  }

%>

AJAX類(ajaxrequestjs)請下載 


From:http://tw.wingwit.com/Article/program/Java/JSP/201405/30749.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.