【问题标题】:Jsp Loading large amount of data into memory?Jsp将大量数据加载到内存中?
【发布时间】:2011-07-12 11:27:41
【问题描述】:

如何使用 tomcat 服务器将数据加载到内存中?

我有一个从文件加载数据的 java 类。 我想将数据加载到内存中一次,并且每次客户端请求使用该类的页面时,都会从内存中使用数据。

例如

class MyClass
{
      HashMap data = new HashMap(100);
      public void LoadDataFromFile()
      {.....}
      public void UseTheData(String input)
      {....}
      public MyClass(){ LoadDataFromFile();}  // c'tor load data
      public SetInput(String Input)
      {
           UseTheData(input);
      }
}

在我的jsp文件中

Myclass myclass= new MyCass();
myclass.LoadDataFromFile();
myclass.UseTheData();

我知道我应该在 jsp 文件中使用 JSTL

如果我使用 scope="session" 数据加载会保留吗?

<jsp:useBean id="myclass" class="MyClass" scope="session">
<jsp:setProperty name="myclass" property="input" value="blabla" />
</jsp:useBean>

如果我在构造函数中加载数据,我可以确保类只初始化一次吗?

【问题讨论】:

    标签: java jsp tomcat installation


    【解决方案1】:

    创建一个ServletContextListener 并将其注册到您的 web.xml 文件中。在ServletContextListener 中,当应用程序初始化时,读取文件并将其存储在ServletContext 的一个属性中。然后可以从您的 Java 和 JSP 代码轻松访问此属性。

    【讨论】:

    • 我的 java 类不知道这个 servlet,所以我需要将数据从 servlet 传递给我的类,对吧?
    • 将 scope="session" 替换为 scope="application",您将访问存储在 ServletContext 属性中的对象。但是 jsp:useBean 确实是古代的东西。您应该真正使用 MVC 框架并停止使用 JSP 中的 Java 和 jsp:xxx 标记。
    • 我已经继承了代码,现在将所有内容移入框架不是一个选项:(。如果我使用 scope="application" 那么 jsp:useBean 只会在以下情况下创建一个新 bean还没有吗?
    猜你喜欢
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 2023-03-12
    • 2023-03-26
    • 2012-02-05
    • 1970-01-01
    相关资源
    最近更新 更多