<html>
<head>
<title>
jsp1
</title>
<script>
var interval = null;
var time = 5000;function InitSendInfo(){
interval = setTimeout("getSendLogInfo()",time);
}function getSendLogInfo(){
<%
System.out.println("Hello!");
%>
    sendLogInfoTask();
}function sendLogInfoTask(){
interval = setTimeout("getSendLogInfo()",time);
}
</script>
</head><body bgcolor="#ffffff" onload="InitSendInfo()"></body>
</html>看后台,只打印了一次"hello".该怎么才能实现循环打印呢?

解决方案 »

  1.   

    java代码只在服务器端编译时才执行,所以才会执行一次。一般是使用js调用页面元素,而页面元素可以存储java代码的值。
      

  2.   

    把java代码放个jsp里 然后放个iframe 用js循环刷新
      

  3.   

    当你第一次打开页面的时候输出hello,其实并不是js起到的作用。jsp编译后的getSendLogInfo()变为了以下内容:
    function getSendLogInfo(){
        sendLogInfoTask();
    }
    由此可以看出是不可能循环打印的。
    如果你非要调用java代码进行循环打印,不妨试一下ajax。有个组件叫dwr,很好的封装了ajax,使用起来也很简单。
      

  4.   

    解决了:JSP1.JSP<html>
    <head>
    <title>
    jsp1
    </title>
    <script>
    var interval = null;
    var time = 5000;function InitSendInfo(){
    interval = setTimeout("getSendLogInfo()",time);
    }function getSendLogInfo(){
    <%
    System.out.println("Hello!");
    %>
    document.all.myForm.submit();
        sendLogInfoTask();
    }function sendLogInfoTask(){
    interval = setTimeout("getSendLogInfo()",time);
    }
    </script>
    </head><body bgcolor="#ffffff" onload="InitSendInfo()">
    <iframe name="myFrame" id="myFrame" style="width:0;height:0"></iframe>
    <form action="jsp2.jsp" name="myForm" method="post" target="myFrame"></form>
    </body>
    </html>
    JSP2.JSP<%@ page contentType="text/html; charset=GBK" %>
    <%@ page language="java" %>
    <%@ page session="true" %>
    <%@ page isThreadSafe="true" %><%
    System.out.println("Kill me!");
    %>