Java等效于C#的ConfigurationManager.AppSettings [x]

时间:2013-12-18 15:06:41

标签: java

Java新手,我正在尝试在.NET中找到web.config应用程序设置的等效项。

到目前为止,我找到了类似这样的例子:

Properties props = new Properties();
FileInputStream fis = new FileInputStream("c:/appSettings.properties");
props.load(fis);

但是,我知道.NET缓存web.config文件并插入对Configuration.AppSettings[x]的调用并不昂贵。我正在寻找一个等效的解决方案。因此,我可以通过页面加载多次调用应用程序设置。

例如:

<link  href="<%= ResolveUrl("~/css/main.css?ver=" + Configuration.AppSettings["version"]) %>" rel="Stylesheet" type="text/css" media="screen" />

我可以创建一个可以做等效的类,但如果已经存在某些东西,我不想重新发明轮子。

3 个答案:

答案 0 :(得分:2)

.NET的Web.config的Java等价物是web.xml,它是Java EE webapps的部署描述符。

web.xml中,您可以设置上下文参数,您可以通过servlet或JSP中的类ServletContext访问这些参数。例如:

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.mycompany.myapp.SomeServlet</servlet-class>
</servlet>
<context-param>
    <param-name>myparam</param-name>
    <param-value>hello</param-value>
</context-param>

在JSP中:

// 'application' is an implicit variable available inside JSPs
// that refers to the ServletContext
String value = application.getInitParameter("myparam");

答案 1 :(得分:0)

您也可以在web.xml中使用init-param。我从{Clouder Endpoint的https://cloud.google.com/appengine/docs/java/endpoints/required_files

示例中得到了这个
<servlet>
    <servlet-name>SystemServiceServlet</servlet-name>
    <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
    <init-param>
        <param-name>services</param-name>
        <param-value>com.example.helloendpoints.Greetings</param-value>
    </init-param>
</servlet>

Getting the init parameters in a servlet帖子的另一个例子显示: 访问在DD中定义的servlet中的servlet init参数:

getServletConfig().getInitParameter("name");

答案 2 :(得分:0)

https://commons.apache.org/proper/commons-configuration/ apache commons配置是最佳选择。

自动重新加载 属性文件的一个常见问题是在文件更改时处理文件的重新加载。示例代码位于以下位置:

PropertiesConfiguration config = new 
PropertiesConfiguration("usergui.properties");
config.setReloadingStrategy(new FileChangedReloadingStrategy());