3

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

4

4 回答 4

9

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

假设您的 Servlet 扩展HttpServlet

HttpServletimplements 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>

在小服务程序中:

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>

在小服务程序中:

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

当然,如果您将框架与 servlet 一起使用,例如 Spring,那么您可以使用 Spring 的配置文件代替将设置注入您的 Web 应用程序类。

于 2009-02-06T14:46:59.117 回答
2

添加一个初始化参数:

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

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

String initParam = getServletConfig().getInitParameter("InitParam");
于 2009-02-06T14:46:57.853 回答
0

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

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

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

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

于 2009-02-06T14:56:39.953 回答
0

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

于 2009-02-06T15:09:53.703 回答