1. 程式人生 > 其它 >springMVC控制層的常用類和註解

springMVC控制層的常用類和註解

@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;
            }
        }