2012-02-20 45 views
-1

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

+1

在**运行期间,您是否必须更改这些值**? – home 2012-02-20 19:13:46

回答

1

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

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

+0

你是什么意思的静态和单身? – 2012-02-20 19:15:07

+0

啊,你已经不使用它们了:)不要担心,只要把'MyProperties'放在servlet上下文中即可。 – BalusC 2012-02-20 19:25:47

2

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

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

+0

我应该将它们存储在ServletContext中? – 2012-02-20 19:09:35

+0

@SotiriosDelimanolis更新了帖子 – 2012-02-20 19:14:45

1

您可以保留这些默认values of propertiespublic static字段的public class,说一个属性类。您可以在应用程序的不同部分分享它们,因为您可以轻松获取并设置它们。

相关问题