una servlet recibir parametros inyectar intramuscular getparameter enviar datos como clase bebe java spring servlets

java - servlet - setattribute jsp



Spring: ¿cómo puedo inyectar un HttpServletRequest en un bean con ámbito de solicitud? (2)

Estoy tratando de configurar un frijol con alcance de solicitud en primavera.

Lo configuré con éxito, por lo que el bean se crea una vez por solicitud. Ahora, necesita acceder al objeto HttpServletRequest.

Como el bean se crea una vez por solicitud, creo que el contenedor puede inyectar fácilmente el objeto de solicitud en mi bean. Cómo puedo hacer eso ?


Los beans con alcance de solicitud se pueden autoconectar con el objeto de solicitud.

private @Autowired HttpServletRequest request;


Spring expone el objeto HttpServletRequest actual (así como el objeto HttpSession actual) a través de un objeto contenedor de tipo ServletRequestAttributes . Este objeto contenedor está vinculado a ThreadLocal y se obtiene llamando al método static RequestContextHolder.currentRequestAttributes() .

ServletRequestAttributes proporciona el método getRequest() para obtener la solicitud actual, getSession() para obtener la sesión actual y otros métodos para obtener los atributos almacenados en ambos ámbitos. El siguiente código, aunque un poco feo, debe obtener el objeto de solicitud actual en cualquier lugar de la aplicación:

HttpServletRequest curRequest = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()) .getRequest();

Tenga en cuenta que el método RequestContextHolder.currentRequestAttributes() devuelve una interfaz y debe ServletRequestAttributes en ServletRequestAttributes que implementa la interfaz.

Spring Javadoc: RequestContextHolder | ServletRequestAttributes