package ddth.dasp.framework.spring; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.HandlerMapping; /** * This {@link HandlerMapping} is similar to {@link SimpleHandlerMapping} but * also handle static resources (e.g. css, javascript, etc). * * @author NBThanh <btnguyen2k@gmail.com> */ public class WebAppHandlerMapping extends SimpleHandlerMapping { private Logger LOGGER = LoggerFactory.getLogger(WebAppHandlerMapping.class); private Map<String, ?> staticResourceHandlerMapping; protected Map<String, ?> getStaticResourceHandlerMapping() { return staticResourceHandlerMapping; } public void setStaticResourceHandlerMapping(Map<String, ?> handlerMapping) { this.staticResourceHandlerMapping = handlerMapping; } /** * {@inheritDoc} */ @Override protected Object getHandlerInternal(HttpServletRequest request) throws Exception { if (staticResourceHandlerMapping == null || staticResourceHandlerMapping.size() == 0) { return super.getHandlerInternal(request); } String uri = request.getRequestURI(); int index = uri.lastIndexOf('.'); if (index < 0) { return super.getHandlerInternal(request); } String ext = uri.substring(index); Object controller = staticResourceHandlerMapping.get(ext); if (controller != null) { if (LOGGER.isDebugEnabled()) { String msg = "Found handler for [" + ext + "]."; LOGGER.debug(msg); } return controller; } return super.getHandlerInternal(request); } }