Servlet被调用两次!

问题描述:

抱歉,但我没有实际的代码与我,但我会尽量解释:Servlet被调用两次!

我有一个servlet映射到以下几点:

/admin/* 

所以,这就引出一个servlet:

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

这里是MainController:

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被调用两次!。这导致我很多错误..

有没有人有这方面的线索?这是因为我使用了某种遗产? 谢谢大家!

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

+0

您是最棒的,谢谢大家。 – 2008-11-27 01:52:54

+0

嗨,我面临着同样的问题......并且我只实现了doPost()方法......但是每当我面对这个问题时,即使我的网站已经被托管了......我创建了一个链接来调用该servlet ...请帮助 – Pedantic 2014-06-15 10:25:56

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

如果您正在开发本地和访问您的应用程序,地址为http://127.0.0.1这是回环网络,请将地址更改为http://localhost,这是直接的。

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

虽然它是旧线程,但我的答案可能有助于某人。 今天我面临同样的问题。我的特定servlet在早期工作正常,并且突然开始调用doGet方法两次。在调查中,我发现我的Chrome浏览器具有html验证器扩展,它将再次调用servlet来执行html验证。 禁用扩展后,问题得到解决。

有同样的问题,我尝试了上述和其他帖子中提到的任何事情,但问题只在本地。

如果没有什么适合您的,请尝试部署:)