我有一个jar文件test.jar,放在WEB-INF / lib中,并在其根目录中包含一个文件:
/
|- test.jsp
现在我想从我的代码中的某个地方访问这个文件:
this.getServletContext().getResource("/test.jsp");
但是结果总是为null,尽管getResource的文档声明也搜索了WEB-INF / lib中的jar文件:
我错过了什么或为什么我不能获得资源?
答案 0 :(得分:0)
您已经提供了指向javadoc的链接,引用了相关部分:
路径必须以
/
开头,并且被解释为相对于当前上下文根,或相对于JAR文件的/META-INF/resources
目录在Web应用程序中/WEB-INF/lib
目录。
因此它被解释为相对于jar文件中的/META-INF/resources
文件夹。
但是,您使用标记表明您正在使用Tomcat。 ServletContext.getResource()
的Tomcat实现有些不同。它甚至没有提到在jar文件中搜索资源。
建议:如果要使用ServletContext.getResource()
访问资源,请不要将资源放在jar文件中。如果您确实需要将它们放入jar文件中,那么请使用Class.getResource()
方法,例如将一个可选的空类放入jar文件中,并使用它来访问/加载资源,例如:
Jar内容:
/
|- SomeClass.class
|- test.jsp
访问test.jsp
的Java代码:
SomeClass.class.getResource("/test.jsp"); // or it can even be "test.jsp"
答案 1 :(得分:0)
您可以使用线程的类加载器将文件设为<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="addelem">
<table class="tbl1">
<tr>
<td>
<input id="empid" type="text" placeholder="EmpId">
</td>
<td>
<input id="name" type="text" placeholder="Name">
</td>
<td>
<input id="pd" type="number" placeholder="Pds Delivered">
</td>
<td>
<input id="unp" type="number" placeholder="Unplanned leaves">
</td>
<td>
<input id="rsp" type="number" placeholder="Response Time">
</td>
</tr>
</table>
<button id="submit">Submit</button>
<button id="cancel">Cancel</button>
</div>
,如下所示:
display
方法InputStream
适用于类路径中的任何文件,无论它位于目录中还是位于JAR内。