【问题标题】:Servlet being called twice!Servlet 被调用两次!
【发布时间】:2008-11-27 01:30:34
【问题描述】:

对不起,我没有实际的代码,但我会尽力解释:

我有一个映射到以下内容的 servlet:

/admin/* 

所以,这是一个 servlet:

public class AdminController extends MainController {
    public void doPost(HttpServletRequest request, HttpServletResponse response) {
        // Do stuf here
    }
}

这里是主控制器:

public class MainController extends HttpServlet {
@Override
public void service(ServletRequest request, ServletResponse response) {
    String requesturi = ((HttpServletRequest)request).getRequestURI();
    reqlist = Arrays.asList(requesturi.substring(requesturi.indexOf(Util.rootPath) + Util.rootPath.length()).split("/"));
    reqlist = reqlist.subList(1, reqlist.size());

    doPost((HttpServletRequest)request, (HttpServletResponse)response);
}

所以,请求被传递给了AdminController,没问题,但后来我意识到:

servlet 被调用了两次!。这导致了我很多错误..

有人知道吗?是因为我使用了某种传承? 谢谢大家!

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    虽然这是旧线程,但我的回答可能会对某人有所帮助。 今天我遇到了同样的问题。我的特定 servlet 早些时候工作正常,突然它开始调用 doGet 方法两次。经过调查,我发现我的 chrome 浏览器具有 html 验证器扩展,它再次调用 servlet 并使用相同的请求进行 html 验证。 在我禁用扩展后,问题得到了解决。

    【讨论】:

    • 在搜索 doFilter 代码、Web 描述符、过滤器映射 3 小时后,这挽救了我的下坡路。我爱你。 :)
    • 感谢您的回答,GitLab 扩展为我造成了这种情况
    【解决方案2】:

    HttpServlet.service 方法被所有请求类型调用,您看到的是一个 HEAD 请求,然后是一个 GET 或 POST 请求。无需实现服务,只需实现 doGet 或 doPost。通常的做法是只实现 doPost 或 doGet 之一,然后从您没有实现的那个调用另一个。

    【讨论】:

    • 嗨,我面临同样的问题......我只实现了 doPost() 方法......但每次我遇到这个问题时,甚至我的网站都已托管......我有创建了一个链接来调用该 servlet ...请帮助
    【解决方案3】:

    我用简单的方法解决了同样的问题。

    如果您正在本地开发并使用地址http://127.0.0.1(环回网络)访问您的应用,请将地址更改为http://localhost,即直接。

    如果您实际在虚拟主机或服务器上运行它并从外部网络访问它,则不会发生此问题。

    【讨论】:

      【解决方案4】:

      遇到了同样的问题,我尝试了上面和其他帖子中提到的任何方法,但问题只是在本地。

      如果您也没有任何效果,请尝试部署 :)

      【讨论】:

        【解决方案5】:

        我有同样的问题。我有一个 servlet 来处理发布请求。 但是在调用 doPost 之后,它突然开始调用 doGet 方法。 所以 doGet 是由我安装的 chrome 插件(FireBug Lite)调用的。 停用该插件后问题解决了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-01
          • 2012-05-05
          • 2017-01-19
          • 2014-02-04
          • 2016-12-13
          • 2016-01-30
          相关资源
          最近更新 更多