抱歉,我没有实际的代码,但是我将尝试解释:
我有一个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中的一个,然后从您没有实现的那一个中调用另一个。