有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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();
            }
        }



    }

//如果我不清楚,请原谅。让我知道我会根据读者的方便进行更新


共 (2) 个答案

  1. # 1 楼答案

    你不能那样做

    流经Servlet的HTTP请求将始终转到Servlet的service方法。您需要的是使用service方法作为控制器,因此它会检查传入的请求,并根据请求的参数调用jusAdding(或其他方法)

    最有可能的情况是,您希望使用现有的框架来实现这一点

    以下内容将为您提供更多信息,以及一些如何进行的想法:How to use Servlets and Ajax?

  2. # 2 楼答案

    容器不会调用任何方法。你应该从servlet specification(或者至少是^{} javadoc)开始

    容器调用servlet的service()方法,而HttpServlet则将其分派给与请求HTTP方法相对应的方法:doGet()doPost()等等。这就是应该挂接逻辑的地方(覆盖其中一个,或者service()本身并将代码放在那里)

    为了区分“整页请求”和“AJAX请求”,您需要客户端在该调用中包含一些鉴别器:一些具有不同值的请求参数、不同的HTTP方法或其他什么。一旦有了它,例如在doGet()方法中,可以检查该鉴别器,并根据客户机请求调用justAdd()processRequest()