【问题标题】:How to link a web resource file from /main/resources in JSP?如何在 JSP 中从 /main/resources 链接 Web 资源文件?
【发布时间】:2015-09-12 03:03:47
【问题描述】:

我的 java webapp 中有以下结构

-- main
   -- java
   -- resources
      -- lib
         -- css
            -- style.css
   -- webapp
      -- WEB-INF
         -- web.xml
      --index.jsp

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

<link rel="stylesheet" href="???">

这里应该有什么?

提前致谢

【问题讨论】:

    标签: maven jsp resources


    【解决方案1】:

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

    该文件夹不适用于公共网络资源(即可通过公共http://xxx URL 访问的文件)。您应该将这些 Web 资源文件放在 Maven /main/webapp 文件夹(在 /WEB-INF/META-INF 之外),就像您对 JSP 文件(也是公共 Web 资源)所做的那样。

    所以,只需将 /lib 文件夹向下移动(我个人也会将该文件夹重命名为“resources”、“assets”或“static”,这更符合事实上的标准;一个“lib”文件夹名称即表明它充满了 JAR 文件)。

    main
     |-- java
     |-- resources
     `-- webapp
          |-- lib
          |    `-- css
          |         `-- style.css
          |-- WEB-INF
          |    `-- web.xml
          `--index.jsp
    

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

    http://localhost:8080/webapp/lib/css/style.css

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

    <link rel="stylesheet" href="http://localhost:8080/webapp/lib/css/style.css" />
    
    <link rel="stylesheet" href="//localhost:8080/webapp/lib/css/style.css" />
    
    <link rel="stylesheet" href="/webapp/lib/css/style.css" />
    
    <link rel="stylesheet" href="${pageContext.request.contextPath}/lib/css/style.css" />
    

    任你选。考虑到目标 URL 其他部分的动态性,建议使用最后一个。

    另见:

    【讨论】:

      【解决方案2】:

      您需要将要交付给客户端的资产放在您的webapp 目录下。否则,您将需要编写一个 servlet 来交付它们。

      您可以在Java Servlet 3.1 Specification 的第 10 章中找到所有细节。

      【讨论】:

      • 你能详细说一下吗?
      猜你喜欢
      • 1970-01-01
      • 2017-10-03
      • 2017-02-05
      • 2020-09-13
      • 2019-07-07
      • 1970-01-01
      • 2015-11-14
      • 2018-09-16
      • 1970-01-01
      相关资源
      最近更新 更多