2009-02-06 41 views
3

對於WebApps,web.xml可用於存儲應用程序設置。我如何閱讀這個文件。我的servlets在GlassFish v2服務器上運行。如何從WebApp中讀取web.xml

+0

也許你可以發佈你想要做的事情的例子代碼片段? – toolkit 2009-02-06 15:26:21

+0

我想閱讀一些自定義設置。首先我嘗試了一個屬性文件,但我無法確定文件的路徑(它不在`System.getProperty(「user.dir」)`)中。 – doekman 2009-02-06 15:30:23

回答

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"); 
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的配置文件,而不是注入設置成你的web應用程序類。

+0

看起來不錯。但我需要哪個`getServletContext`?見下一個評論。 – doekman 2009-02-06 14:58:12

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的文件。您唯一需要知道的是Glassfish在您的應用程序運行時使用的工作路徑。你可以嘗試像這樣System.getProperty(「user.dir」);

從那裏你可以使用相對路徑加載文件。例如www.exampledepot.com

0

容器的選擇不應與此問題相關,因爲每個容器應實施servlet container規範,無論是Tomcat,Glassfish還是many others之一。

相關問題