资源映射Spring框架3

时间:2012-03-21 13:09:18

标签: java spring

我实际上面临以下问题:

我正在使用Spring和jQuery。我有控制器:

@Controller
@RequestMapping(value = "/A")
public class AController {
    // not important
}

这样可以正常处理所有host/A/...个网址。但是jQuery CSS样式使用url(images/...),因此有host/A/index.jsphost/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

2 个答案:

答案 0 :(得分:1)

我建议您在生成的HTML中使用BASE标记:

<html>
   <head>
       <base href="http://localhost:8080/myApp/" />
       ....

然后,无论您是http://localhost:8080/myApp/images/...还是http://localhost:8080/myApp/

,您的所有图像请求都将完成http://localhost:8080/myApp/A/

答案 1 :(得分:0)

如果您在像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>

有了这个,你需要创建一个'physical'“./A/images/”文件夹。

在另一个应用程序服务器中,值可能会更改。