【问题标题】:Where to store static files like html/css/javascript in a jetty project?在 jetty 项目中将 html/css/javascript 等静态文件存储在哪里?
【发布时间】:2014-04-16 03:58:47
【问题描述】:

我有一个使用 jetty 运行的 maven 项目:

$ mvn run:jetty

我应该在我的项目中的什么位置存储我的静态文件,例如 HTML、CSS、Javascript、图像?

我的布局使用的是简单的 web 应用拱型:

/src/main/java/webapp/web-inf/views/

我是否应该在此处创建一个名为 e.g. 的文件夹? “资产”?

然后我的视图页面会以某种方式引用/assets 文件夹?我很困惑我将在我的 html 页面中使用什么路径来引用如下图像:

/assets/images/logo.png

【问题讨论】:

    标签: java maven jetty


    【解决方案1】:

    这与其说是 Jetty 问题,不如说是一般 Java webapp 问题。如果您打算直接提供它们(如 *.css、*.css、图像等),请将它们放在 WEB-INF 上方但在您的 docroot 下方的某个位置。 Java WebApps都是以下基本目录结构。

    <docroot>
      +WEB-INF/
        +lib/
        +classes/
    

    &lt;docroot&gt; 中的任何内容都可以直接通过 http 访问。 WEB-INF 及以下的任何内容都不是。一个非常简单的 webapp,只有一个页面(index.jsp),一个图像目录中的一个图像,它的配置文件(web.xml)看起来像这样。

    index.jsp
    images/bob.jpg
    WEB-INF/
      web.xml
      lib/
      classes/
    

    在 index.jsp 中你可以引用 bob.jpg...

    <img src="images/bob.jpg"/>
    

    【讨论】:

    • 您写的“任何内容都可以直接访问”,您的意思是在 docroot 中吗?
    • @Blankman 是的。 docroot 中的任何内容都可以直接提供。 WEB-INF 及以下的任何内容都不能。
    【解决方案2】:

    这实际上是一个 Maven 问题,而不是一个 Jetty 问题。

    通常,您会将图像(等)放在 maven webapp 目录中 - source/main/webapp/(不在web-inf 下)

    您如何组织底层内容取决于您,但这主要取决于您希望放入多少内容,以及您认为最好的组织方式。

    source/main/webapp/assets/images 可以,source/main/webapp/imagessource/main/webapp/static/ 也可以。

    然后,在您的 HTML 中,使用您在 webapp 位下方放置的任何路径来引用图像。

    【讨论】:

    • 所以我在 webapp 文件夹中添加了 test.html,运行 mvn clean install, mvn jetty:run,它说没有找到 /test.html 的映射我正在浏览 127.0.0.1:8080/test.html
    • 我从 index.jsp 中引用了一张图片,图片也没有渲染。
    【解决方案3】:

    一般的答案是 - 您的 Web 应用程序的根是 webapp。动态资源(如 JSP 页面或 Freemarker 模板)最好放在 web-inf/ 子文件夹中(它们可以通过类加载器访问,但不能通过直接浏览器请求访问)。

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多