El ciclo de vida de la solicitud según la especificación del servlet pasa por una cadena de filtros antes de ser finalmente ejecutado por un servlet.
Esto es bastante intuitivo cuando se mira a la firma para el método doFilter en la interfaz Filter
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
Es decir, en el filtro que tiene acceso a la petición y la respuesta y la cadena. El contrato es que usted, como implementador, debe invocar el chain
antes o después de las operaciones que realiza en el filtro, o no realizar nada si no desea continuar la ejecución. Llamar al chain.doFilter(...)
provocará que el siguiente filtro en la cadena de filtros con una asignación que coincida con la URL solicitada se ejecute. El miembro final de la cadena es el servlet cuya asignación coincide con la URL solicitada.
Técnicamente, puede hacer todo lo que pueda en un servlet en un filtro. Puede construir su aplicación para hacer todo el procesamiento y la representación en un filtro y tener un servlet en blanco que no haga nada. La principal diferencia es que si no hay ningún servlet mapeado contra una URL determinada, el contenedor debe responder con un error 404, por lo que siempre debe existir un servlet mapeado contra cualquier URL que desee atender. También puede tener un servlet mapeado contra una URL, pero puede tener cualquier cantidad de filtros.
¿Has leído sobre servlets y filtros de servlets?Cualquier recurso que cubra los filtros debería despejar las cosas para usted – Bozho
@Bozho lo hice, pero creo que necesitaba http://www.coderanch.com/t/57899/Struts/Difference-between-servlet-struts para entender lo que no sabía No entendi (...) – JVerstry