有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ServletContext或Properties类

我正在开发一个Servlet,它有不同的操作,这些操作依赖于不同的参数,比如默认值。但是,我希望能够在运行时通过jsp或命令行界面更改这些值。此外,有许多不同的类(主要是用于每个操作的命令)需要能够访问这些参数。我是否应该将这些值存储在一个bean MyProperties类中,该类包装java的Properties类以从文件中加载值,然后对其进行更改?或者我应该将它们加载到servlet的应用程序上下文中并从那里获取/设置它们


共 (3) 个答案

  1. # 1 楼答案

    两者都做。一旦应用程序在ServletContextListener#contextInitialized()中启动,就创建MyProperties类并将其放入servlet上下文中。然后,您可以以通常的方式从每个servlet和JSP中的servlet上下文中获取存储的实例,并相应地通过MyProperties类检索/操作属性

    这样一来,servlet上下文中只有一个属性,而不是每个属性的无数属性。通过这种方式,您也不需要在MyProperties中处理静态和单例,因为这将是不可抽象或不可测试的

  2. # 2 楼答案

    将这些配置属性存储在数据库中。总是去数据库获取最新的配置。如果性能是个问题,那么我建议将它们缓存在DB端以保持简单

    如果您需要终极性能,那么我建议您在应用程序启动时加载它们(可能是Servlet.init()或ServletContextListener)。但这需要更多的代码来确保数据库和缓存的更新保持同步

  3. # 3 楼答案

    可以将这些默认的values of properties保留为public classpublic static字段,比如属性类。您可以在应用程序的不同部分之间共享它们,因为您可以轻松地获取和设置它们