Spring MVC小結

一、初識Spring MVC

初次看到Spring MVC這個IP,不禁想起那月黑風高的一晚,醉裏挑燈看劍...咳咳咳,不禁想起Spring和MVC設計模式,經過一番學海遨遊,果不其然,Spring爲支持Web開發,提供了構建Web應用程序的MVC模塊。

位置:Web層

同行:Struts2

二、工作流程

1、客戶端發送一個HTTP請求,Web應用服務器接收到這個請求,如果匹配(在web.xml中指定)DispatcherServlet的請求映射路徑,Web容器將改請求轉交給DispatcherServlet處理。

2、DispatcherServlet接收到這個請求後,將請求的信息以及Handler Mapping的配置找到處理請求的處理器(Handle)。

注:Spring MVC中並沒有定義一個Handler接口,實際上任何一個Object都可以成爲請求處理器。

3、當DispatcherServlet根據HandlerMapping得到對應當前請求的Handler後,通過HandlerAdapter對Handler進行封裝,再以統一的適配器接口調用Handler。

注:HandlerAdapter是Spring MVC的框架級接口,顧名思義,HandlerAdapter是一個適配器,它用統一的接口對各種Handler方法進行調用。

4、處理器完成業務邏輯的處理後將返回一個ModelAndView給DispatcherServlet,ModelAndView包含了視圖邏輯名和模型數據信息。

5、ModelAndView中包含的是“邏輯視圖名”而非真正的視圖對象,DispatcherServlet藉由ViewResolver完成邏輯視圖名到真實視圖對象的解析工作。

6、當得到真實的視圖對象View後,DispatcherServlet就使用這個View對象對ModelAndView中的模型數據進行視圖渲染。

7、最後響應給客戶端。

 

三、註解

@RequestMapping :蹩腳翻譯,請求映射,也就是請求地址映射,有兩個參數

1、value:指定請求的實際地址;

2、method: 指定請求的method類型,GET、 PUT、POST、DELETE等

@RequestMapping("/testGet")
@RequestMapping(value = "/testPut/{id}", method = RequestMethod.PUT)
@RequestMapping(value = "/testPost/{id}", method = RequestMethod.POST)
@RequestMapping(value = "/testDelete/{id}", method = RequestMethod.DELETE)

@PathVariable :路徑變量?此處敲黑板,這個註解是將請求URL中的變量映射到方法參數上,舉個栗子(=.=),請求URL爲: http://host:port/project/test/deleteById/id

@RequestMapping(value = "/deleteById/{id}",method = RequestMethod.DELETE)
    public String deleteById(@PathVariable("id") Integer id){
        //......
        return null;
    }

這裏要區分一下 @RequestParam

@RequestParam:請求參數

舉個栗子(=.=),請求URL爲:http://.../test?param1=user&param2=123

@RequestMapping(value = "/test",method = RequestMethod.GET)
    public String testMethod(@RequestParam("param1") String name,@RequestParam("param2") String pwd){
        //......
        return null;
    }

@CookieValue獲取Cookie中的值

@SessionAttributes將值放到session中,寫在類上面

@ResponseBody:返回某種格式數據(json等)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章