Java 如何从另一个servlet访问在一个servlet中创建的对象
我有个问题。假设有两个servlet:Load()和Process()。在Load()期间,我想创建并初始化一些对象。在Process()期间,我想将这些对象用于其他一些事情 因为servlet中没有主类(与桌面编程相反),所以我认为无法返回Load()创建的对象,并将其作为参数从主类传递给Process()Java 如何从另一个servlet访问在一个servlet中创建的对象,java,web-applications,object,servlets,Java,Web Applications,Object,Servlets,我有个问题。假设有两个servlet:Load()和Process()。在Load()期间,我想创建并初始化一些对象。在Process()期间,我想将这些对象用于其他一些事情 因为servlet中没有主类(与桌面编程相反),所以我认为无法返回Load()创建的对象,并将其作为参数从主类传递给Process() 那么,如何在一个servlet调用期间在中创建一个对象,并从另一个servlet使用/访问该对象呢?我不太明白Load()和Process()的含义。servlet不是函数。它们被映射到某
那么,如何在一个servlet调用期间在中创建一个对象,并从另一个servlet使用/访问该对象呢?我不太明白Load()和Process()的含义。servlet不是函数。它们被映射到某个URL,它们的函数被servlet容器调用。可以将多个servlet映射到URL,并按照web.xml中定义的顺序调用它们 回答您的问题:状态通过会话对象正常存储
您可以通过getAttribute()在另一个Servlet中访问它。使用
ServletContext
:getServletContext()。setAttribute(…)
也可以考虑将初始化代码和处理代码放在一个servlet中。如果其中一个中只有
init()
更新:如果您希望在同一用户的连续请求中重用对象(即,不要一次初始化它们并在任何地方使用它们),而不是将它们放在ServletContext
中,请将它们放在一个较小的范围内—HttpSession
(通过request.getSession()
获取)搜索“servlet间通信”您从错误的角度看待servlet。我建议您阅读,然后再重新思考。@BalusC我阅读了您提供的链接。我正在以线程安全的方式使用这些内容,正如您在回答(您的)中所描述的那样。谢谢您,非常好的解释。我正在使用HttpSession(如下文@Bozho所述)用于将用户定义的对象存储到会话中。我认为这很好。为什么你说我从错误的角度看待servlet?与桌面编程的比较真的没有任何根据。我同意。也许我没有准确地编写东西。我没有说servlet是函数。我的意思是我为myslef编写了两个servlet:加载和处理当然,我已经在web.xml中映射了它们"。谢谢。我正在学习本教程。你对此有何评论?@Bikash可怕。它正在进行各种可能的黑客攻击,而不是使用ServletContext
,该工具用于在servlet之间共享数据。到目前为止,我看到ServletContext用于在设计时定义全局变量,并且可以由位于ru的各种servlet访问但是,我的标准有点不同。我需要在调用一个servlet(/Load)的过程中创建一个类的对象(从连接到web项目的外部jar),并且我需要在调用另一个servlet(/Process)的过程中访问该对象.ServletContext是否仍然良好?@Bikash-这与您现在所说的情况完全不同。但是,这些方法仍然不正确。请参阅我的更新。