在Spring MVC管理HTML资源(CSS,JS文件)(Managing HTML resour

2019-07-29 12:02发布

是否有可能来管理Spring MVC中类似的Grails资源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>或任何其他的选择吗?

Answer 1:

简短的回答:当然 。 但我认为,真正的问题是“怎么样?” :)

Spring MVC的是,由Grails建在,所以它可以做什么的Grails可以做的基础。 Grails的资源仅仅是一个工具,它的Grails使帮助发展中国家作品更容易。 如果你想要做同样的春天,你必须做一些工作。

首先,Spring MVC的有办法暴露出资源( 参考 ,17.15.6章“配置资源的份量”); 例如:

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

上面一行于所有文件揭露[Web folder]/images/作为资源,并且可以通过Web浏览器请求。

其次,嵌入资源到HTMLS容易像Grails的,你必须结合春季与其他一些视图技术 ,如SiteMesh的,freemarker的/速度/ JSP ...(这Grails的为你做幕后)。 相反Grails的标签的,现在你的freemarker的或Velocity的宏 。 但我会建议写一些自己的自定义宏,因为内置一个并不总是好的。

我都用了Grails和Spring MVC的。 我很欣赏Grails的努力,使开发者的生活更轻松,但随着春节的事情是有点不同。 使用Spring,你会得到多写一些代码,做一些更多的选择(在他们选择你作为“默认”的Grails,而且是“看不见”的,如果你不希望自定义)。 由于放,你被迫要与下洼机制,这是一件好事,更awared。

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


更新:

我要明确的是mvc:resources是不完整的回答你的问题。 这是暴露在网络资源出来的浏览器获得的只是一部分。 使用Grails,这已经在默认情况下做出的,但它不是真正的春季。 您必须指定文件夹中的内容“图像”的资源,他们可以通过网址访问http://your-domain-name/context-name/images/image-name 。 至于说,春天是一个很多比Grails的更加明确。

另一件事是模板引擎。 图书馆的sitemesh是一个流行的选择弹簧工作时(这也是Grails的默认值),所以它不是一个很大的不同(主要是它是关于语法)。 模板引擎的主要目的是您的HTMLS与动态数据“填满”了,我要告诉你......有点吧。

请注意,以使该满足您的例子是超过一个答案的范围的教程。 此外,春季使许多相关的解决方案,这意味着不同的开发人员可能具有的组织/配置的不同方式。 但是,给你的感觉,我会做出一个简单的例子(我用的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和SiteMesh的”快速搜索,你会发现它。


Answer 2:

的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']
    }
}


文章来源: Managing HTML resources (CSS, JS files) in Spring MVC