Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在特定时间间隔后提交jsp页面_Java_Javascript_Jsp_Servlets - Fatal编程技术网

Java 在特定时间间隔后提交jsp页面

Java 在特定时间间隔后提交jsp页面,java,javascript,jsp,servlets,Java,Javascript,Jsp,Servlets,我使用了setTimeout方法来实现这一点,并传递了一个包含时间的变量,但我的setTimeout方法只接受该变量的初始化值,而不接受从数据库获取的值 这是我的密码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Givetest<

我使用了setTimeout方法来实现这一点,并传递了一个包含时间的变量,但我的setTimeout方法只接受该变量的初始化值,而不接受从数据库获取的值

这是我的密码:

  <html>  
        <head>  
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
            <title>Givetest</title>  

             <script type = "text/javascript">  
             function submitForm() {  
                 document.forms[0].submit();  
             }  
             </script>  

             <script language="JavaScript" src="http://scripts.hashemian.com/js/countdown.js"></script>  
        </head>  
        <%  
            String ts=request.getParameter("testname");  
            session.setAttribute("tname", ts);  
            Connection con=null;  
            Statement s1=null;  
            Statement s=null;  
            ResultSet r1=null;  
            ResultSet r=null;  
            int t=120000;  
            String time=null;  
            try  
            {  
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
                con=DriverManager.getConnection("jdbc:odbc:online_testing");  
                s=con.createStatement();   
                s1=con.createStatement();          
                r=s.executeQuery("select * from "+ts+"");     
                r1=s1.executeQuery("select duration from tests where testname="+ts+"");    
                if(r1.next())  
                {  
                    time=r1.getString("duration");  
                    t=Integer.parseInt(time)*60000;  
logger.info(time);           
                } 
else {
   logger.info("No row found in db for test " + ts);
          System.out.println("No row found in db for test " + ts);
           out.println("<br>!! <b>No row found in db </b>for test " + ts + "<br><br><br>");         
}      
      r1.close();  
      }  
            catch(Exception e1)  
            {  
                response.setContentType("text/html");  
                out.println(e1.toString());  
            }  
        %>  
        <body onload="setTimeout('submitForm()',<%=t%>)">      

        <div class="header"></div>  
            <div class="view" style="color: #050505">  
                <form action="Givetest" method="post">   
                    <h1 align="center" style="color: #050505"><%=ts%></h1>  

                    <%  
                        int i=1;  
                        while(r.next()){  
                        String a = r.getString("question");  
                        String b = r.getString("option1");  
                        String c = r.getString("option2");  
                        String d = r.getString("option3");                                              
                        String e = r.getString("option4");                                                              
                    %>  
                    Question <%=i%>:- <label> <%=a%></label><br>  
                    <input type="radio" name="r<%=i%>" value="<%=b%>" checked><label><%=b%></label><br>  
                    <input type="radio" name="r<%=i%>" value="<%=c%>"><label><%=c%></label><br>  
                    <input type="radio" name="r<%=i%>" value="<%=d%>"><label><%=d%></label><br>  
                    <input type="radio" name="r<%=i%>" value="<%=e%>"><label><%=e%></label><br>  
    <br>  
                    <input type="hidden" name="h" value="<%=ts%>">  

                    <%  
                        i++;  
                        }  
                        r.close();  
                        s.close();  
                        con.close();  
                    %>  
                    <input type="submit" class="button">  
                </form>  
                </div>  
            <div class="copyright" align="center"> © SAUMYARAJ ZALA</div>  
        </body>  
    </html>

给定测试
函数submitForm(){
document.forms[0]。提交();
}  
问题:-





©SAUMYARAJ ZALA
而不是数据库中的内容?如果是,您确定没有抛出错误吗

顺便说一句,这并不是用jsp编写web应用程序的最佳方法——虽然它可以工作,但最好是为数据库等创建servlet和POJOs/helper.java文件。确保每次重新启动时都清理tomcat/app服务器的临时文件夹,以确保它使用最新的jsp

在jsp中,可以有一个类似“Version 001”的文本,并手动增加该文本,以便运行正确的代码版本


如果没有记录器,请使用记录器或system.out.println

    r1=s1.executeQuery("select duration from tests where testname="+ts+"");    
       //if should be enough as you will only have 0 or 1 row per test? 
       if(r1.next())  
        {  
            time=r1.getString("duration");  
            t=Integer.parseInt(time)*60000;           
        }  else{
           logger.warn("No row found in db for test " + ts);
           //okay for debug
           out.println("<br>!! <b>No row found in db </b>for test " + ts + "<br><br><br>");  
        }
        r1.close();  
    }  
    catch(Exception e1)  
    {  
        response.setContentType("text/html");  
        out.println("<br><br> <b> ERROR</b>" + e1.toString());  
    }  
r1=s1.executeQuery(“从testname=“+ts+”)的测试中选择持续时间);
//是否应该足够,因为每个测试只有0或1行?
if(r1.next())
{  
time=r1.getString(“持续时间”);
t=整数.parseInt(时间)*60000;
}否则{
logger.warn(“在db中找不到用于测试的行”+ts);
//可以调试了
out.println(“
!!在db中找不到测试“+ts+”


”)的行; } r1.close(); } 捕获(异常e1) { response.setContentType(“text/html”); out.println(“

错误”+e1.toString()); }
sql
testname=“+ts+”“

非常糟糕,您应该使用准备好的语句,或者请求SQL注入攻击

而不是数据库中的内容?如果是,您确定没有抛出错误吗

顺便说一句,这并不是用jsp编写web应用程序的最佳方法——虽然它可以工作,但最好是为数据库等创建servlet和POJOs/helper.java文件。确保每次重新启动时都清理tomcat/app服务器的临时文件夹,以确保它使用最新的jsp

在jsp中,可以有一个类似“Version 001”的文本,并手动增加该文本,以便运行正确的代码版本


如果没有记录器,请使用记录器或system.out.println

    r1=s1.executeQuery("select duration from tests where testname="+ts+"");    
       //if should be enough as you will only have 0 or 1 row per test? 
       if(r1.next())  
        {  
            time=r1.getString("duration");  
            t=Integer.parseInt(time)*60000;           
        }  else{
           logger.warn("No row found in db for test " + ts);
           //okay for debug
           out.println("<br>!! <b>No row found in db </b>for test " + ts + "<br><br><br>");  
        }
        r1.close();  
    }  
    catch(Exception e1)  
    {  
        response.setContentType("text/html");  
        out.println("<br><br> <b> ERROR</b>" + e1.toString());  
    }  
r1=s1.executeQuery(“从testname=“+ts+”)的测试中选择持续时间);
//是否应该足够,因为每个测试只有0或1行?
if(r1.next())
{  
time=r1.getString(“持续时间”);
t=整数.parseInt(时间)*60000;
}否则{
logger.warn(“在db中找不到用于测试的行”+ts);
//可以调试了
out.println(“
!!在db中找不到测试“+ts+”


”)的行; } r1.close(); } 捕获(异常e1) { response.setContentType(“text/html”); out.println(“

错误”+e1.toString()); }
sql
testname=“+ts+”“


非常糟糕,您应该使用准备好的语句,或者请求SQL注入攻击。看看owasp,错误在where子句中,它应该是这样的:-

r1=s1.executeQuery("select duration from tests where testname="+ts+"");  

此外,在将此代码传递给jsp之前,应在servlet中执行此代码。错误出现在where子句中,该子句应类似于:-

r1=s1.executeQuery("select duration from tests where testname="+ts+"");  

此外,在将此代码传递给jsp之前,应该在servlet中执行此代码

实际上,我希望此setTimeout方法必须从数据库中的表中获取的时间间隔,为此,我在上面的代码中创建了一个resultset r1,然后在获取该时间间隔后,我将其复制到变量“t”中它被馈送到我的setTimeout方法。这是一个在线测试,因此我的setTimeout对于每个测试都有不同的时间间隔。这是我假设的,并询问:您是否在数据库查找代码中看到任何错误?你得到的t值是多少?在编辑的答案中使用调试代码,看看你的数据库查找是否正常。我得到的结果是,我的变量“t”取的是我初始化的值,即120000,而不是你多次提到的结果集中的值。我试图添加一些代码来帮助您理解为什么会发生这种情况——通过查看数据库代码中是否存在任何错误。正确的方法是单独测试数据库代码,看看它是否工作。您需要阅读日志记录,并考虑如何调试您的代码。。。否则会浪费几个小时,也不会有什么收获。实际上,我想要一个时间间隔,这个setTimeout方法必须从数据库中的一个表中获取,为此,我在上面的代码中创建了一个resultset r1,然后在获取该时间间隔后,我将它复制到变量“t”中,该变量被馈送到我的setTimeout方法中。这是一个在线测试,因此我的setTimeout对于每个测试都有不同的时间间隔。这是我假设的,并询问:您是否在数据库查找代码中看到任何错误?你得到的t值是多少?在编辑的答案中使用调试代码,看看你的数据库查找是否正常。我得到的结果是,我的变量“t”取的是我初始化的值,即120000,而不是你多次提到的结果集中的值。我试图添加一些代码来帮助您理解为什么会发生这种情况——通过查看数据库代码中是否存在任何错误