所以我认为我的servlet可以在我的网页与服务器通信的同时(同时)通过GET和POST处理请求。可能是因为它是同一页面发出两个请求,所以只有一个线程处理这两个请求。发生的事情是我通过JQuery AJAX请求调用POST请求,并且在请求成功时它调用具有JQuery AJAX GET请求的回调javascript方法。对于成功请求的构成,我的理解可能是错误的。关于如何使其工作或为什么它不起作用的任何建议或解释将不胜感激。
答案 0 :(得分:1)
我使用glassfish4,servlet-api 3测试了你的案例,我观察了以下内容:
首先,我创建了一个服务于get和post的servlet。这个servlet有5秒的线程休眠延迟
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static Logger logger = Logger.getLogger(HelloServlet.class);
public HelloServlet() {
super();
logger.debug("HelloServlet created");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
logger.debug("get start");
try { Thread.sleep(5000); }
catch (InterruptedException e) { e.printStackTrace(); }
logger.debug("get finish");
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
logger.debug("post start");
try { Thread.sleep(5000); }
catch (InterruptedException e) { e.printStackTrace(); }
logger.debug("post finish");
super.doPost(req, resp);
}
}
然后我尝试在5秒钟内调用GET和POST,这就是它的样子
INFO: 2013-07-07 14:06:06 DEBUG HelloServlet:21 - HelloServlet created
INFO: 2013-07-07 14:06:06 DEBUG HelloServlet:27 - get start
INFO: 2013-07-07 14:06:08 DEBUG HelloServlet:41 - post start
INFO: 2013-07-07 14:06:11 DEBUG HelloServlet:34 - get finish
INFO: 2013-07-07 14:06:13 DEBUG HelloServlet:48 - post finish
所以你原来的理解似乎是正确的