我实际上面临以下问题:
我将Spring与jQuery结合使用。我有控制器:
@Controller
@RequestMapping(value = "/A")
public class AController {
// not important
}
这可以很好地处理所有host/A/...
URL。但是jQuery CSS样式使用的是url(images/...)
,所以有从host/A/index.jsp
到host/A/images/...
的引用。但我没有这样的文件夹,因为/A/只是一个"合乎逻辑"的URL。
我试着添加
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/A/images/**" location="/images/" />
到我的web.xml,但它似乎不起作用(第一个运行良好)。例如,当我尝试对此进行测试时,host/A/test.png
不起作用。
当然,我可以修改jQuery源,但我不喜欢这种方式。
如果没有更简单的解决方案,也许我可以使用UrlRewriteFilter。
我建议您在生成的HTML:中使用BASE标记
<html>
<head>
<base href="http://localhost:8080/myApp/" />
....
然后,无论您位于http://localhost:8080/myApp/
还是http://localhost:8080/myApp/A/
http://localhost:8080/myApp/images/...
如果你在像tomcat这样的应用服务器中,你可以在你的web.xml文件中这样做:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
在我的项目中,通常我会放这样的东西;)
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.PNG</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.swf</url-pattern>
<url-pattern>*.avi</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.json</url-pattern>
</servlet-mapping>
有了这个,您需要创建一个"物理"./a/images/"文件夹。
在另一个应用程序服务器中,该值可以更改。