springMVC控制層的常用類和註解
阿新 • • 發佈:2022-04-05
@Controller
把一個類標註成可以由springmvc統一調遣的控制器類。
@RequestScope
標註一個元件類的例項的存活範圍是一個web的request
@RequestMapping
value:標註一個URL的入口。
params:限定請求引數 params={"name=zhansan","address"}
method:
headers:限定請求頭:headers={"Host=localhost","!Referer"}
等屬性對請求進一步的限制。
@GetMapping等和@RequestMapping的區別
@RequestMapping通常用於標註類,不限定請求方法。 @GetMapping通常用於標註方法,直接限定請求方法。
繫結HTTP的請求資料和控制器中的方法引數
HTTP的請求資料包括三個部分
1,請求引數。
2,請求頭。
3,cookie.
繫結的方式有5種:(一些常見的引數型別spring會自動轉換)
1,直接定義和請求引數同名的方法引數。 2,用@RequestParam註解繫結請求引數。 required:預設為true,表示引數是否為必須 defaultValue:屬性的預設引數 name:請求資料的名稱 value:name屬性的別名,和name屬性等同。 3,用@Requestheader註解繫結請求引數。 4,用@CookieValue註解繫結請求引數。 5,用@PathVariable注入繫結Restful風格的URL變數。 @RequestMapping("/{domain}/testA") public void testA(@RequestParam("name") String userName, @RequestHeader("Host") String host, @CookieValue("add") String addCookie, @PathVariable("domain") String domain){ } springMVC會自動將一組請求引數和一個controller方法中的JavaBean引數進行繫結。
控制器的請求方法引數型別,20種
1,javax.servlet.ServletRequest或javax.servlet.http.HttpServletRequest 2,javax.servlet.ServletResponse或java.servlet.http.HttpServletResponse 3,javax.servlet.http.HttpSession 4,org.springframework.web.context.request.WebRequest 5,org.springframework.web.context.request.NativeWebRequest 6,java.util.Locale 7,java.io.InputStream或java.io.Reader 8,java.io.OutputStream或java.io.Writer 9,java.security.Principal 10,HttpEntity<?> 11,org.springframework.ui.Model 12,org.springframework.ui.ModelMap 13,org.springframework.web.servlet.ModelAndView 14,org.springframework.web.servlet.mvc.support.RedirectAttributes 15,org.springframework.validation.Errors 16,org.springframework.validation.BindingResult 17,org.springframework.web.bind.support.SessionStatus 18,org.springframework.web.util.UriComponentsBuilder 19,@PathVariable、@@MatrixVariable註解@RequestParam、@RequestHeader、@RequestBody、@RequestPart註解 20,和請求引數對應的資料型別
控制器的返回引數型別:常用的有4種
1,ModelAndView:包含model資料和檢視元件,其中model指的是儲存資料的容器,而不是model層。
2,String型別:web元件的邏輯名稱。
2.1:直接把請求轉發給檢視元件
2.2:返回值以 forward: 開頭,請求轉發
2.3:返回值以 redirect: 開頭,請求從定向
3,void:在這種情況下通常使用 Writer輸出響應結果。
4,如果請求處理方法使用@ModelAttriubte註解來標識,那麼無論返回值是什麼型別都會新增到Model中。
@ModelAttribute有3種作用
1,用在控制器的請求處理方法的引數前面,把方法引數儲存到Model中。
2,用在控制器的請求處理方法的引數前面,把Model中的特定引數賦值給方法引數。
3,在控制器類的方法前新增此註解,表明該方法會向model中新增特定屬性。
@SessionAttribute
可以在session範圍內共享資料
@ControllerAdvice定義一個增強controller
在程式執行時,springmvc框架會把控制器增強類的程式碼動態注入的控制器中,通過這種功能來增強控制器的功能。
@ControllerAdvice
public class MyController {
@ModelAttribute("color")
public Map<String, String> selectColor() {
HashMap<String, String> stringStringHashMap = new HashMap<>();
stringStringHashMap.put("red", "紅色");
stringStringHashMap.put("blue", "藍色");
return stringStringHashMap;
}
}