SpringMVC常用的注解2

這個周末,老徐說小嚴(yán)啊,我們周六好好地干一天,周日再好好的玩一天吧。然后,都不知道干啥了,這周就過完了,昨晚才好好地接著看了下接下來的內(nèi)容。
昨晚看了一下第3.3節(jié),參數(shù)的綁定
首先,還是基于前天的那個project---SecondDay
GitHub地址:https://github.com/yanconcon/SecondDay

  • @RequestParam注解:
    類名:org.springframework.web.bind.annotation.RequestParam
    注解類型用于將指定的請求參數(shù)賦值給方法中的形參,說人話就是把請求中的參數(shù)傳入到方法中去。
    例子:
    @RequestMapping(value = "/register" ,method = RequestMethod.POST)
    public String register(@RequestParam("loginName") String loginName,
//          通過@RequestParam注釋拿到post中的參數(shù),然后給String賦值
            @RequestParam("passWord") String passWord,
            @RequestParam("userName") String userName) {
        User user = new User();
        user.setLoginName(loginName);
        user.setPassWord(passWord);
        user.setUserName(userName);
        userList.add(user);

        return "loginForm";
    }

  • @PathVariable注解:
    類名:org.springframework.web.bind.annotation.PathVariable
    這個方法可以非常方便地獲得請求URL中的動態(tài)參數(shù),@PathVariable注解只支持一個屬性value,類型為String,表示綁定的名稱,如果省略,則默認(rèn)表示綁定同名參數(shù)
    雖然
    例子:
    @RequestMapping(value = "/pathVariableTest/{userId}")
    public void pathVariableTest(
//            通過@PathVariable獲取鏈接上的動態(tài)參數(shù)
            @PathVariable Integer userId
    ) {
        System.out.println("rio @PathVariable get"+userId);
    }
  • @RequestHeader注解:
    類名:org.springframework.web.bind.annotation.RequestHeader
    這個方法用于將請求的頭信息區(qū)的數(shù)據(jù)映射到功能處理方法上。

例子:

 @RequestMapping(value = "requestHeaderTest")
    public String requestHeaderTest(
            //            通過@CookieValue得到Header中的參數(shù)
            @RequestHeader("User-Agent") String userAgent,
            @RequestHeader("User-Agent") String[] accept
            ) {
        System.out.println("rio @RequestHeader get "+ userAgent);
        for (String a : accept){
            System.out.println("rio @RequestHeader get "+ userAgent);
        }
        return "databindingtest";
}
  • @CookieValue注解:
    類名:org.springframework.web.bind.annotation.CookieValue
    作用:將請求的Cookie數(shù)據(jù)映射到功能處理方法的參數(shù)上。
    例子:
    @RequestMapping(value = "cookieValueTest")
    public String cookieValueTest(
//            通過@CookieValue得到cookie中的JSESSIONID參數(shù)
            @CookieValue(value = "JSESSIONID",defaultValue = "1") String sessionId
    ){
        System.out.println(sessionId);
        return "databindingtest";

    }
  • @SessionAttributes注解:
    類名:org.springframework.web.bind.annotation.CookieValue
    作用:這個注解允許我們有選擇地指定Model中的哪些屬性轉(zhuǎn)存到HttpSession中,人話就是可以將我們指定的類存到HttpSession中。
    例子:
@Controller
@SessionAttributes("user")
//把Model中的屬性名為"user"的屬性存入HttpSession中
@RequestMapping("/sessionAttributeTest")
public class SessionAttributesController {
    @RequestMapping(value = "/{formName}")
    public String loginForm(@PathVariable String formName){
        return formName;
    }

    @RequestMapping(value = "/login")
    public String login(
            @RequestParam("loginName") String loginName,
            @RequestParam("passWord") String passWord,
            Model model
    ){
        User user = new User();
        user.setUserName("admin");
        user.setPassWord(passWord);
        user.setLoginName(loginName);
        model.addAttribute("user",user);
        return "welcome";
    }
}
  • @ModelAtttibute注解:
    類名:org.springframework.web.bind.annotation.ModelAttribute
    作用:將請求參數(shù)綁定到Model對象,然后通過jsp在前端獲取。
    這個方法好像難一點,昨晚看到這里就有點難看得懂了,跟著做試試看吧。
    這個注釋可以注釋的類型挺多的,書上寫了這5種:
  • 注釋返回具體類的方法
  • 注釋void返回值的方法
  • 注釋返回具體類的方法
  • 使用@ModelAttribute和RequestMapping同時注釋一個方法
  • 注釋一個方法的參數(shù)
    總的來說,被@ModelAttribute注釋的類或者方法,調(diào)用之前,會先去找@ModelAttribute中的值存入model中。
    這里我只做了一個例子:
@Controller
@RequestMapping("modelAttribute")
public class ModelAttributeTestController {
//    使用@ModelAttribute注釋的value屬性,來指定model屬性的名稱
    @ModelAttribute("loginName")
    public String userModel1(
            @RequestParam("loginName") String loginName
    ){
        return loginName;
    }

    @RequestMapping("/login1")
    public String login1(){
                return "result1";
    }
}

最后附上這個項目的GitHub地址:
https://github.com/yanconcon/SecondDay.git

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容