0

//下面是我的名为 HtmlTable 的 servlet。我正在尝试在这里实现类似购物车的功能。addItems 是另一个将元素放入 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();
            }
        }



    }

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

4

2 回答 2

4

你不能那样做。

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

最有可能的是,您将希望使用已经存在的框架来执行此操作。

下面应该给你更多的信息,以及一些如何去做的想法:如何使用 Servlets 和 Ajax?

于 2012-11-22T09:26:53.137 回答
3

容器不会调用您的任何方法。您应该从servlet 规范(或至少HttpServletjavadoc)开始。

容器调用service()您的 servlet 的方法,该方法又用于HttpServlet分派到与请求 HTTP 方法对应的方法:doGet()doPost()。这就是您应该挂钩逻辑的地方(覆盖其中一个,或service()自身并放置您的代码那里)。

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

于 2012-11-22T09:28:11.657 回答