2014-09-19 125 views
0

是否可以使用Spring MVC从压缩文件中提供静态资源?类似this使用Spring从压缩文件中提供静态资源

我有包装成单独的JSON文件的一些数据(例如123.json,1634.json等)和目前经由

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

的文件是.../resources/dataFiles/下为他们提供服务。因此,用户可以去http://mywebsite.com/resources/dataFiles/123.json检索实体123的数据。

但是,我有〜10,000个JSON文件。如果我可以在一个文件(.../resources/dataFiles/entities.zip)下压缩它们,并告诉Spring从压缩文件中提供单个JSON文件,那将是非常好的。

因此,用户仍然会去http://mywebsite.com/resources/dataFiles/123.json,但.../resources/dataFiles/下的唯一文件是entities.zip。

如果此问题超出了MVC框架的范围,我正在使用Tomcat 7.0。

+0

所以,你希望Spring把解压'entities.zip',让您的特定文件中的条目,并发送? – 2014-09-19 15:39:16

+0

我仍然不确定你在问什么。 'entities.zip'中没有'123.json'。有一个'123.json'的_entry_,但该条目仅作为整个'.zip'文件的一部分。你总是可以自己压缩'123.json'。 – 2014-09-19 15:46:08

+0

对不起@SotiriosDelimanolis,我试图澄清我的编辑更多,但你的第一个评论是正确的。我想压缩所有10,000个文件,并将它们放在一个压缩存档下,然后Spring将其视为一个文件夹,以便可以提供单个文件。我在问题中链接的模块完全是这样的(但我没有使用节点)。 – lebolo 2014-09-19 15:54:42

回答

1

我不确定是否有一个Spring的开箱即用组件可以做到这一点,但是您可以创建一个独立的Servlet来处理静态资源的传入请求,那么这个servlet会解析文件名,并从压缩文件中动态读取正确的Zip条目并将内容返回给Response的OutputStream。看一看:

sample code