一.控制器Controller
控制器複雜提供通路應用程式的行為,通常通過接口定義或注解定義兩種方法實作。
控制器負責解析使用者的請求并将其轉換為一個模型。
在Spring MVC中一個控制器類可以包含多個方法
在Spring MVC中,對于Controller的配置方式有很多種
實作Controller接口
Controller是一個接口,在org.springframework.web.servlet.mvc包下,接口中隻有一個方法;
測試
1.編寫一個Controller類,ControllerTest1
2.編寫完畢後,去Spring配置檔案中注冊請求的bean;name對應請求路徑,class對應處理請求的類
3.編寫前端的test.jsp,注意在WEB-INF/jsp目錄下編寫,對應我們的視圖解析器
4.配置Tomcat運作測試
說明:
- 實作接口Controller定義控制器是較老的辦法
- 缺點是:一個控制器中隻有一個方法,如果要多個方法則需要定義多個Controller;定義的方式比較麻煩;
使用注解@Controller(推薦)
·@Controller注解類型用于聲明Spring類的執行個體是一個控制器(在講IOC時還提到了另外3個注解);
·Spring可以使用掃描機制來找到應用程式中所有基于注解的控制器類,為了保證Spring能找到你的控制器,需要在配置檔案中聲明元件掃描。
<!-- 自動掃描指定的包,下面所有注解類交給IOC容器管理 -->
<context:component-scan base-package="com.kuang.controller"/>
·增加一個ControllerTest2類,使用注解實作;
運作tomcat測試
可以發現,我們的兩個請求都可以指向一個視圖,但是頁面結果的結果是不一樣的,從這裡可以看出視圖是被複用的,而控制器與視圖之間是弱偶合關系。
注解方式是平時使用的最多的方式!
Restful風格:
概念
Restful就是一個資源定位及資源操作的風格。不是标準也不是協定,隻是一種風格。基于這個風格設計的軟體可以更簡潔,更有層次,更易于實作緩存等機制。
功能
資源:網際網路所有的事物都可以被抽象為資源
資源操作:使用POST、DELETE、PUT、GET,使用不同方法對資源進行操作。
分别對應 添加、 删除、修改、查詢。
傳統方式操作資源 :通過不同的參數來實作不同的效果!方法單一,post 和 get
http://127.0.0.1/item/queryItem.action?id=1 查詢,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST
使用RESTful操作資源 :可以通過不同的請求方式來實作不同的效果!如下:請求位址一樣,但是功能可以不同!
http://127.0.0.1/item/1 查詢,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 删除,DELETE
測試
1.建立一個類RestFulController
2.在springmvc中可以使用@PathVariable注解,讓方法參數的值對應綁定到一個URL模闆變量上
3.我們來測試檢視一下
是不是看起來簡潔不少,我們來思考一下設定路徑變量的好處:
- 使路徑變得更加簡潔;
- 獲得參數更加友善,架構會自動進行類型轉換。
- 通過路徑變量的類型可以限制通路參數,如果類型不一樣,則通路不到對應的請求方法,如這裡通路是的路徑是/commit/1/a,則路徑與方法不比對,而不會是參數轉換失敗。
注意:所有位址欄的請求預設都是Get類型的,是以我們如果想用其他類型的查找,就需要限定他們的請求類型
方法級别的注解變體有如下幾個:組合注解
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@GetMapping 是一個組合注解,平時使用的會比較多!
它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一個快捷方式。