springMVC心得
以SimpleFormController為例
1。spring 接收一個請求後首先會判斷"get"還是"post"方法
2。1 "get"方法時
?????????2。1。1 首先創(chuàng)建一個command對象﹐通過調(diào)用AbstractFormController的formBackingObject方法得到﹐通常是一個pojo﹐根據(jù)name用來和提交的數(shù)據(jù)綁定。
????????? 2。1。2 然後會創(chuàng)建一個BindException對象﹐裡面包括command對象﹐和其他一些屬性。
???????????2。1。3 判斷sessionForm 屬性﹐默認(rèn)為false。如果為true﹐就會把command對象對象保存在session裡???? 面。session中key為類名+".FORM." + command對象名。可以通過request.getSession().getAttribute(this.getFormSessionAttributeName(request));得到command對象。
??????
???2。1。4 調(diào)用AbstractFormController的referenceData方法。這個方法默認(rèn)為空﹐可以復(fù)寫來初始化頁面參數(shù)。
2。1。5 返回ModelAndView對象﹐返回formview頁面。
2 。2 “post”方法時
???2。2。1 首先得到command對象,如果SessionForm = false﹐調(diào)用formBackingObjectde創(chuàng)建
?????????????????????如果SessionForm = true,從request.getSession中得到原command對象﹐然後將command對象從
?????????????????????Session中刪除。
? 2。2。2? 然後會創(chuàng)建一個ServletRequestDataBinder對象﹐裡面包括command對象﹐和其他一些屬性。
???????????????????這個過程將調(diào)用initBinder()﹔可以複寫這個方法初始化數(shù)據(jù)。
?2。2。3 調(diào)用processFormSubmission(HttpServletRequest request, HttpServletResponse response, Object command,? BindException errors)。有錯誤時返回formview頁面﹐否則進(jìn)入successview頁面。這個過程將調(diào)用onSubmit(Object command)﹐必須複寫這個方法放入業(yè)務(wù)邏輯。
?
???
posted on 2006-09-17 14:11 software5168 閱讀(560) 評論(0) 編輯 收藏 所屬分類: Java學(xué)習(xí)