ServletContext或Properties类

时间:2012-02-20 19:03:44

标签: java servlets

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

这样,最终只能在servlet上下文中使用一个属性,而不是每个属性的无数属性。这样你也不需要在MyProperties内摆弄静态和单例,这些都不是可抽象的或可测试的。