0

我目前正在尝试为我的 webapp 中的配置文件设置上下文路径,但似乎无论我尝试什么解决方案,它们都没有给出正确的路径。配置文件位于 WEB-INF/Config 中。

我已经尝试使用ServletContextAware以获取上下文路径,但它似乎给了我错误的路径。

C:\Documents and Settings\Person\My Documents\geronimo-tomcat6-javaee5-2.2-bin\geronimo-tomcat6-javaee5-2.2\bin\org.apache.catalina.core.ApplicationContextFacade@5d869c\WEB-INF\config\配置文件

private ServletContext context;
public void setServletContext(ServletContext context) {
    this.context = context;
}
AdminFile = builder.parse(context + "/WEB-INF/config/config.xml");

我还尝试通过调用 ServletActionContext.getServletContext,通过 org.apache.struts2.ServletActionContext 创建上下文路径,但这给了我类似的错误。

C:\Documents and Settings\Person\My Documents\geronimo-tomcat6-javaee5-2.2-bin\geronimo-tomcat6-javaee5-2.2\bin\org.apache.catalina.core.ApplicationContextFacade@156592a\WEB-INF\config\配置文件

ServletContext context = ServletActionContext.getServletContext();
AdminFile = builder.parse(context + "/WEB-INF/config/config.xml");

我终于尝试使用 ServletRequestAware,它给了我更好的结果,但仍然不是我需要的完整上下文路径。我还想避免将我的操作类耦合到 servlet api。

\JSPPrototype\WEB-INF\config\config.xml

public HttpServletRequest request;
public void setServletRequest(HttpServletRequest request) 
{
this.request = request;  
}

String context = request.getContextPath();
AdminFile = builder.parse(context + "/WEB-INF/config/config.xml");

我到底做错了什么,我应该如何构建一个有效的 ContextPath?

4

1 回答 1

3

与您的ServletContext应用程序的上下文路径不同。ServletContext是您的 Web 应用程序可用于与 servlet 容器交互的对象。因此,您使用您的方法所做的是将该对象与 a 连接,该对象String调用它的toString()方法,该方法仅打印实现类名及其哈希码。这显然与您的路径不匹配。

相反,您需要做的是使用ServletContext来获取URL您的文件。为此,您实际上使用了ServletContext. 您可以URL使用getResource. ServletContext像这样的东西:

builder.parse(context.getResource('/WEB-INF/config/config.xml'));

这需要你的parse方法接受一个URL对象。getResourceAsStream()如果您的构建器接受类型参数,您也可以使用, InputStream

于 2013-04-04T19:49:46.403 回答