2010-10-15 145 views
3

我有一個Spring MVC(3)控制器和我試圖把在註釋,但繼承人未能通過代碼大綱Spring MVC的 - 會話 - 請求

@Controller 
public class SpringController { 

    @RequestMapping("/welcome") 
    public String myHandler(@RequestParam("id") String id) { 

     //My RequestParm is able to do the job of request.getParameter("id") 

     HttpSession session = request.getSession(); 
     session.setAttribute("name","Mike") ; 
     return "myFirstJsp"; 
    } 

    @RequestMapping("/process") 
    public String processHandler(@RequestParam("processId") String processId) { 

     //do stuff 
     String someName = session.getAttribute("name"); 
     return "result"; 
    } 

} 

只是爲了session對象的緣故,我要申報HttpServletRequest和HttpSession。 無論如何,我們可以用@nnotations來解決問題。

謝謝!

+0

傢伙我RequestParam有語法錯誤。我錯過了一個「)」所以不要擔心這一點。僅供參考 – sv1 2010-10-15 03:37:04

回答

2

您可以在您的處理程序中聲明HttpSessionHttpServletRequest作爲參數,並且會自動通知它們。

public String myHandler(@RequestParam("id") String id, HttpServletRequest request) { ... } 

處理程序有很多不同的參數和結果。你可以看到他們here

+0

感謝您的回覆。是的,我看到他們,但我仍然無法理解如何使用註釋從HttpServletRequest獲取會話對象。如果有人能夠闡明這將是偉大的! – sv1 2010-10-16 02:46:31

+0

如果你這樣做,你不需要註釋,你爲什麼想要他們? @Raghuram說@SessionAttributes或@Scope(「會話」)是與Web會話相關的註釋,但它們可能不適合你想要做的事情。 – sinuhepop 2010-10-17 20:47:12

2

如果你不喜歡使用HttpSession中,並想Spring管理一些東西,也有可以使用org.springframework.web.context.request.WebRequest更多的控制範圍:

public String myHandler(@RequestParam("id") String id, WebRequest request) { 
    request.getAttribute("name", SCOPE_REQUEST); 
    ... 
}