jsp:我可以改变渲染/执行的顺序吗?

时间:2016-06-17 07:21:51

标签: javascript jsp spinner java-threads

我正在研究jsp, 我想要实现的很简单。

  • 使用Java做一些耗时的工作
  • 处理时,向用户显示微调器

所以我已经实现了如下

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page isThreadSafe="true" %>
<%

    boolean isFinish = false;
    Thread executeThread = new Thread(new Runnable() {
        @Override
        public void run() {
            for(int i = 0; i < 10; i++){
                try{
                    System.out.println(i + " Thread ");
                    Thread.sleep(1000);
                }catch(Exception ex){
                    System.err.println(ex);
                }
            }
        }
    });

    executeThread.run();
%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8'>
        <title>Loading</title>
    </head>
    <body>
        <div class="popup" style="text-align: center;">
            <div class="l_img">
                <img src="resources/image/spinner/loading_gif.gif" alt="LOADING...">
            </div>
            <div class="b_txt">Processing</div>
            <div class="s_txt">Please, wait..</div>
        </div>
    </body>
    <%
        if(isFinish){
    %>
        <script>
            alert('done');
        </script>
    <%
        }
    %>
</html>

然而,在Thread终止后页面显示。我可以撤销订单吗? 我想要的是什么

  • 显示html页面(spinner gif
  • 执行Java逻辑
  • 抓住Java执行的返回
  • 如果返回true,则使用javascript提醒

有可能吗? 谢谢你的回答

2 个答案:

答案 0 :(得分:1)

您无法通过渲染页面进行服务器端操作更改。

页面将始终呈现在if(isFinish)已执行的位置。

只有当所有java都已执行并且在一个块中时,服务器才会将完整的html页面发送给用户!你需要在前端实现它,例如你发送一个加载的起始基本页面,你用ajax调用或类似的东西调用长期过程。

答案 1 :(得分:0)

SaveTo...()