dtrunk
dtrunk

Reputation: 4805

Collect CSS/JS Resources in Spring Controller

I would like to collect all css/js resources in a controller.

This would result in one HTTP Request for each resource.

Example:

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/**
}

I already have an DispatcherServlet which uses Apache Tiles, so I guess i need to make a new 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>

Is class org.springframework.web.servlet.ResourceServlet correct?

What I have to put in my resources-servlet.xml then? This?

<?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>

And how my mapping methods should look like in the controller? Any example code would be very useful. Can't find anything on the internet...

Upvotes: 1

Views: 1344

Answers (1)

Ralph
Ralph

Reputation: 120811

I already have an DispatcherServlet which uses Apache Tiles, so I guess I need to make a new servlet?!

No -- you should have only the DispatcherServlet. -- Every Spring Controller is handled by this servlet.


But in general it looks strange what you do.

for example

   <mvc:resources location="/, classpath:/META-INF/web-resources/"
    mapping="/resources/**" />
  • But maybe you try something more complex like Jawr?

Upvotes: 1

Related Questions