2010-12-30 12 views
8

¿Cómo obtengo la solicitud/respuesta que puedo establecer? Además, al final de este método, ¿cómo puedo redireccionar a otra página?Controlador de resorte Obtener solicitud/respuesta

@RequestMapping(value = "/dosomething", method = RequestMethod.GET) 
public RETURNREDIRECTOBJ dosomething() throws IOException { 
    .... 
    return returnredirectpagejsp; 
} 

Respuesta

13

¿Qué tal esto:

@RequestMapping(value = "/dosomething", method = RequestMethod.GET) 
public ModelAndView dosomething(HttpServletRequest request, HttpServletResponse response) throws IOException { 
    // setup your Cookie here 
    response.setCookie(cookie) 
    ModelAndView mav = new ModelAndView(); 
    mav.setViewName("redirect:/other-page"); 

    return mav; 
} 
+0

Por lo general, la primavera se configure con el sufijo de vista, lo que no debe incluirlo en el nombre de la vista (html) – Bozho

+0

Gracias! No sabíamos que podíamos convertirlo en un método 'HttpServlet # service()' :-) Un punto a tener en cuenta es que no podemos usar el '@ RequestMapping' más cuando se declaran estos dos parámetros. – asgs

7
  1. sólo tiene que pasar como argumento: public String doSomething(HttpServletRequest request). Puede pasar tanto la solicitud como la respuesta, o cada una de ellas individualmente.
  2. de retorno los String"redirect:/viewname" (más a menudo sin el sufijo .jsp)

Para ambas preguntas, comprobar the documentation, la sección 15.3.2.3 "compatibles controlador de métodos argumentos y devolver tipos"

4

También puede simplemente @Autowire. Por ejemplo:

@Autowired 
private HttpServletRequest request; 

Aunque HttpServletRequest es frijol petición con ámbito, que no requiere el controlador de ser un ámbito de petición, como para HttpServletRequest primavera va a generar un proxy HttpServletRequest que es consciente de cómo conseguir la instancia actual de la solicitud.

+0

¿Funciona esto con la respuesta? – zygimantus

+1

@zygimantus No, no funciona con la respuesta. Sin embargo, hay algunos hacks para inyectarlo (no se recomienda), consulte esta publicación http://stackoverflow.com/questions/6984054/autowired-httpservletresponse – vtor

0

También es posible usar esta forma

@RequestMapping(value = "/url", method = RequestMethod.GET) 
    public String method(HttpServletRequest request, HttpServletResponse response){ 
     Cookie newCookie = new Cookie("key", "value"); 
     response.addCookie(newCookie); 
     return "redirect:/newurl"; 
    } 
Cuestiones relacionadas