DispatcherServlet procesa las solicitudes de la siguiente manera:

  • El WebApplicationContext se busca y vincula en la solicitud como un atributo que puede ser utilizado por el controlador y otros elementos del proceso. De forma predeterminada, está asociado con la clave DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE.

  • El solucionador de configuración regional está vinculado a la solicitud para permitir que los elementos del proceso determinen la configuración regional que se utilizará al procesar la solicitud (visualización de representación, preparación de datos, etc.). Si no necesita reconocer su configuración regional, entonces no necesita un reconocedor de configuración regional.

  • Un solucionador de temas está vinculado a la solicitud para que elementos como las vistas puedan determinar qué tema usar. Si no se utilizan temas, puedes ignorarlo.

  • Si se especifica un reconocedor de archivos de varias partes, se comprobará la solicitud para detectar la presencia de elementos de varias partes. Si se encuentran elementos de varias partes, la solicitud se incluye en un MultipartHttpServletRequest para su posterior procesamiento por parte de otros elementos del proceso.

  • Se produce una búsqueda de un controlador adecuado. Si se encuentra un controlador, se inicia la cadena de ejecución asociada con el controlador (preprocesadores, postprocesadores y controladores) para preparar el modelo para la renderización. Además, para los controladores anotados, la respuesta se puede representar (dentro de un HandlerAdapter) en lugar de devolver una vista.

  • Si se devuelve un modelo, se representa la vista. Si no se devuelve el modelo (tal vez porque el preprocesador o posprocesador interceptó la solicitud, probablemente por razones de seguridad), la vista no se crea porque es posible que la solicitud ya se haya ejecutado.

Los beans HandlerExceptionResolver declarados en WebApplicationContext se utilizan para reconocer excepciones que se generan al procesar una solicitud. Estos controladores de excepciones le permiten personalizar la lógica de manejo de excepciones.

Para proporcionar almacenamiento en caché HTTP, los controladores pueden utilizar los métodos CheckNotModified de WebRequest, así como opciones adicionales para controladores anotados.

Puede personalizar instancias individuales de DispatcherServlet agregando parámetros de inicialización del servlet (elementos init-param) a la declaración del servlet en web.xml. archivo. La siguiente tabla enumera los parámetros admitidos:

Tabla 1. Parámetros de inicialización de DispatcherServlet
Parámetro Explicación

contextClass

Una clase que implementa ConfigurableWebApplicationContext, que será instanciada y configurada localmente por este servlet. El valor predeterminado es XmlWebApplicationContext.

contextConfigLocation

Una cadena que se pasa a la instancia de contexto (especificada por contextClass) para indicar dónde buscar contextos. Una cadena potencialmente consta de varias líneas (usando un delimitador de coma) para admitir múltiples contextos. En el caso de varias ubicaciones contextuales con beans definidos dos veces, la última ubicación tiene prioridad.

namespace

Espacio de nombres WebApplicationContext. [nombre-servlet]-servlet predeterminado.

throwExceptionIfNoHandlerFound

Controla si se debe lanzar una NoHandlerFoundException si no se encontró ningún controlador para la solicitud. Luego, la excepción puede detectarse usando HandlerExceptionResolver (por ejemplo, usando un método de controlador con la anotación @ExceptionHandler) y procesarse como cualquier otro.

De forma predeterminada, este parámetro está establecido en false, en cuyo caso DispatcherServlet establece el estado del mensaje en 404 (NOT_FOUND) sin generar una excepción.

Tenga en cuenta que si el procesamiento de servlet predeterminado también está configurado, las solicitudes no resueltas siempre se reenvían al servlet predeterminado y no se genera ningún mensaje 404.