在Struts2中设置ContextPath Action Class给出了错误的路径
我正在尝试为我的webapp中的配置文件设置一个上下文路径,但似乎无论我尝试什么解决方案,都没有给出正确的路径。配置文件位于WEB-INF/Config中。在Struts2中设置ContextPath Action Class给出了错误的路径
我试过使用ServletContextAware
来抓取上下文路径,但它似乎给了我错误的路径。
C:\ Documents和Settings \人\我的文档 \ Geronimo的tomcat6中,javaee5-2.2斌\ Geronimo的tomcat6中,javaee5-2.2 \ BIN \ [email protected] \ WEB-INF \配置\ config.xml中
private ServletContext context;
public void setServletContext(ServletContext context) {
this.context = context;
}
AdminFile = builder.parse(context + "/WEB-INF/config/config.xml");
我还试图通过建立一个org.apache.struts2.ServletActionContext上下文路径,通过调用ServletActionContext.getServletContext,但是这给了我一个类似的错误。
C:\ Documents和Settings \人\我的文档 \ Geronimo的tomcat6中,javaee5-2.2斌\ Geronimo的tomcat6中,javaee5-2.2 \ BIN \ [email protected] \ WEB-INF \配置\ config.xml中
ServletContext context = ServletActionContext.getServletContext();
AdminFile = builder.parse(context + "/WEB-INF/config/config.xml");
我终于尝试使用ServletRequestAware,它给了我更好的成绩,但仍然不是完整的上下文路径,我需要。我也想避免将我的动作类耦合到servlet api。
\ JSPPrototype \ WEB-INF \配置\ 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中?
ServletContext
与应用程序的上下文路径不同。 ServletContext
是您的Web应用程序可以用来与servlet容器进行交互的对象。因此,你的做法是将该对象与String
连接起来,它调用它的toString()
方法,该方法只打印实现类名称和哈希码。这显然不符合你的路径。
您需要做的是使用ServletContext
来获得URL
到您的文件。要做到这一点,你实际上使用了ServletContext
。您可以使用ServletContext
的getResource
方法获取网络应用程序中文件的URL
。事情是这样的:
builder.parse(context.getResource('/WEB-INF/config/config.xml'));
这需要你parse
方法接受一个URL
对象。如果您的构建器接受类型为InputStream
的参数,您也可以使用getResourceAsStream()
。
哇,我不能相信我错过了。非常感谢您的帮助,它非常完美! – Bird 2013-04-04 20:13:23