Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从另一个servlet访问在一个servlet中创建的对象_Java_Web Applications_Object_Servlets - Fatal编程技术网

Java 如何从另一个servlet访问在一个servlet中创建的对象

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:Load()和Process()。在Load()期间,我想创建并初始化一些对象。在Process()期间,我想将这些对象用于其他一些事情

因为servlet中没有主类(与桌面编程相反),所以我认为无法返回Load()创建的对象,并将其作为参数从主类传递给Process()


那么,如何在一个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-这与您现在所说的情况完全不同。但是,这些方法仍然不正确。请参阅我的更新。