Servlet多次执行doPost方法

时间:2015-06-28 05:59:28

标签: javascript jsp servlets

我编写了JSP页面,并通过自动提交(JavaScript)代码将表单发布到servlet。

在servlet中我打印一次结果,但是当我执行应用程序时,我不止一次出来。 JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="/src/js/tableform.js"></script>
    <link rel="stylesheet" type="text/css" href="/css/table.css">
</head>
<body>


<form id="myForm" name="LOAD" action="/gridview" method="post">
    <input type="hidden" name="pageAction" value="readTable">
</form>
</body>
<script>
    setTimeout(submitform,0);

    function submitform()
    {
        //alert('test');
        document.getElementById("myForm").submit();
    }
</script>
</html>

Servlet doPost

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("here");
        String pageAction = request.getParameter("pageAction");
        System.out.println(pageAction);
}

输出:

  

这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable
  这里
  readTable

1 个答案:

答案 0 :(得分:0)

setInterval()方法以指定的时间间隔(以毫秒为单位)调用函数。你写0,所以它会在每秒后调用submitform()方法。这就是为什么你不止一次得到输出。如果指定毫秒,则在特定毫秒后调用。

var auto_refresh = setInterval(function() { submitform(); }, 0);

setInterval()方法将继续调用该函数,直到调用clearInterval()或窗口关闭。

使用clearInterval函数时,

auto_refresh将用作参数。

clearInterval(auto_refresh);

示例 - 我在MyEclipse中创建了一个示例

JSP页面

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
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>
    <script type="text/javascript">
    function submitform()
    {
        document.getElementById("myForm").submit(); 
    }
    </script>
  </head>

  <body onload="submitform()">
    <form id="myForm" name="LOAD" action="servlet/abc" method="post">
    <input type="hidden" name="pageAction" value="readTable">
</form>
  </body>
</html>

的Servlet

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println("here");
        String pageAction = request.getParameter("pageAction");
        System.out.println(pageAction);
}

输出屏幕截图 - 查看最后两行的结果

enter image description here