我正在tomcat 7中尝试一个简单的Web应用程序。它在index.html中有一个javascript调用,它会加载一个属性文件。使用以下代码拨打电话,
var req = new XMLHttpRequest();
req.open("GET", "xyz.properties");
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == 200) {
}
}
}
req.send();
尝试了以下用例,
据我所知,每个资源/类请求都通过WebAppClassloader,它按以下顺序查看事物,
在我的实际应用程序中,我使用的是嵌入式tomcat,目标是通过jar将属性文件外化(在战争的一侧)。因此上面的测试可以理解tomcat的基本资源加载。
有人可以对上述测试中遗漏的内容进行一些说明。通常,如果get请求通过类加载器,则不应该在所有情况下都能找到该文件。
答案 0 :(得分:0)
据我所知,每个资源/类请求都通过WebAppClassloader,它按以下顺序查看事物......
是和否。
是的,当webapp代码(或其他)尝试使用Class.getResource
或类似代码通过类加载器查找资源时,会发生这种情况。
但是,当您向Web应用程序发送GET请求时,情况并非如此。 GET请求根本不涉及类加载器。相反,它必须由servlet 处理;例如你自己写的一个,一个是从JSP生成的,或者是“默认的”servlet ......可以用来提供内容文件。
假设您要提供通过类加载器定位的属性文件,您的servlet的doRequest
或doGet
方法需要:
如果这样做,该方法需要确保它只提供您想要的特定资源。允许客户端获取类加载器可以找到的任何资源,这将是非常糟糕的主意。