Lo que intento hacer es mapear las solicitudes a la raíz del servlet (¿terminología correcta?). Estoy en el punto donde las direcciones URL se asignan a la vista correcta, pero no se puede encontrar todo el contenido estático (css, javascript, imágenes) que forma parte de la página.Usando Spring, mapeando a la raíz en web.xml, no se encuentran los recursos estáticos
Así que en mi web.xml mi etiqueta de servlet se parece a esto
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Mi controlador es como la siguiente:
@RequestMapping("/shop")
public class TheShopController extends MyBaseController {
public static String VIEW = "Tile.Shop";
@Override
@RequestMapping(method = RequestMethod.GET)
protected ModelAndView processRequest(HttpServletRequest req, HttpServletResponse resp) {
ModelAndView mav = new ModelAndView(VIEW);
return mav;
}
}
MyBaseController es muy simple. Se ve así:
public abstract class MyBaseController extends AbstractController {
protected Logger log = Logger.getLogger(getClass());
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp)
throws Exception {
ModelAndView mav = processRequest(req, resp);
return mav;
}
protected abstract ModelAndView processRequest(HttpServletRequest req, HttpServletResponse resp);
}
Estoy usando la capa Tiles in my view. Mi configuración es la siguiente:
/WEB-INF/tiles-defs.xml
Como ya he mencionado, se encuentran los puntos de vista, pero los recursos estáticos que son un puerto de la página no se puede encontrar. Aquí hay alguna típica registro hacia fuera puesto:
2010-01-24 17: 25: 01,777 DEBUG [http-8080-7] servlet.DispatcherServlet (DispatcherServlet.java:690) - DispatcherServlet con el nombre 'springapp' solicitud GET de procesamiento para [/springapp/static/css/account.css] 2010-01-24 17: 25: 01,778 WARN [http-8080-4] servlet.DispatcherServlet (DispatcherServlet.java:962) - Sin asignación encontrado para la solicitud HTTP con URI [/ springsepp/sitetic/css/shop.css] en DispatcherServlet con el nombre 'springapp' 2010-01-24 17: 25: 01,778 DEPURACIÓN [http-8080-6] servlet.FrameworkServlet (FrameworkServlet.java:677) - Exitosamente solicitud completada 2010-01-24 17: 25: 01,778 WARN [http-8080-5] servlet.DispatcherServlet (DispatcherServlet.java:962) - No se encontró la asignación para la solicitud HTTP con URI [/ springapp/static/css/offers.css] en DispatcherServlet con el nombre 'springapp' 2010-01-24 17: 25: 01,778 WARN [http-8080-3] servlet.DispatcherServlet (DispatcherServlet.java:962) - No se ha encontrado ninguna correspondencia para la solicitud HTTP con URI [/springapp/static/css/scrollable-buttons.css] en DispatcherServlet con el nombre 'springapp'
ir a http://localhost:8080/springapp/shop funciona bien, pero el CSS y las imágenes son missi ng.
Creo que el uso de Tiles complica las cosas pero soy reacio a deshacerme de él. Me pregunto si necesito ajustar la configuración de resolución de mi vista para modificarla. ¿Podría encadenar los resolvedores de vistas? simplemente no tengo experiencia en hacerlo.
Lo que realmente quiero hacer es utilizar el @ Asignación de la aplicación de solicitud con la anotación @PathVariable para lograr el uso de las URL RESTful. Eventualmente, todos los recursos estáticos serán servidos por apache pero estarán en un entorno de producción. Necesito recursos estáticos servidos por tomcat cuando se ejecutan localmente, como en desarrollo. He usado el filtro urlrewrite antes, y me ha gustado, pero me gustaría encontrar otra forma. – richever
Fui con una combinación de filtro org.tuckey.urlrewrite y # 4 desde arriba. ¡Gracias! – richever
Eres rockero FYI Probé # 2 y funcionó en mi entorno local, que se ejecutaba en el sitio web raíz en tomcat. Tan pronto como lo implementé en un servidor de prueba, en un sitio no raíz llamado "prueba", dejó de funcionar. Por algún motivo, el/test/before/static/arrojaba la asignación de servlets predeterminada. Acabo de cambiar al n. ° 3 y funciona como un hechizo. He estado luchando con esto por mucho tiempo. ¡Gracias! +1 – kmehta