如何从WebApp读取web.xml

时间:2009-02-06 14:29:59

标签: java web-services java-ee glassfish

对于WebApps,web.xml可用于存储应用程序设置。我该怎么读这个文件。我的servlet在GlassFish v2服务器上运行。

4 个答案:

答案 0 :(得分:9)

不确定我完全理解这个问题......

假设您的Servlet扩展HttpServlet

HttpServlet实现ServletConfig,因此您可以使用以下命令查找特定于servlet的参数:

在web.xml中

<servlet>
    <servlet-class>com.acme.Foo</servlet-class>
    <init-param>
        <param-name>my.init.param</param-name>
        <param-value>10</param-value>
    </init-param>
</servlet>

在servlet中:

int x = Integer.parseInt(getInitParameter("my.init.param"));

同样,您可以使用以下方式获取全局(上下文范围)设置:

<context-param>
    <param-name>my.context.param</param-name>
    <param-value>Hello World</param-value>
</context-param>

在servlet中:

String s = getServletContext.getInitParameter("my.context.param");

当然,如果你正在使用一个框架和你的servlet,比如Spring,那么你可以使用Spring的配置文件来将设置注入你的web-app类。

答案 1 :(得分:2)

添加init-param:

<init-param> 
    <param-name>InitParam</param-name> 
    <param-value>init param value</param-value> 
</init-param> 

然后从java代码(在servlet中)读取它:

String initParam = getServletConfig().getInitParameter("InitParam");

答案 2 :(得分:0)

Doekman,是否可以解释为什么要阅读web.xml文件?此文件中的设置以WebContainer为目标。如果要传递要由应用程序加载的配置参数,请使用上下文参数:

The optional context-param element declares a Web Application's servlet context initialization parameters. You set each context-param within a single context-param element, using and elements. You can access these parameters in your code using the javax.servlet.ServletContext.getInitParameter() and javax.servlet.ServletContext.getInitParameterNames() methods.

如果您确实需要读取该文件,那么我很确定您可以尝试使用Java IO加载该文件。您需要知道的唯一事情是Gla​​ssfish在您的应用程序运行时使用的工作路径。您可以尝试类似这样的System.getProperty(“user.dir”);

从那里你可以使用相对路径加载文件。 www.exampledepot.com上的示例。

答案 3 :(得分:0)

容器的选择不应与此问题相关,因为每个容器都应实现servlet container规范,无论是Tomcat,Glassfish还是many others之一。