使用 Servlet 的全局配置参数
Global config parameters using Servlets
我正在使用 JavaEE 开发 Web 应用程序。我的问题是关于使用我可以从每个 Servlet 或 JSP 页面使用的全局配置参数的最佳实践。
我有这两种可能:
1.使用 web.xml 文件及其上下文参数值 ,例如:
<context-param>
<param-name>myParam</param-name>
<param-value>theValue</param-value>
</context-param>
然后以这种方式检索值:
String data = getServletConfig().getServletContext().getInitParameter("myParam");
2。使用可由具有静态属性 的单例class 读取的.properties 文件。配置文件类似于:
myParam=theValue
和 class:
public class Config {
private final static String FILE_CONFIG = "/WEB-INF/config.properties";
private static String myParam = null;
// more properties
// singleton constructor and init attributes
public static String getMyParam() {
return myParam;
}
// more getters
}
所以我是这样使用的:
String data = utils.Config.getMyParam();
总而言之,您认为哪个选项是开发的最佳实践?第一个,第二个,也许还有一个...?
提前致谢!
我同意@kolossus。尽管这两种方法都可以接受,但使用 web.xml 的 context-param 值更 preferable 原因如下:
尽管这两种方法处理数据的效率几乎相同,但 web.xml 文件是 复杂数据的首选数据。
当我们谈论复杂的数据时,正确解释同样的数据也应该很容易。 web.xml 允许您按 层级顺序 获取数据,如果需要,还可以维护 父子关系 .
例如:在车辆中,我们有双轮车和四轮车。在两轮车中,我们再次有 自行车 和 踏板车。在踏板车中,我们有 Vespa。在自行车方面,我们再次拥有 经济型自行车 和 运动型自行车。
<vehicle>
<two-wheeler>
<scooter>Vespa</scooter>
<bike>
<eco-bike>Hero</eco-bike>
<sportsbike>Ducati</sportsbike>
</bike>
</two-wheeler>
</vehicle>
在 .properties 文件 中表示上述数据可能会变得有点笨拙。
格式为XML。因此,您的内容可以跨不同系统使用。 XML 文件带有字符编码,允许不同的系统理解如何解释这个特定文件。
.properties 文件 情况不同。您必须专门针对目标系统对其进行编码。它又带来了另一端数据损坏的风险。
出于所有这些原因(可能还有其他原因),建议使用 web.xml 文件及其上下文参数值。
我正在使用 JavaEE 开发 Web 应用程序。我的问题是关于使用我可以从每个 Servlet 或 JSP 页面使用的全局配置参数的最佳实践。
我有这两种可能:
1.使用 web.xml 文件及其上下文参数值 ,例如:
<context-param>
<param-name>myParam</param-name>
<param-value>theValue</param-value>
</context-param>
然后以这种方式检索值:
String data = getServletConfig().getServletContext().getInitParameter("myParam");
2。使用可由具有静态属性 的单例class 读取的.properties 文件。配置文件类似于:
myParam=theValue
和 class:
public class Config {
private final static String FILE_CONFIG = "/WEB-INF/config.properties";
private static String myParam = null;
// more properties
// singleton constructor and init attributes
public static String getMyParam() {
return myParam;
}
// more getters
}
所以我是这样使用的:
String data = utils.Config.getMyParam();
总而言之,您认为哪个选项是开发的最佳实践?第一个,第二个,也许还有一个...?
提前致谢!
我同意@kolossus。尽管这两种方法都可以接受,但使用 web.xml 的 context-param 值更 preferable 原因如下:
尽管这两种方法处理数据的效率几乎相同,但 web.xml 文件是 复杂数据的首选数据。
当我们谈论复杂的数据时,正确解释同样的数据也应该很容易。 web.xml 允许您按 层级顺序 获取数据,如果需要,还可以维护 父子关系 .
例如:在车辆中,我们有双轮车和四轮车。在两轮车中,我们再次有 自行车 和 踏板车。在踏板车中,我们有 Vespa。在自行车方面,我们再次拥有 经济型自行车 和 运动型自行车。
<vehicle>
<two-wheeler>
<scooter>Vespa</scooter>
<bike>
<eco-bike>Hero</eco-bike>
<sportsbike>Ducati</sportsbike>
</bike>
</two-wheeler>
</vehicle>
在 .properties 文件 中表示上述数据可能会变得有点笨拙。
格式为XML。因此,您的内容可以跨不同系统使用。 XML 文件带有字符编码,允许不同的系统理解如何解释这个特定文件。
.properties 文件 情况不同。您必须专门针对目标系统对其进行编码。它又带来了另一端数据损坏的风险。
出于所有这些原因(可能还有其他原因),建议使用 web.xml 文件及其上下文参数值。