我有问题。假设有2个servlet:Load()和Process()。在Load()期间,我想创建并初始化一些对象。在Process()期间,我想将这些对象用于其他一些事情。
由于servlet中没有主类(与桌面编程相反),我认为我不能返回Load()创建的对象,并将其作为参数传递给主类的Process()。 / p>
那么,如何在一个servlet调用期间创建一个对象并使用/访问来自其他servlet的那个对象?
答案 0 :(得分:2)
使用ServletContext
:getServletContext().setAttribute(..)
另外,考虑将初始化代码和处理代码放在一个servlet中。如果你只在其中一个中有init()
,而在另一个中只有doGet()
,并且这些对象只能在这两个servlet之间共享,那么就没有这种分离的意义了。
更新:如果你想在同一个用户的连续请求中重用对象(即不初始化它们并在任何地方使用它们),而不是将它们放在ServletContext
中,将它们放在较小的范围内 - HttpSession
(由request.getSession()
获得)
答案 1 :(得分:0)
不确定我理解你对Load()和Process()的意思。 Servlet没有功能。它们被映射到某个URL,并且它们的service()功能被servlet容器调用。可以将多个servlet映射到URL,并按照web.xml中定义的顺序调用它们。
回答您的问题:状态通过setAttribute()
正常存储在Session对象中您可以通过getAttribute()在其他Servlet中访问它。