4

我有一个具有以下目录结构的 java Spring MVC Web 应用程序:

src/
    main/
        java/
        resources/
        webapp/

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

4

3 回答 3

2

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

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

http:\\localhost:8080\ContextRoot\users

将在

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

然后你可以去

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

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

DispatcherServletSpring 的人可能认为这是一个问题,并使用仍然映射的 at制定了自己的解决方案/。在您的servlet.xml文件中,您必须添加

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

您的文件夹位于文件夹staticwebapp。这个标签告诉 Spring MVC 有一个特殊的处理程序来处理/static/. 你还需要

<mvc:annotation-driven>

否则,您的 Controllers 处理程序方法将与前一个标记中的处理程序混淆,并且没有任何效果(至少它不适合我)。

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

于 2012-12-05T21:08:44.053 回答
1

常见的方法是将它们放在新创建的静态目录下

webapp/static/js

并参考它/webcontext/static/js/somefile.js

于 2012-12-05T17:55:40.937 回答
0

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

webapp/static/js

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

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

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

于 2012-12-05T19:14:11.357 回答