【问题标题】:Where do javascript files go in a Maven webapp archetype?javascript 文件在 Maven webapp 原型中的位置?
【发布时间】:2012-11-23 15:19:30
【问题描述】:

我有一个 java Spring MVC web 应用程序,其目录结构如下:

src/
    main/
        java/
        resources/
        webapp/

在我的 webapp 文件夹中,我有许多带有 javascript 脚本的 html 文件。我不想将 javascript 嵌入到 html 中,我希望它外部化。我应该将 javascript 文件放在上述文件结构中的什么位置,我必须将什么配置添加到我的 pom.xml 和/或 servlet-context.xml (spring) 文件中?

【问题讨论】:

    标签: java javascript maven spring-mvc


    【解决方案1】:

    好的,在阅读了上述答案和其他一些 SO 帖子后,我得出了两个解决方案:

    我正在使用 Spring MVC,我的 DispatcherServlet 映射到根 /。这意味着对任何东西的任何请求都将通过它,但我没有控制器来提供资源文件。您可以做的是将DispatcherServlet 映射到/app/* 之类的东西。然后所有常规网址都像

    http:\\localhost:8080\ContextRoot\users

    将可在

    访问

    http:\\localhost:8080\ContextRoot\app\users

    然后你可以去

    http:\\localhost:8080\ContextRoot\static\js\file.js

    您将获得 Apache 服务器(或您正在使用的任何东西)提供的资源文件。

    Spring 的人可能认为这是一个问题,并提出了自己的解决方案,DispatcherServlet 仍然映射在 /。在您的servlet.xml 文件中,您必须添加

    <mvc:resources location = "/static/" mapping = "/static/**" />

    您的文件夹 static 位于文件夹 webapp 下。这个标签告诉 Spring MVC 有一个特殊的处理程序来处理任何到 /static/ 的东西。你还需要

    <mvc:annotation-driven>

    否则,您的 Controllers 处理程序方法将与前一个标记中的处理程序混淆,并且什么都不会起作用(至少对我来说不起作用)。

    我尝试了这两种方法,它们都有效,但我选择了第二种方法,因为我的视图中的锚点已映射到根目录,我不想全部修复它们。使您的链接相对,人们!

    【讨论】:

      【解决方案2】:

      常见的做法是放在新建的静态目录下

      webapp/static/js
      

      并通过/webcontext/static/js/somefile.js引用它

      【讨论】:

      • 应该是<script src="/yourappwebcontext/static/js/someFile.js"/>
      • 应该可以,你用js文件重新发布了吗?你能看到它在你的服务器所在的 web 目录中爆炸吗?
      • 这取决于你如何部署它,静态目录应该直接在webapp下
      • 那么可能是服务器从不同的地方提供服务
      【解决方案3】:

      我认为在您创建了一个普通的 Maven 项目后,您只需创建一个新文件夹(通过 STS\Eclipse),例如:

      webapp/static/js
      

      因为 Maven 不处理 javascript(您使用 Maven 添加新的 Java 依赖项并对其进行编译...Javascript 是运行时脚本,在您的视图代码中并且没有编译代码)

      您可以创建这样的文件夹,因为静态的东西更像其他东西,例如应用程序中使用的 jpg 图像,.properties 文件...是您拥有并且在您的视图中使用但您没有处理的东西来自 Maven。

      啊...可能要正常工作,您必须在项目的类路径中添加这个新文件夹。 在 STS\Eclipse 中:右键单击项目名称 ---> 属性 ---> Java 构建路径 ---> 选项卡源 ---> 单击文件夹 ---> 并添加您拥有的新文件夹已创建

      【讨论】:

      • 添加了有关类路径的详细信息
      • mmm 我认为在类路径中,您必须将包含所有 javascript 文件的目录...
      猜你喜欢
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 2023-04-02
      • 2017-11-30
      • 1970-01-01
      • 2011-07-23
      • 2017-02-20
      • 2016-06-25
      相关资源
      最近更新 更多