Web应用程序存在于2个servlet之外,其中一个将返回厨房的计划作为一系列时间戳,这些时间戳仍可供客户下订单。第二个servlet具有将新订单放入系统的功能。
订单可以来自2个地点,既可以是cashregister的数据库(适用于我们业务的实体访客,也可以是通过电话),也可以来自在线订购系统(基于woo commerce)
我已经创建了一个基于数据库进行规划的servlet。每次通过我为woo-commerce制作的插件中的php curl调用doGet方法时,都会进行规划。
现在我想在我的插件中制作第二部分,它将通过第二个servlet将订单注入相同的计划中。但我想知道将订购servlet中收到的这个新订单添加到包含计划servlet订单的arraylist中?
答案 0 :(得分:0)
servlet通过 ServletContext 对象获取有关其他servlet的信息。使用 getServlet()来获取特定的servlet:
public Servlet ServletContext.getServlet(String name) throws ServletException
此方法返回给定名称的servlet,如果未找到servlet,则返回 null 。指定的名称可以是servlet的注册名称(例如&#34; file&#34;)或其类名(例如&#34; com.sun.server.webserver.FileServlet&#34 ;)。服务器为每个名称维护一个servlet实例,因此getServlet(&#34; file&#34;)返回与 getServlet不同的servlet实例(&#34; com.sun.server.webserver.FileServlet&#34;)< / em>的
当您拥有servlet实例时,如果需要在两个servlet之间进行通信,则可以获得所需的内容。或者你可以在不同的类中使用好的旧的静态 arraylist 并将结果存储在其中,然后只要你需要该列表,只需使用类名称来调用它。
答案 1 :(得分:0)
Sharp edge的解决方案基于不推荐使用的API,不能与体面的Java EE版本一起使用。但是使用ServletContext来保持变量对于不同的servlet是通用的仍然是正确的方法。
你可以:
contextInitialized
的{{1}}方法初始化ArrayList并将其存储为ServletContext attribue ServletContextListener
来访问ArrayList。或者,您可以创建一个负责数组列表管理的服务类,如果您使用Spring Framework或完整的Java EE容器(不是Tomcat,则可以将其作为ServletContext属性或将其注入Servlet中)。 )