天天看點

《深入實踐Spring Boot》一3.2 控制器設計

怎樣将視圖上的操作與模型——資料管理子產品聯系起來,這中間始終是控制器在起着通信橋梁的作用,它響應視圖上的操作事件,然後根據需要決定是否通路資料管理子產品,最後再将結果傳回給合适的視圖,由視圖處理顯示。下面将按照電影控制器的設計來說明控制器中增删查改的實作方法,演員控制器的設計與此類似,不再贅述。

接收建立電影的請求,以及輸入一部電影的資料後的最後送出,由建立控制器進行處理。在控制器上将執行兩個操作,第一個操作将傳回一個建立電影的視圖,第二個操作接收界面中的輸入資料,并調用資料管理子產品進行儲存,如代碼清單3-4所示。其中,create函數将傳回一個建立電影的視圖,它不調用資料管理子產品,save函數将需要儲存的資料通過調用資料管理子產品存儲至資料庫中,并傳回一個成功标志。注意,為了簡化設計,将電影劇照的圖檔檔案做了預定義處理。

代碼清單3-4 建立電影控制器

檢視一個電影的詳細資訊時,控制器首先使用請求的電影id向資料管理子產品請求資料,然後将取得的資料輸出到一個顯示視圖上,如代碼清單3-5所示。

代碼清單3-5 檢視電影控制器

若要實作對電影的修改及儲存操作,需要先将電影的資料展示在視圖界面上,然後接收界面的操作,調用資料管理子產品将更改的資料儲存至資料庫中,如代碼清單3-6所示。其中,為了簡化設計,将劇照中的圖檔檔案和電影角色名稱做了預定義處理。修改資料時,由于從界面傳回的電影對象中,丢失了其角色關系的資料(這是ogm的缺點),是以再次查詢一次資料庫,以取得一個電影的完整資料,然後再執行修改的操作。

代碼清單3-6 修改電影控制器

@requestmapping(value="/delete/{id}",method = requestmethod.get)

}

@requestmapping(value="/list")

public page list(httpservletrequest request) throws exception{

size==null? 10:integer.parseint(size),