《Java EE 7精粹》—— 2.8 资源打包

本节书摘来异步社区《Java EE 7精粹》一书中的第2章,第2.8节,作者:【美】Arun Gupta,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.8 资源打包

可以使用ServletContext.getResource()方法和ServletContext.getResourceAsStream()方法来访问绑定在.war文件中的资源。资源路径被指定为以“/.”前导的字符串,该路径被解析为相对于上下文根目录或者相对于绑定在WEB-INF/lib目录中JAR文件的META-INF/resources目录:

myApplication.war 
  WEB-INF 
    lib
      library.jar```
library.jar具有以下结构:

library.jar
MyClass1.class
MyClass2.class
stylesheets

common.css 

images

header.png 
footer.png```

通常情况下,如果必须在Servlet中访问样式表和图像的目录,需要手动把他们解压到Web应用程序的根目录。Servlet 3.0中允许库在META-INF/resources目录打包的资源:

library.jar 
  MyClass1.class 
  MyClass2.class 
  META-INF
    resources
      stylesheets
        common.css 
      images
        header.png 
        footer.png```
在本例中,资源不需要被提取到应用程序的根目录,可以直接被访问。这将允许直接访问绑定在META-INF/resources目录下的第三方JAR文件中的资源,而无需直接手动解压缩。