2010-12-30 18 views
8

Jak uzyskać żądanie/odpowiedź, którą mogę ustawić? Ponadto, na końcu tej metody, w jaki sposób mogę przekierować na inną stronę?Sterownik sprężynowy uzyskać zapytanie/odpowiedź

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

Odpowiedz

13

Jak ten temat:

@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

Zwykle sprężyna jest konfigurowanie z poglądem przyrostkiem, więc nie powinno się uwzględnić go w nazwie widoku (HTML) – Bozho

+0

Dzięki! Nie wiedzieliśmy, że możemy zamienić go w metodę 'HttpServlet # service()' :-) Należy zwrócić uwagę, że nie możemy już używać '@ RequestMapping', gdy te dwa parametry są zadeklarowane. – asgs

7
  1. Wystarczy przekazać ją jako argument: public String doSomething(HttpServletRequest request). Możesz przesłać zarówno żądanie, jak i odpowiedź, lub każdą z nich indywidualnie.
  2. powrotne na String"redirect:/viewname" (najczęściej bez .jsp przyrostek)

Na oba pytania, sprawdź the documentation, sekcja "15.3.2.3 obsługiwaną metodą argumenty przewodnika i zwracają typy"

4

Możesz także po prostu @Autowire. Na przykład:

@Autowired 
private HttpServletRequest request; 

Choć HttpServletRequest jest prośba o zakresie fasoli, nie wymaga kontrolera być prośba o zakresie, jak na HttpServletRequest Wiosna wygeneruje proxy HttpServletRequest który jest świadomy jak uzyskać rzeczywiste wystąpienie życzenie.

+0

Czy to działa z odpowiedzią? – zygimantus

+1

@zygimantus Nie działa z odpowiedzią. Jest kilka hacków do wstrzyknięcia (niezalecane), sprawdź ten post http://stackoverflow.com/questions/6984054/autowired-httpservletresponse – vtor

0

Można również używać w ten sposób

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