在Spring MVC中管理HTML资源(CSS,JS文件)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Spring MVC中管理HTML资源(CSS,JS文件)相关的知识,希望对你有一定的参考价值。
是否可以在Spring MVC中管理类似于grails-resources的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 folder]/images/
中的每个文件作为资源公开,并且可以由Web浏览器请求。
其次,要像Grails一样将资源嵌入到HTML中,你必须结合Spring with some other view technologies,比如sitemesh,freemarker / velocity / JSP ......(Grails为你做幕后的事情)。而不是grails标签,现在你有freemarker或Velocity的宏。但我建议你写一些自己的自定义宏,因为内置的宏并不总是好的。
我使用过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的默认选项),所以它没有太大区别(主要是关于语法)。模板引擎的主要目的是用动态数据“填充”你的htmls,我将向你展示......一点点。
请注意,制作符合您示例的教程超出了答案的范围。此外,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>
使用更多的配置,然后在视图文件中我可以调用:
<@common.commonInclude />
它将呈现您想要的代码。
如您所见,主要区别在于它们的语法。 Grails允许更清晰的风格,而Spring为您提供更“明确”的风格,如果您想要自定义东西,这将有益。
- 额外奖励:如果您正在寻找
Grails layout
的替代品,请快速搜索“Spring and Sitemesh”,您可能会发现它。
的grails-app / CONF /弹簧/ resources.groovy
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
import org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler
// Place your Spring DSL code here
beans = {
resourceHttpRequestHandler(ResourceHttpRequestHandler) {
locations = ['file:/D:/fupload/']
}
resourceHandlerAdapter(HttpRequestHandlerAdapter)
resourceHandlerMapping(SimpleUrlHandlerMapping) {
urlMap = ['/fupload/**':'resourceHttpRequestHandler']
}
}
以上是关于在Spring MVC中管理HTML资源(CSS,JS文件)的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC程序中怎么得到静态资源文件css,js,图片文件的路径问题
[Java Web – 3A] – Spring MVC开发注意事项