五、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";
	}

}

  1. @Controller:註解來聲明控制器類,這是一個構造器的註解,也是基於@Component註解。但是,它的目的就是輔助實現組件掃描,組件掃描器會自動找到@Controller,並將其註解的類聲明為Spring上下文中的一個bean。
  2. @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";
}
Tags: