Servlets 在Struts2操作类中设置ContextPath会给出错误的路径
我目前正在尝试为我的webapp中的配置文件设置上下文路径,但似乎无论我尝试什么解决方案,它们都没有给出正确的路径。配置文件位于WEB-INF/config中 我尝试使用Servlets 在Struts2操作类中设置ContextPath会给出错误的路径,servlets,struts2,contextpath,Servlets,Struts2,Contextpath,我目前正在尝试为我的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.ca
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\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\config.xml
我最终尝试使用ServletRequestAware,它给了我更好的结果,但仍然不是我需要的完整上下文路径。我还希望避免将动作类与servlet api耦合
\JSPPrototype\WEB-INF\config\config.xml
我到底做错了什么?我应该如何构建一个有效的上下文路径?ServletContext与应用程序的上下文路径不同。
ServletContext
是web应用程序可以用来与servlet容器接口的对象。因此,您所使用的方法是将该对象与一个字符串
连接起来,该字符串调用它的toString()
方法,该方法只打印实现类名及其哈希代码。这显然与你的道路不符
相反,您需要做的是使用ServletContext
获取文件的URL
。为此,您实际上使用了ServletContext
。您可以使用ServletContext
的方法在web应用程序中获取文件的URL
。大概是这样的:
builder.parse(context.getResource('/WEB-INF/config/config.xml'));
这需要您的
parse
方法接受URL
对象。如果生成器接受类型为InputStream
的参数,则也可以使用getResourceAsStream()
。ServletContext与应用程序的上下文路径不同。ServletContext
是web应用程序可以用来与servlet容器接口的对象。因此,您所使用的方法是将该对象与一个字符串
连接起来,该字符串调用它的toString()
方法,该方法只打印实现类名及其哈希代码。这显然与你的道路不符
相反,您需要做的是使用ServletContext
获取文件的URL
。为此,您实际上使用了ServletContext
。您可以使用ServletContext
的方法在web应用程序中获取文件的URL
。大概是这样的:
builder.parse(context.getResource('/WEB-INF/config/config.xml'));
这需要您的
parse
方法接受URL
对象。如果构建器接受类型为InputStream
的参数,您也可以使用getResourceAsStream()
。哇,我真不敢相信我错过了这个。非常感谢您的帮助,它工作得非常好!哇,真不敢相信我错过了。非常感谢您的帮助,它工作得非常好!
public HttpServletRequest request;
public void setServletRequest(HttpServletRequest request)
{
this.request = request;
}
String context = request.getContextPath();
AdminFile = builder.parse(context + "/WEB-INF/config/config.xml");
builder.parse(context.getResource('/WEB-INF/config/config.xml'));