五、Spring Web應用程式構建
內容
- 映射請求到Spring控制器
- 透明地綁定表單參數
- 校驗表單提交
關鍵詞
- 模型-視圖-控制器(Model-View-Controller,MVC)
- 處理器映射(handle mapping)
- 視圖解析器(view resolver)
- 前端控制器(front controller)
5.1 請求處理流程
URL-->DispatcherServlet-->Controller-->Service-->Dao
當然上面也會反著來進行返回
第一個定義——Model(模型)
模型:控制器完成邏輯處理後,通常會產生一些資訊,這些資訊需要返回給用戶並在瀏覽器上顯示,這些資訊就被叫做模型(model)。
視圖:資訊返回後,需要給用戶進行格式化後展示,那麼資訊就需要發送一個視圖(View)。
控制器最後將模型數據打包,並且標示出用於渲染輸出的視圖名。接下類會將請求連同模型和視圖名一起發送給DispatcherServlet。
5.2 編寫基本的控制器
控制器方法時添加@RequestMapping註解,這個註解聲明了它所要處理的url請求。
5.2.1 定義方法級別的請求
package test
@Controller
public class HomeController() {
@RequestMapping(value='/',method=GET)
public String home() {
return "home";
}
}
- @Controller:註解來聲明控制器類,這是一個構造器的註解,也是基於@Component註解。但是,它的目的就是輔助實現組件掃描,組件掃描器會自動找到@Controller,並將其註解的類聲明為Spring上下文中的一個bean。
- @RequestMapping:屬性value指定了這個方法所要處理的請求路徑,method屬性細化了它所處理的HTTP方法。
5.2.2 定義類級別的請求
package test
@Controller
@RequestMapping(value='/')
public class HomeController() {
@RequestMapping(method=GET)
public String home() {
return "home";
}
}
1.一個RequestMapping被添加在了類級別上,意味著這個註解會應用到該控制器的所有的方法上,另一個方法上的註解,則是對類級別註解的一個補充。
2. 同時RequestMapping還可以接受一個String數組@RequestMapping(value={'/','/home'})。
5.3 接受請求的輸入
關鍵詞
- 查詢參數(Query Parameter)
- 表單參數(Form Parameter)
- 路徑變數(Path Variable)
5.3.1 處理查詢參數
@RequestParam()的DefaultValue屬性可以接受參數
@RequestParam('id') long id;
但是這種方法不理想,@RequestMapping就有了佔位符這個概念
@RequestMapping(value="/{Id}",method=RequestMethod.GET)
public String book(@PathVariable("Id") long id,Model model) {
model.addAttribute(libraryRespo.findOne(id));
return "book";
}
