对于 WebApps,web.xml 可用于存储应用程序设置。我怎样才能阅读这个文件。我的 servlet 在 GlassFish v2 服务器中运行。
4 回答
不确定我是否完全理解这个问题......
假设您的 Servlet 扩展HttpServlet
?
HttpServlet
implements 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 应用程序类。
添加一个初始化参数:
<init-param>
<param-name>InitParam</param-name>
<param-value>init param value</param-value>
</init-param>
然后从 java 代码中读取它(在一个 servlet 中):
String initParam = getServletConfig().getInitParameter("InitParam");
Doekman,是否可以解释为什么要阅读 web.xml 文件?此文件中的设置以 WebContainer 为目标。如果要传递应用程序加载的配置参数,则只需使用上下文参数:
如果您确实需要读取文件,那么我很确定您可以尝试使用 Java IO 加载文件。您唯一需要知道的是 Glassfish 在您的应用程序运行时使用的工作路径。你可以试试这样 System.getProperty("user.dir");
从那里您可以使用相对路径加载文件。www.exampledepot.com上的示例。
容器的选择不应该与这个问题相关,因为每个容器都应该实现servlet 容器规范,无论是 Tomcat、Glassfish 还是许多其他容器之一。