java只调用servlet类的一个方法,而不是整个servlet
//下面是我的名为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();
}
}
}
//如果我不清楚,请原谅。让我知道我会根据读者的方便进行更新
# 1 楼答案
你不能那样做
流经Servlet的HTTP请求将始终转到Servlet的
service
方法。您需要的是使用service
方法作为控制器,因此它会检查传入的请求,并根据请求的参数调用jusAdding
(或其他方法)最有可能的情况是,您希望使用现有的框架来实现这一点
以下内容将为您提供更多信息,以及一些如何进行的想法:How to use Servlets and Ajax?
# 2 楼答案
容器不会调用任何方法。你应该从servlet specification(或者至少是^{} javadoc )开始
容器调用servlet的
service()
方法,而HttpServlet
则将其分派给与请求HTTP方法相对应的方法:doGet()
,doPost()
等等。这就是应该挂接逻辑的地方(覆盖其中一个,或者service()
本身并将代码放在那里)为了区分“整页请求”和“AJAX请求”,您需要客户端在该调用中包含一些鉴别器:一些具有不同值的请求参数、不同的HTTP方法或其他什么。一旦有了它,例如在
doGet()
方法中,可以检查该鉴别器,并根据客户机请求调用justAdd()
或processRequest()