如何从JSP中的/ main/resources链接Web资源文件?

Car*_*ine 6 resources jsp maven

我的java webapp中有以下结构

-- main
   -- java
   -- resources
      -- lib
         -- css
            -- style.css
   -- webapp
      -- WEB-INF
         -- web.xml
      --index.jsp
Run Code Online (Sandbox Code Playgroud)

如何将style.css链接到我的索引jsp?

<link rel="stylesheet" href="???">
Run Code Online (Sandbox Code Playgroud)

这应该是什么?

提前致谢

Bal*_*usC 6

Maven /main/resources文件夹用于不代表Java类的类路径资源,例如i18n属性文件和各种配置文件(text,xml,json等).这正是您想通过的资源ClassLoader#getResourceAsStream().

该文件夹不用于公共Web资源(即可由公共http://xxxURL 访问的文件).您应该将这些Web资源文件放在Maven /main/webapp文件夹(外部/WEB-INF/META-INF)中,就像您已正确为JSP文件(也是公共Web资源)所做的那样.

所以,只需将该/lib文件夹向下移动(我个人也将该文件夹重命名为例如"资源","资产"或"静态",这更符合事实上的标准;"lib"文件夹名称即表示它是充满了JAR文件).

main
 |-- java
 |-- resources
 `-- webapp
      |-- lib
      |    `-- css
      |         `-- style.css
      |-- WEB-INF
      |    `-- web.xml
      `--index.jsp
Run Code Online (Sandbox Code Playgroud)

在给定此结构的情况下,CSS文件的示例部署上下文路径/webapp和运行的示例服务器http://localhost:8080应该可以在以下绝对URL上访问:

HTTP://本地主机:8080/webapp的/ lib目录/ CSS/style.css中

因此,JSP页面的HTML表示中的任何以下CSS链接都应该:

<link rel="stylesheet" href="http://localhost:8080/webapp/lib/css/style.css" />
Run Code Online (Sandbox Code Playgroud)
<link rel="stylesheet" href="//localhost:8080/webapp/lib/css/style.css" />
Run Code Online (Sandbox Code Playgroud)
<link rel="stylesheet" href="/webapp/lib/css/style.css" />
Run Code Online (Sandbox Code Playgroud)
<link rel="stylesheet" href="${pageContext.request.contextPath}/lib/css/style.css" />
Run Code Online (Sandbox Code Playgroud)

随便挑选.考虑到目标URL其他部分的动态性,最后一个是值得推荐的.

也可以看看:


归档时间:

查看次数:

5180 次

最近记录:

10 年,2 月 前