gpt4 book ai didi

java - 如何从打开文件的不同 JSP 页面关闭文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:47 27 4
gpt4 key购买 nike

我有一个 JSP 页面,其中一种用户 users_group_1 需要使用文件。 所有这些都使用同一个文件,因此由于我使用 JSP,我创建了一个类 (Class1),其中所有方法都同步,以避免使用它时出现问题。

在这些用户组的 JSP 中,我只有一个适用于所有用户的实例,声明如下:

<%!
Class1 my_object = null;
%>

然后,当第一个用户使用网络时,它会:

if (my_object == null)
{
my_object = new Class1(file_to_open);
}

然后,该组中的所有用户都将使用同一个实例。

现在,我需要另一个 JSP 页面,该页面将由 user_group_2 打开,关闭此文件并保存完成的工作

所以我想我需要获取 JSP 中使用的 Class1 实例并将其提供给第二个实例。

我该怎么做?

额外数据:user_group_2 从未使用与 user_group_1 相同的 JSP 页面,因此我无法使用 request/session/... 对象(我认为)。

最佳答案

您的要求可以通过使用 ServletContext 对象(应用程序范围)来实现,如下所示。

在第一个 jsp 页面上,您要在其中初始化对象并将其设置为应用程序范围。

<% 
ProcessFile processFile=(ProcessFile)application.getAttribute("processFile");
if(null==processFile){
// make sure that all method of this class is synchronized beacause of multiple users
processFile=new ProcessFile("pathToOpenFile");
}

application.setAttribute("processFile", processFile);
//now processFile available globally.
%>

之后,在第二个 jsp 页面上,您可以使用已设置到应用程序范围中的 processFile 对象,如下所示:

 <% 
ProcessFile processFile2=(ProcessFile)application.getAttribute("processFile");
// now start processing of file
if(null!=processFile2){

processFile2.readFile();
//open file if not. And read it.

//and after that.
processFile2.closeFileIfOpen();
// do neccesorry checks inside above method while closing file.
//all method are synchronized
}
%>

关于java - 如何从打开文件的不同 JSP 页面关闭文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28994987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com