SpringMVC原理與SpringMVC常用註解

SpringMVC原理
這裏寫圖片描述
1、 客戶端發送一個http請求給web服務器,web對http進行解析,如果匹配前端控制器(DispatcherServlet)的請求映射路徑(在web.xml中指定),web容器將請求轉交給前端控制器
2、 DispatcherServlet接收到這個請求之後根據請求的信息(包括url、http方法、請求報文頭和請求參數cookie等)以及HandlerMapping的配置找到請求的處理器(Handler)
3、 DispatcherServlet根據HandlerMapping找到對應的Handler,將處理權交給Handler(Handler根據具據不同的需求進行處理,封裝),返回一個ModelAndView返回給DispatcherServlet
4、 DispatcherServlet將Handler(Controller)返回的ModelAndView(邏輯視圖)交給ViewResolver將邏輯視圖轉化爲真正的視圖View
5、 DispatcherServlet將真正的試圖展現在客戶端
SpringMVC註解
1、@Controller
在SpringMVC中,控制器Controller負責處理由DispatcherServlet分發的請求,它把用戶請求的數據經過業務處理(XXXService)之後返回一個封裝好的ModelAndView,然後返回給DispatcherServlet,然後交給ViewResolver,最後返回ModelView。注意:@Controller用於標註類,需要導入:org.springframework.stereotype.Controller
2、@RequestMapping
處理請求地址映射註解,可以用於類或者方法上。如果該註解放在類上則表示該路徑是此類下所有方法的父路徑,常用屬性:
○1value:默認屬性(當不指定屬性時默認是該屬性@RequestMapping(“test”)=@RequestMapping(value=”test”))
○2method:指定請求的method類型,RequestMethod.GET、RequestMethod.POST、RequestMethod.PUT、RequestMethod.DELETE
Get與Post的區別
A:get是從服務器上獲取參數、Post是向服務器傳送數據
B:在客戶端,get方式在通過URL提交數據,數據在url中可以看到;Post方式,數據放置在HTML HEADER內提交
C:對於get方式,服務器端用Request.QueryString獲取變量的值,對於Post方式,服務器端用Request.From獲取提交的數據
D:get方式提交的數據最多只能有1024字節,而post則沒有限制
E:post的安全性高於get
○3consumes:指定處理請求的提交內容類型(Content-Type),例如:application/json,text/html
○4produces:指定返回的內容類型,僅當request請求頭中的類型包含該指定類型才返回
○5params:指定request中必須包含某些參數值是,才讓該方法處理
○6headers:指定request中必須包含某些制定的header值,才能讓該方法處理請求
3、@Resource、@Autowired
是bean注入時使用、@Resource需要導入javax.annotation.Resource
兩者共同點:兩者都可以寫在字段和setter方法。兩者如果都寫在字段上、那麼就不需要再寫setter方法
不同點:
@Autowired需要導入 org.springframework.beans.factory.annotation.Autowired,只按照byType注入
public class StudentServiceImp{
@Autowired
private StudentDao studentDao;//用於字段上
@Autowired
public void setStudentDao(StudentDao studentDao){//用於屬性的方法上
This.userDao=userDao;
}
}
@Authowired註解是按照類型裝配依賴對象,默認清情況下要求依賴對象必須存在
@Resource默認按照ByName自動注入,由javaee提供
4、ModelAttribute和SessionAttributes
代表:該Controller的所有方法在調用前,先執行此@ModelAttribute方法,可用於註解和方法參數中,可以把@ModelAttribute特性用在BaseController中
@SessionAttributes即將值放到session作用域中,寫在class上面
5、@PathVaribale
用於將請求url中模板變量映射到功能處理方法的參數上,即取出url模板中的變量作爲參數
6、@RequestParam
用於在SpringMVC後臺獲取參數
7、@ResponseBody
作用:該註解用於將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換爲指定格式後,寫入到Response對象的body數據區
使用情況:返回的數據不是html標籤的頁面,而是其他某種格式的數據時(如json、xml等)使用
8、@Component
相當於通用註解,當不知道一些類歸到那一層是使用,一般不建議使用
9、@Repsitory
用於註解dao層,在daoimp類上面註解
10、@Valid
通過在處理方法的參數上標註@Valid註解,即可讓SpringMVC在完成數據綁定後進行數據校驗,需要用到JSR 303相關的jar包

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