Controller內(nèi)的方法限制傳遞的參數(shù)類型
(1)`HttpServlet`的內(nèi)置對象翼悴。{`ServletRequest`,`HttpServletRequest`,`ServletResponse`,`HttpServletResponse`}
(2)`HttpSession`對象:當(dāng)傳遞這種參數(shù)類型時必須保證會話是存在的,不能為null说订。
Notes:Session訪問可能不是線程安全的抄瓦,特別是在一個Servlet環(huán)境。如果多個請求被允許同時訪問一個會話,考慮設(shè)置
RequestMappingHandlerAdapter的“synchronizeOnSession”標(biāo)志為“true”陶冷,
(3)`org.springframework.web.context.request.WebRequest`或者`org.springframework.web.context.request.NativeWebRequest`钙姊。
(4)`java.util.Locale`:當(dāng)前請求的語言環(huán)境,LocaleResolver在Servlet環(huán)境中配置
(5)`java.io.InputStream`/`java.io.Reader`:request中的內(nèi)容
(6)`java.io.OutputStream` / `java.io.Writer`:用于生成response對象中的內(nèi)容
(7)`java.security.Principal`:包含當(dāng)前身份驗證的用戶
(8)`HttpEntity<?>`:用于接收Http的請求頭中的內(nèi)容(headers和contents).通過HttpMessageConverter來將請求數(shù)據(jù)轉(zhuǎn)換成實體埂伦。
(9)`java.util.Map` / `org.springframework.ui.Model` / `org.springframework.ui.ModelMap`:將后臺需要的數(shù)據(jù)傳遞到視圖層
(10)`org.springframework.web.servlet.mvc.support.RedirectAttributes`:當(dāng)完成一個數(shù)據(jù)庫對應(yīng)的操作時煞额,需要給前臺做出
一個響應(yīng),為了防止刷新重復(fù)提交表單,不能采用request的方式膊毁,所以采用這種方式將信息臨時存儲在服務(wù)器端胀莹,使其可用于
重定向之后的請求.
(11)`org.springframework.validation.Errors` / `org.springframework.validation.BindingResult`:這個參數(shù)必須緊接在配置
了@Valid注解的參數(shù)之后,有多少個配置了@Valid注解的參數(shù)就有多少個該對象婚温。用于驗證一個表單對象或者結(jié)果前的命令
(12)`org.springframework.web.bind.support.SessionStatus`:可以通過該類型 status 對象顯式結(jié)束表單的處理描焰,
這相當(dāng)于觸發(fā) session 清除其中的通過 @SessionAttributes 定義的屬性
(13)`org.springframework.web.util.UriComponentsBuilder`:針對當(dāng)前請求的主機(jī),端口栅螟,scaheme,context path和servlet
對應(yīng)的映射路徑來構(gòu)造uri
下面是一些可傳遞的注解類型的參數(shù):
(1)`@PathVariable`:注解用于訪問uri上的模板參數(shù)荆秦,可接收一些基本類型,如int力图,long步绸,String,Date等基本類型
(2)`@MatrixVariable`:注解用于訪問uri上的若干組鍵值對參數(shù)吃媒;該注解傳遞參數(shù)的uri有如下格式:
1."/cars;color=red;year=2012"
2. "color=red,green,blue"
3."color=red;color=green;color=blue"
(3)`@RequestParam`:注解用于訪問request請求中參數(shù)瓤介,并會將值自動轉(zhuǎn)換成注解對應(yīng)的類型。
(4)`@RequestHeader`:注解用于訪問request HTTP請求頭信息赘那,并且值也會做相應(yīng)的轉(zhuǎn)換刑桑。
(5)`@RequestBody`:注解用于訪問HTTP請求體中的內(nèi)容。值通過HttpMessageConverter來轉(zhuǎn)換漓概。
(6)`@RequestPart`:注解用于訪問當(dāng)表單的enctype設(shè)置為'multipart/form-data'時的請求內(nèi)容漾月。
Controller內(nèi)的方法支持的返回類型
(1)`ModelAndView Object`:返回對應(yīng)的視圖層和Model層的數(shù)據(jù).
(2)`Model Object`:返回對應(yīng)設(shè)定的Model層的數(shù)據(jù),主要包含Spring封裝好的model和modelMap,以及java.util.Map
當(dāng)沒有視圖返回時視圖名稱由RequestToViewNameTranslator決定胃珍,一般是配置了RequestMapping的映射路徑梁肿。
(3)`Map Object`:與Model類型相似。
(4)`View Object`:返回對應(yīng)的視圖對象觅彰,并且可以通過`render(Map<String ,?> , request , response)`參數(shù)向前臺傳遞
屬性吩蔑。
(5)`String Object`:返回一個視圖名稱,Spring會通過相應(yīng)的ViewResolver來解析
(6)`void`:返回空值填抬。
(7)`other type`:其他任何被認(rèn)為不是屬于上述的類型的返回類型烛芬,使用@ModelAttribute在方法級別上指定名稱。
以上內(nèi)容僅屬于個人觀點飒责,有錯誤的地方希望各位同仁能加以指正赘娄!謝謝!