当前位置: 首页 > 知识库问答 >
问题:

为同一HTTP请求多次调用Servlet doGet方法

颜永怡
2023-03-14

我遇到了一个奇怪的问题。对于单个HTTP请求,我的servlet的doGet方法被多次调用。每隔10-12秒重新运行一次,直到初始过程完成。

下面是我的servlet代码

private static final long serialVersionUID = WebServiceServlet.class.getCanonicalName().hashCode();

private ServletContext servletContext;
/**
 * @see HttpServlet#HttpServlet()
 */
public void init(ServletConfig servletConfig) throws ServletException {
    super.init(servletConfig);
    servletContext = servletConfig.getServletContext();
}
/*public WebServiceServlet() {
    super();
}*/
/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    String output = null;
    /*
     * Calling the Operation Manager which will decide the operation type
     * and call the corresponding operation binder and set the return
     * response generated in http response.
     */
    // Request Processing
    response.setContentType("application/json; charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.print(output);
    out.close();
}
@Override
public void destroy() {
    super.destroy();
}

下面是web.xml中的映射

<servlet>
    <description></description>
    <display-name>WebServiceServlet</display-name>
    <servlet-name>WebServiceServlet</servlet-name>
    <servlet-class>com.servlet.WebServiceServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>WebServiceServlet</servlet-name>
    <url-pattern>/web.do</url-pattern>
</servlet-mapping>

我使用的是SEAM和JSF,但这是一个独立的servlet。日志中也没有例外。我还验证了INIT方法只被调用一次。重复的是服务方法。所有重新运行的标识哈希代码都是相同的(System.IdentityHashCode(this))。

调用是从REST API测试器发出的。呼叫方没有发生多个呼叫。重新运行是在tomcat容器上进行的。

我无计可施。还有其他人面临过这个问题吗?

共有1个答案

田兴朝
2023-03-14

我也面临过同样的问题。

只需在servlet类中保留@post方法。注释掉@get@put(如果有的话)。

谢谢

 类似资料:
  • 问题内容: 我正在使用带有GlassFish 3.0的JSF 2.0。 我有以下托管豆: 从 overview.xhtml 文件中,我从OverviewController中调用不同的属性或方法。 一切正常,但问题出在日志文件上: 如您所见,init()方法在同一请求中被两次调用,无缘无故。据我所知,每个带有 PostConstruct 注释的方法都会被调用一次。我错了吗? 编辑: 页面上未使用A

  • 问题内容: 这些天,我正在学习JSF + Facelets。我有一个BackingBean和Facelet xHTML页面。当我请求facelet页时(仅一次),backing-bean-method被多次调用。 这可能是什么原因? 我看不到什么特别的东西。提前致谢。 这是方面: 这是支持豆。方法getKunden被多次调用: 问题答案: Bean的getter在那里就 可以 从视图侧 访问 模型

  • 问题内容: 我想我在这里描述的可能有个名字,但我不知道。所以我的第一个问题是要知道这种技术的名称。 这是一个示例:假设您正在网页上实现实时搜索。每次用户在搜索框中键入内容时,您都会触发一个新的搜索查询,并且结果会尽可能频繁地更新。这是一件愚蠢的事情,因为您发送的查询会超出实际需要。每2-3个字母发送一次请求,或者每100 ms最多发送一次请求就足够了。 因此,一种技术是安排在键入键之后立即执行的查

  • 我试图利用Java多态性。我用Spring Boot构建了一个简单的CRUD应用程序,我想用Postman测试它... 问题是,我有下一个例外:

  • 我想用不同的预请求脚本多次运行相同的请求?不使用数据驱动(CSV)测试,我能做什么? 例如,我必须多次运行下面的GET url(每2分钟一次),但每当我运行它时,我都需要进行不同的预请求测试! {{url}}/legacy/COL 在此处输入图像描述

  • 主要内容:1 HTTP请求方法1 HTTP请求方法 对于HTTP/1.1协议,定义了一组通用的HTTP请求方法。可以根据要求扩展这些方法。这些方法的名称区分大小写,必须使用大写字母。 请求方法 说明 GET 请求指定的页面信息,并返回实体主体。 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头  POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可