spring-mvc - que - spring mvc tutorial español pdf
Spring 3 MVC accede a HttpRequest desde el controlador (2)
Sé que es una vieja pregunta, pero ...
También puedes usar esto en tu clase:
@Autowired
private HttpServletRequest context;
Y esto proporcionará la instancia actual de HttpServletRequest
para su uso en su método.
Me gustaría manejar los atributos de solicitud y sesión yo mismo en lugar de dejarlo en primavera @SessionAttributes
, para el inicio de sesión de manejo de cookies, por ejemplo.
Simplemente no puedo entender cómo podría acceder a la HttpRequest
desde un controlador, necesito una forma de ir a una capa por encima de @RequestAttribute
y acceder a la propia HttpRequest
. Con Stripes in se utiliza para esto al implementar ApplicationContext
y llamar a getAttribute()
.
Además, pasar HttpServletRequest
como parámetro parece no funcionar:
@RequestMapping(value="/") public String home(HttpServletRequest request){
System.out.println(""+request.getSession().getCreationTime());
return "home";
}
El método anterior no imprime nada.
¿Tienes algún consejo sobre esto?
Spring MVC le proporcionará HttpRequest si lo agrega a la firma de su método de control:
Por ejemplo:
/**
* Generate a PDF report...
*/
@RequestMapping(value = "/report/{objectId}", method = RequestMethod.GET)
public @ResponseBody void generateReport(
@PathVariable("objectId") Long objectId,
HttpServletRequest request,
HttpServletResponse response) {
// ...
// Here you can use the request and response objects like:
// response.setContentType("application/pdf");
// response.getOutputStream().write(...);
}
Como puede ver, simplemente agregar los objetos HttpServletRequest
y HttpServletResponse
a la firma hace que Spring MVC pase esos objetos a su método de controlador. También querrás el objeto HttpSession
.
EDITAR: Parece que HttpServletRequest / Response no funciona para algunas personas en Spring 3. Intente utilizar los objetos Spring WebRequest / WebResponse como señaló Eduardo Zola.
Recomiendo encarecidamente que eche un vistazo a la lista de argumentos admitidos que Spring MVC puede inyectar de manera automática en sus métodos de manejo.