//下面是我的名为HtmlTable的servlet。我想在这里实现类似购物车的功能。 addingItems是另一个将元素放在ArrayList中的类。每当我从网站添加内容时,我都希望AJAX请求只调用方法jusAdding()而不是processRequest方法。因此当将足够的项添加到ArrayList时,我可以通过调用aI.getItems()在屏幕上打印它,这将在调用servlet时自动发生。可能吗??如果是,我应该如何在AJAX请求中写入URL。
public class HtmlTable extends HttpServlet {
addingItems aI = new addingItems();
public void jusAdding(HttpServletRequest request, HttpServletResponse response){
aI.addItemsInCart(request, response);
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
List<itemsCart> itemsInCart = aI.getItemsInCart();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet HtmlTable</title>");
out.println("</head>");
out.println("<body>");
//whatever content is in the itemsInCart will be displayed here in body tag
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
//如果我不清楚,请原谅我。让我知道我会根据读者的方便更新。
答案 0 :(得分:3)
你做不到。
流经Servlet的HTTP请求总是转到Servlet的service
方法。您需要的是使用service
方法作为控制器,因此它会检查传入的请求并根据请求的参数调用jusAdding
(或其他方法)。
最有可能的是,您需要使用已有的框架来实现这一目标。
以下内容应该为您提供更多信息,以及如何执行此操作的一些想法:How to use Servlets and Ajax?
答案 1 :(得分:2)
容器不会调用任何方法。您应该从servlet specification(或至少HttpServlet
javadoc)开始。
容器调用servlet的service()
方法,而HttpServlet
方法将doGet()
调度到与请求HTTP方法对应的方法:doPost()
,service()
等那就是你应该把你的逻辑挂钩的地方(覆盖其中一个,或doGet()
本身并将你的代码放在那里)。
为了区分“完整页面请求”和“AJAX请求”,您需要客户端在该调用中包含一些鉴别器:一些具有不同值的请求参数,一个不同的HTTP方法或其他。完成后,例如,在justAdd()
方法中,您可以根据客户端请求检查该鉴别符并调用processRequest()
或{{1}}。