将数据添加到其他servlet的arraylist中

时间:2014-12-29 10:50:40

标签: servlets

Web应用程序存在于2个servlet之外,其中一个将返回厨房的计划作为一系列时间戳,这些时间戳仍可供客户下订单。第二个servlet具有将新订单放入系统的功能。

订单可以来自2个地点,既可以是cashregister的数据库(适用于我们业务的实体访客,也可以是通过电话),也可以来自在线订购系统(基于woo commerce)

我已经创建了一个基于数据库进行规划的servlet。每次通过我为woo-commerce制作的插件中的php curl调用doGet方法时,都会进行规划。

现在我想在我的插件中制作第二部分,它将通过第二个servlet将订单注入相同的计划中。但我想知道将订购servlet中收到的这个新订单添加到包含计划servlet订单的arraylist中?

2 个答案:

答案 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>的

Source found here

当您拥有servlet实例时,如果需要在两个servlet之间进行通信,则可以获得所需的内容。或者你可以在不同的类中使用好的旧的静态 arraylist 并将结果存储在其中,然后只要你需要该列表,只需使用类名称来调用它。

答案 1 :(得分:0)

Sharp edge的解决方案基于不推荐使用的API,不能与体面的Java EE版本一起使用。但是使用ServletContext来保持变量对于不同的servlet是通用的仍然是正确的方法。

你可以:

  • 使用contextInitialized的{​​{1}}方法初始化ArrayList并将其存储为ServletContext attribue
  • 在两个servlet中使用ServletContextListener来访问ArrayList。

或者,您可以创建一个负责数组列表管理的服务类,如果您使用Spring Framework或完整的Java EE容器(不是Tomcat,则可以将其作为ServletContext属性或将其注入Servlet中)。 )