如果我遗漏了任何内容,请随时编辑问题或询问更多详细信息。
我知道在 JSP
中使用 Scriptlet
是不好的。
但是我被指派维护现有的JAVA项目
,该项目仅使用JSP
和servlet
构建(无框架)。
我的任务是使用 Apache HTTP Server 为我的应用程序实现负载平衡。
应用程序可以在没有负载平衡
的情况下正常工作。当我使用 Apache HTTP Server
实现负载平衡
时,我遇到了 JSP 的问题。
我将给出一个场景。我的 JSP 有一个 while 循环,它运行 javascript 来更新内容。
我的 JSP 有,
<%
String jsPreAppend = "<script language=JavaScript >push('";
String jsPostAppend = "')</script> ";
String s=null;
int i = 0;
try {
while (true) {
System.out.println("count :"+i);
out.print(jsPreAppend + i + jsPostAppend);
out.flush();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
out.print(jsPreAppend + "InterruptedException: " + e + jsPostAppend);
}
i++;
}
} catch (Exception e) {
out.print(jsPreAppend + "Exception: " + e + jsPostAppend);
}
%>
我的 JavaScript 有,
function push(content) {
document.getElementById('update').innerHTML = content;
}
控制台输出将是,
count :1
count :2
count :3
.
.
.
count : n
count :n+1
但是JSP中的内容不会更新。我认为 JavaScript 在 while 循环中失败了。
但是 SysOut() 可以工作,因为更新的内容将在控制台中每秒打印一次。
但是相同的应用程序在没有负载平衡的情况下也可以正常工作(只有一个 tomcat)。
希望我们的堆栈用户能够帮助我。
最佳答案
当 HTML 被渲染时,JSP 就已经被执行了。所以你想要做的事情不能通过该代码来实现。
您需要编写一个 Java 脚本方法,偶尔进行一些更新。 Check this thread使用 Javascript 编写相同的逻辑
关于java - JSP 中的 while 循环执行 javascript 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18441246/