好的,在阅读了上述答案和其他一些 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 处理程序方法将与前一个标记中的处理程序混淆,并且什么都不会起作用(至少对我来说不起作用)。
我尝试了这两种方法,它们都有效,但我选择了第二种方法,因为我的视图中的锚点已映射到根目录,我不想全部修复它们。使您的链接相对,人们!