如何从WebApp读取web.xml

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

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

假设您的Servlet扩展了HttpServlet

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

在web.xml中

  com.acme.Foo  my.init.param 10   

在servlet中:

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

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

  my.context.param Hello World  

在servlet中:

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

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

添加init-param:

  InitParam init param value  

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

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

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

可选的context-param元素声明Web应用程序的servlet上下文初始化参数。 您可以使用和元素在单个context-param元素中设置每个context-param。 您可以使用javax.servlet.ServletContext.getInitParameter()和javax.servlet.ServletContext.getInitParameterNames()方法在代码中访问这些参数。

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

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

容器的选择不应该与这个问题相关,因为每个容器都应该实现servlet容器规范,无论是Tomcat,Glassfish还是其他许多 容器之一。