我在 Eclipse 中有一个动态 Web 项目。我的 WEB-INF 中有一个文件a.xml
存在于类路径中。我Test
在我的项目中命名了类。
我在 JSP scriptlet 中有以下代码 -
<%@page import="com.kshitiz.Test"%>
<%
System.out.println(ClassLoader.getSystemClassLoader().getSystemResource("a.xml"));
System.out.println(this.getClass().getClassLoader().getSystemResource("a.xml"));
System.out.println(Test.class.getClassLoader().getResource("a.xml"));
%>
输出是 -
null
null
C:/Users/kshitiz/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/test-project/WEB-INF/classes/a.xml
显然系统类加载器和 JSP 类加载器无法找到我的文件。
你能解释一下输出吗?tomcat 是否使用不同的类加载器来加载 JSP?为什么这样?为什么系统类加载器无法找到我的文件?
我已经知道我可以使用以下功能来访问我的文件-
getServletContext().getResourceAsStream("/WEB-INF/a.xml");
我有兴趣了解上述情况,而不是加载该文件的各种方法。