Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 321|回复: 0

[AJAX学习]ajax+jsp草稿自动保存

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-13 02:49:27 | 显示全部楼层 |阅读模式
    一、表单部分 (index.HTML)

         首先是表单填写页面,用一个ID为AutoSaveMsg的DIV来显示返回信息,并且用一个ID为Draft_AutoSave的CheckBox来确定是否进行自动保存,然后将Textarea的ID命名为message。同时为了应对多用户同时使用的需要,加上用户名,每个用户的草稿分开保存。为了说明方便,这里把一些修饰性的东西去掉,这样看起来比较明了
    <h2>AJAX应用之草稿自动保存</h2><br /> <!-- 用户名默认为NONAME --> 用户名:
    <input type="text" name="memName" id="memName"
         size="20" value="NONAME" disabled="true" />      
      
       
       
       

       
      
      
      <!-- 在自动保存选项的onclick事件中调用自动保存状态设置函数 --> <input onclick="SetAutoSave();" type="checkbox" id="Draft_AutoSave" value="1" checked="true" />自动保存?
    <br /><br /> 内容:
    <textarea cols=40 rows=8 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):
    1.   // 首先设置全局变量
    2. // 要保存的内容对象FormContent
    3. var FormContent;
    4. // 显示返回信息的对象
    5. var AutoSaveMsg=document.getElementById("AutoSaveMsg");
    6. // 用户名
    7. var memName=document.getElementById("memName").value;
    8. // 自动保存时间间隔
    9. var AutoSaveTime=10000;
    10. // 计时器对象
    11. var AutoSaveTimer;
    12. // 首先设置一次自动保存状态
    13. SetAutoSave();
    14. // 自动保存函数
    15. function AutoSave() {
    16.      FormContent=document.getElementById("message");
    17.     // 如果内容或用户名为空,则不进行处理,直接返回
    18.     if(!FormContent.value||!memName) return;
    19.     // 创建AJAXRequest对象
    20.     var ajaxobj=new AJAXRequest;
    21.     ajaxobj.url="autosave.jsp";
    22.     ajaxobj.content="action=AutoSave&memname="+memName+"&postcontent="+FormContent.value;
    23.     ajaxobj.callback=function(xmlObj) {
    24.         // 显示反馈信息
    25.         AutoSaveMsg.innerHTML=xmlObj.responseText;
    26.     }
    27.     ajaxobj.send();
    28. }
    29. // 设置自动保存状态函数
    30. function SetAutoSave() {
    31.     // 是否自动保存?
    32.     if(document.getElementById("Draft_AutoSave").checked==true)
    33.         // 是,设置计时器
    34.         AutoSaveTimer=setInterval("AutoSave()",AutoSaveTime);
    35.     else
    36.         // 否,清除计时器
    37.         clearInterval(AutoSaveTimer);
    38. }
    39. function AutoSaveRestore() {// 恢复最后保存的草稿
    40.      AutoSaveMsg.innerHTML="正在恢复,请稍候……"
    41.      FormContent=document.getElementById("message");
    42.     // 如果用户名为空,则不进行处理,直接返回
    43.     if(!memName) return;
    44.     // 创建AJAXRequest对象
    45.     var ajaxobj=new AJAXRequest;
    46.     ajaxobj.url="autosave.jsp";
    47.     ajaxobj.content="action=Restore&memname="+memName;
    48.     ajaxobj.callback=function(xmlObj) {
    49.          // 显示反馈信息
    50.       if(xmlObj.responseText!="") {
    51.          // 恢复草稿
    52.          var s=xmlObj.responseText.replace(/^[
    53. |
    54. ]*|[
    55. |
    56. ]*$/g,"");//去掉首尾空行
    57.          FormContent.innerText=s;
    58.           // 提示用户恢复成功
    59.         AutoSaveMsg.innerHTML="恢复成功";
    60.         }
    61.     }
    62.     ajaxobj.send();
    63. }
    64. function Save() {//将内容保存至数据库,没有完成.
    65. FormContent=document.getElementById("message");
    66.     // 如果内容或用户名为空,则不进行处理,直接返回
    67.     if(!FormContent.value||!memName) return;
    68.     // 创建AJAXRequest对象
    69.     var ajaxobj=new AJAXRequest;
    70.     ajaxobj.url="autosave.jsp";
    71.     ajaxobj.content="action=Save&memname="+memName+"&postcontent="+FormContent.value;
    72.     ajaxobj.callback=function(xmlObj) {
    73.         // 显示反馈信息
    74.         AutoSaveMsg.innerHTML=xmlObj.responseText;
    75.     }
    76.     ajaxobj.send();
    77. }
    78. 三、  最后是autosave.jsp,用于在后台保存草稿:
    复制代码
    程序代码: <%@ page contentType="text/html; charset=gb2312" %>
    <%@ 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("ISO8859_1"),"UTF-8");     fw.write(PostContent);
        fw.close(); //关闭文件
         out.println("最后于"+new Date().toString()+"自动保存成功!!1");

        }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+"
    ");
         }
         out.print(bf.toString().trim());
       }else{
         out.println(" 发生错误");
       } %> 四、AJAX类(ajaxrequest.js)请下载。
       
         
         
          
          

            
          

          
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/10/13/024926859.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-17 12:44 , Processed in 0.409310 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表