spring - 在 Spring MVC 中管理 HTML 资源(CSS、JS 文件)

标签 spring grails spring-mvc resources

是否可以像grails-resources那样在Spring MVC中管理HTML资源?

类似于:http://www.anyware.co.uk/2005/2011/09/12/optimising-your-application-with-grails-resources-plugin/

例如:在 Grails 中,模块被指定为

modules = {  
     common {  
        resource url:"css/main.css"  
        resource url:"js/jquery.js"  
     }  
}

在 HTML 中,此标签通过模块名称指定来加载所有文件。

<r:require module="common"/>

所以我想知道有没有什么方法可以在 Spring MVC 中使用 <mvc:resources> 做类似的事情或者任何其他选择?

最佳答案

简短回答:当然。但我认为真正的问题是“如何?” :)

Spring MVC 是 Grails 构建的基础,因此它可以做 Grails 能做的事情。 Grails-resources 只是 Grails 为帮助更轻松地开发工作而提供的一个实用程序。如果你想在 Spring 中做同样的事情,你必须做一些工作。

首先,Spring MVC 有一种公开资源的方法( reference ,第 17.15.6 章,“配置资源服务”);例如:

<mvc:resources mapping="/images/**" location="/images/"/>

上面的行将[Web文件夹]/images/中的每个文件公开为资源,并且可以由网络浏览器请求。

其次,要像 Grails 一样简单地将资源嵌入到 HTML 中,必须结合 Spring with some other view technologies ,如 sitemesh、freemarker/velocity/JSP...(Grails 在幕后为您完成这些工作)。现在您拥有的是freemarker 或Velocity 的宏,而不是grails 标记。但我建议您编写一些自己的自定义宏,因为内置宏并不总是好的。

我使用过 Grails 和 Spring MVC。我很欣赏 Grails 为让开发人员的生活变得更轻松而做出的努力,但对于 Spring 来说情况有些不同。使用 Spring,您将需要编写更多代码,做出更多选择(在 Grails 中,它们被选择为“默认”,如果您不想自定义,则它们是“不可见的”)。作为返回,您被迫更加了解底层机制,这是一件好事。

我已经使用 sitemesh 进行布局,并使用 freemarker 作为多个 Web 项目的 HTML 渲染引擎,它们运行得很好。


更新:

我想澄清一下,mvc:resources 并不是您问题的完整答案。这只是公开网络资源以供浏览器获取的一部分。对于 Grails,这已经是默认设置,但对于 Spring 却并非如此。您必须指定文件夹“images”中的内容是资源,并且可以通过 url http://your-domain-name/context-name/images/image-name 访问它们。如上所述,Spring 比 Grails 明确得多。

另一件事是模板引擎。在使用 Spring 时,Library Sitemesh 是一个流行的选择(它也是 Grails 的默认设置),因此它并没有太大的不同(主要是关于语法)。 模板引擎的主要目的是用动态数据“填充”您的 html,我将向您展示......其中的一部分。

请注意,制作一个满足您的示例的教程超出了答案的范围。此外,Spring支持许多相关的解决方案,这意味着不同的开发人员可能有不同的组织/配置方式。但为了给你一个感觉,我将做一个简单的例子(我使用 freemarker 来做这个例子):

在文件:common.ftl 中,我有:

<#macro commonInclude>
<script type="text/javascript" src="${rc.getContextUrl('/js/jquery.js')}"></script>     
<link rel="stylesheet" type="text/css" href="${rc.getContextUrl('css/main.css')}" />
</#macro>

通过更多的配置,然后在 View 文件中我可以调用:

<@common.commonInclude />

它将呈现您想要的代码。

如您所见,主要区别在于它们的语法。 Grails 允许更简洁的样式,而 Spring 为您提供更“明确”的样式,如果您想要自定义内容,这将受益匪浅。

  • 额外奖励:如果您正在寻找 Grails 布局 的替代品,请快速搜索“Spring 和 Sitemesh”,您可能会找到它。

关于spring - 在 Spring MVC 中管理 HTML 资源(CSS、JS 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10694289/

相关文章:

java - Spring MVC : Receive XML data and Send String message back

java - 为什么在处理图像文件时会出现此错误?

spring - 使用用户组进行Grails Spring Security 2.0 Active Directory身份验证

java - DSRA9110E : Connection is closed

java - 通过elasticsearch和spring进行联合搜索

grails - hystrix Fallback不会针对集合中的单个项目进行调用

java - 配置内置 Jackson MapDeserializer

hibernate - Grails应用启动太慢

multithreading - Gpars withExistingPool 错误 jsr166y.ForkJoinPool 未找到

Spring MVC 表单不采用对象路径