1

我需要使用 Spring MVC 访问静态资源,例如图像、JavaScript 和 CSS。经过一些研究,我发现我可以通过在以下条目中访问这些条目web.xml

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
</servlet-mapping>

但是通过这个我无法访问WEB-INF/文件夹下的资源。我希望我的所有资源都在WEB-INF/文件夹下,只是为了控制访问。我怎样才能做到这一点?

4

2 回答 2

2

你可以把它放在 application-servlet.xml 中:

     <!-- static resource mapping for style sheets, etc. -->
    <mvc:resources mapping="/styles/**"  location="/WEB-INF/skins/" />
    <mvc:resources mapping="/scripts/**" location="/WEB-INF/scripts/" />

在页面上,您可以拥有:

 <script type="text/javascript" src="${context}/scripts/jquery-1.7.js"></script>
 <link rel="stylesheet" type="text/css" href="${context}/styles/css/superfish.css">
于 2012-09-07T10:02:54.497 回答
1

你需要告诉spring静态资源在哪里

<mvc:resources mapping="/resources/**" location="/, classpath:/META-INF/web-resources/" />

这将使 WEB-INF/ 下的所有文件以及 META-INF/web-resources 中的 jar 中的所有文件都可以在以下位置访问

http://example.org/app/resources/

另请参阅 Spring:DispatcherServlet 和静态内容

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-static-resources

于 2012-09-07T10:00:13.073 回答