2012-02-03 47 views
1

我想收集控制器中的所有css/js資源。在Spring Controller中收集CSS/JS資源

這會導致每個資源的一個HTTP請求。

例子:

package my.package; 

// [...imports...] 

@Controller 
@RequestMapping("/res") 
public class ResourcesController 
{ 
    @RequestMapping(value = "/style.css", headers = "content-type=text/css") 
    // [...] collect all css files from /WEB-INF/css/** 

    @RequestMapping(value = "/scripts.js", headers = "content-type=text/javascript") 
    // [...] collect all js files from /WEB-INF/js/** 
} 

我已經有一個使用Apache的瓷磚的DispatcherServlet的,所以我想我需要一個新的servlet?

<servlet> 
    <servlet-name>resources</servlet-name> 
    <servlet-class>?org.springframework.web.servlet.ResourceServlet?</servlet-class> 
    <load-on-startup>0</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>resources</servlet-name> 
    <url-pattern>/res/*.css</url-pattern> 
    <url-pattern>/res/*.js</url-pattern> 
</servlet-mapping> 

org.springframework.web.servlet.ResourceServlet類是否正確?

什麼我必須把我的資源servlet.xml呢?這個?

<?xml version="1.0" encoding="utf-8" ?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd 
          http://www.springframework.org/schema/context 
          http://www.springframework.org/schema/context/spring-context.xsd"> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver" /> 

    <context:component-scan base-package="my.package" /> 

</beans> 

我的映射方法應該如何在控制器中看起來像? 任何示例代碼都會非常有用。在互聯網上找不到任何東西...

+0

不完全確定你爲什麼要這樣做。考慮到你找不到任何資源,這表明很少有人這樣做。 – 2012-02-03 13:30:53

+0

我完全不知道Spring部分,但我至少可以告訴你的URL模式是錯誤的。 '*'只能是最後一個字符的第一個。例如。 '/ res/*'或'* .js'。 – BalusC 2012-02-03 13:45:52

+0

http://developer.yahoo.com/performance/rules.html – dtrunk 2012-02-03 13:46:26

回答

1

我已經有一個DispatcherServlet使用Apache瓷磚,所以我想我需要做一個新的servlet?

否 - 您應該只有DispatcherServlet。 - 每個Spring Controller都由這個servlet處理。


但總的來說,它看起來很奇怪你在做什麼。

例如

<mvc:resources location="/, classpath:/META-INF/web-resources/" 
    mapping="/resources/**" /> 
  • 但也許你嘗試一些更復雜的像Jawr
+0

Jawr是我在找的,謝謝! – dtrunk 2012-02-03 14:40:00