我有一个具有以下目录结构的java Spring MVC Web应用程序:
src/
main/
java/
resources/
webapp/
在我的webapp文件夹中,我有许多带有javascript脚本的html文件。我不希望在html中嵌入javascript,我希望它外化。在哪里我应该将javascript文件放在上面的文件结构中,我需要将哪些配置添加到我的pom.xml和/或servlet-context.xml(spring)文件中?
答案 0 :(得分: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服务器(或您正在使用的任何服务器)为您提供资源文件。
Spring的工作人员可能认为这是一个问题,并且DispatcherServlet
的{{1}}仍然映射到/
。在您的servlet.xml
文件中,您必须添加
<mvc:resources location = "/static/" mapping = "/static/**" />
文件夹static
位于文件夹webapp
下。这个标签告诉Spring MVC有一个特殊的处理程序用于/static/
的任何事情。你还需要
<mvc:annotation-driven>
否则你的Controllers处理程序方法将与前一个标记中的处理程序混淆,什么都不会起作用(至少它不适合我)。
我尝试了这两个并且它们都工作但我去了第二个,因为我的视图中的锚点被映射到root,我不想将它们全部修复。让你的链接相对,人!
答案 1 :(得分:1)
常见的方法是将它们放在新创建的静态目录下
webapp/static/js
并使用/webcontext/static/js/somefile.js
答案 2 :(得分:0)
我认为在您创建了一个普通的Maven项目后,您只需创建一个新文件夹(由STS \ Eclipse),如:
webapp/static/js
因为maven没有处理javascript(你使用Maven添加新的Java依赖项并编译它... Javascript是运行时脚本,在你的视图代码中并且没有编译代码)
你可以创建一个像这样的文件夹,因为静态的东西更像是其他东西,比如应用程序中使用的jpg immage,.properties文件......是你拥有的东西,你在视图中使用但是你没有处理过由Maven。
啊......可能工作得很好你必须在项目的类路径中添加这个新文件夹。 在STS \ Eclipse中:右键单击项目名称---&gt;属性---&gt; Java构建路径---&gt; tab来源---&gt;点击文件夹---&gt;并添加您已创建的新文件夹