问题描述:
   目前我是这样调用的: 从JSP页面提交到SERVLET , 在servlet中调用我的程序.    由于我的程序执行起来要比较长的时间,
   
   所以在这个过程中 提交页面就僵在这里 一直等程序执行完了才跳转到结果页面 .   所以我觉得这样很不好, 很不人性化,     请各位给点建议  看怎么样可以在执行程序的过程中不要停留在提交的页面 .   或者转到另外的提示页面. 等程序完成了 再跳转到结果页面.     请高手们详细描述一下.  谢谢 各位了.

解决方案 »

  1.   

    可以考虑用AJAX轮询,后台返回状态
      

  2.   

    用css屏蔽当前页面,等有返回值后,再跳转了
      

  3.   

    ajax。
    不过这样就成了2个请求了,可显示出来效果比较好看
      

  4.   


    给点具体的建议 , 
    有代码参考的, 
    我现在用的只是JSP,
      

  5.   

    代码直接上W3SCHOOL.COM.CN,里面都有AJAX的代码了
      

  6.   

    用第一次AJAX请求让servlet来调用你的后台程序,请求提交完毕之后就跳转到等待页面,
    定时用AJAX请求来查询进度,如果后台执行完毕的话,就用提示框或者自动跳转到执行完毕页面来完成就可以了。定时AJAX查询进度可能会对服务器压力很大,我目前也只会这种方式了,希望后面有人提出更好的。代码等会编辑。
      

  7.   


    是啊  用纯粹的JSP 如何实现啊 
      

  8.   

    <html>
    <body>
    <div></div>
    </body>
    </html>
    当前提交页面用这样个模板,提交页面用js加载到div中,提交的时候,先用js ajax加载一个友好界面到div中,然后ajax提交数据,这样用户看到的就是友好界面了,而且数据也提交了.等到ajax执行回调函数时,再跳转到新的url.
      

  9.   

    哥们 能不能给个简单的例子啊.  
    我没怎么用ajax , 有些不太懂.
      

  10.   

    使用ajax技术,你在处理后台程序时,当前页面还是可以同时进行其它处理
      

  11.   

    这是我的代码.  红色部分为什么不能实现跳转呢//// 
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
       
        <title>My JSP 'register.jsp' starting page</title>
       
     <meta http-equiv="pragma" content="no-cache">
     <meta http-equiv="cache-control" content="no-cache">
     <meta http-equiv="expires" content="0">   
     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     <meta http-equiv="description" content="This is my page">
     <!--
     <link rel="stylesheet" type="text/css" href="styles.css">
     -->
     
     <script type="text/javascript">
      //定义异步请求对象
      var xmlHttp;
      
      //创建异步请求对象的函数
      function createXMLHttpRequest() {
       if(window.ActiveXObject) {//如果是微软的浏览器
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
       } else if(window.XMLHttpRequest) {//如果是其他类型的浏览器
        xmlHttp = new XMLHttpRequest();
       }
      }
      
      //向服务器发送异步请求的函数
      function startRequest() {
      
         document.myform.action="echo.jsp"; //想在提交的过程中提示到echo.jsp  --- 提示页面 
         //window.location.href="echo.jsp"; 

         
       var userName = document.getElementById("txtName").value; //得到登录名文本框的值
       createXMLHttpRequest();  //调用创建异步请求的函数
       xmlHttp.onreadystatechange = handleStateChange;   //当状态发生改变时,调用处理函数
       //以get方式向服务器发送请求
       //请求的资源路径为servlet/CheckUserServlet,并且通过URL重写的方式向该Servlet传递了一个参数
       //true表示此请求为异步请求,如果为false则表示不为异步请求
       xmlHttp.open("get", "servlet/CheckUserServlet?name=" + userName, true); 
       xmlHttp.send(null);   //开始向服务器发送请求
      }
      
      //处理服务器返回结果的函数
      function handleStateChange() {
       if(xmlHttp.readyState == 4) {//表明客户端已经成功地发送请求 
        if(xmlHttp.status == 200) {    //返回200表明服务器成功处理客户端的请求
         alert(xmlHttp.responseText);  //responseText:获得服务器返回的字符串
        }
       }
      }
     </script>   </head>
     
      <body>
        <form name="myform" method="get" action="./AjaxServlet.do">
         <table>
          <tr>
           <td>请输入用户名:</td>
           <td>
            <input id="txtName" type="text" name="txtName" />
              </td>
           </tr>
          <tr>
           <td>请输入密码:</td>
           <td><input type="password" name="txtPwd" /></td>
          </tr>
          <tr>
           <td></td>
           <td>
            <input type="submit" value="注册"  onclick="startRequest();/>
            <input type="reset" value="重置"  />
           </td>
          </tr>
         </table>
        </form>
      </body>
    </html> 
      

  12.   

    document.myform.action="echo.jsp"; 
    只是将form表单的action设为echo.jsp,并不是跳转,
    window.location.href="echo.jsp";
    这一句才是跳转