2010-12-30 16 views
8

Come ottengo la richiesta/risposta che posso impostare come risposta? Inoltre, alla fine di questo metodo, come posso reindirizzare a un'altra pagina?Il controller Spring riceve richiesta/risposta

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

risposta

13

Che ne dite di questo:

@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

Di solito la primavera è configurare con il suffisso vista, quindi non si dovrebbe includere nel nome della vista (html) – Bozho

+0

Grazie! Non sapevo che potevamo trasformarlo in un metodo 'HttpServlet # service() :-) Un punto da notare è che non possiamo più usare' @ RequestMapping' quando questi due parametri sono dichiarati. – asgs

7
  1. semplicemente passare come argomento: public String doSomething(HttpServletRequest request). Puoi passare sia la richiesta che la risposta, o ognuna di esse individualmente.
  2. di ritorno i String"redirect:/viewname" (il più delle volte senza il suffisso .jsp)

Per entrambe le domande, verificare the documentation, sezione "15.3.2.3 metodo argomenti dei gestori supportati e ritorno tipi"

4

È anche possibile semplicemente @Autowire. Per esempio:

@Autowired 
private HttpServletRequest request; 

Anche se HttpServletRequest è fagioli richiesta con ambito, non richiede il controller ad essere richiesta ambito, come per HttpServletRequest primavera genererà un proxy HttpServletRequest che è consapevole come ottenere l'istanza effettiva di richiesta.

+0

Funziona con la risposta? – zygimantus

+1

@zygimantus No, non funziona con la risposta. Ci sono alcuni hack per averli iniettati però (non raccomandato), controlla questo post http://stackoverflow.com/questions/6984054/autowired-httpservletresponse – vtor

0

Si potrebbe anche usare questo modo

@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"; 
    } 
Problemi correlati