<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # @RequestParam **作用:** 把請求中指定名稱的參數給控制器中的形參賦值。 **屬性:** * value:請求參數中的名稱。 * required:請求參數中是否必須提供此參數。默認值:true。表示必須提供,如果不提供將報錯 ~~~ // /abc?name=111 @RequestMapping(path = "/abc") public String sayAbc(@RequestParam(name = "name", required = false) String username) { //把name賦值給username System.out.println(username); return "success"; } ~~~ # @RequestBody **作用** 用于獲取請求體內容。直接使用得到是 key=value&key=value...結構的數據。 get 請求方式不適用。 **屬性** required:是否必須有請求體。默認值是:true。當取值為 true 時,get 請求方式會報錯。如果取值 為 false,get 請求得到是 null。 ~~~ //頁面 <form action="word?uname=1111" method="post"> 用戶姓名:<input type="text" name="uname"/><br/> 用戶年齡:<input type="text" name="age"/><br/> 用戶生日: <input type="text" name="date"/><br/> <input type="submit" value="提交"/> </form> //控制器 @RequestMapping(path = "/word") public String sayWord(@RequestBody(required = false) String body) { //hello sayWord: uname=1112e23&age=11&date=2019-08-19 System.out.println("hello sayWord: " + body); return "success"; } ~~~ # @PathVaribale **作用:** 用于綁定 url 中的占位符。例如:請求 url 中 `/delete/{id}`,這個`{id}`就是 url 占位符。 url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 風格 URL 的一個重要標志。 **屬性:** value:用于指定 url 中占位符名稱。 required:是否必須提供占位符。 ~~~ //頁面 <a href="word/100">pathVariable 注解</a> //控制器 @RequestMapping(path = "/word/{id}") public String sayWord(@PathVariable("id") Integer id) { System.out.println("hello sayWord: " + id); return "success"; } ~~~ # @HiddentHttpMethodFilter **作用:** 由于瀏覽器 form 表單只支持 GET 與 POST 請求,而DELETE、PUT 等 method 并不支持,Spring3.0 添 加了一個過濾器,可以將瀏覽器請求改為指定的請求方式,發送給我們的控制器方法,使得支持 GET、POST、PUT 與 DELETE 請求。 **使用方法:** 第一步:在 web.xml 中配置該過濾器。 第二步:請求方式必須使用 post 請求。 第三步:按照要求提供_method 請求參數,該參數的取值就是我們需要的請求方式 **源碼分析** ![](https://img.kancloud.cn/f3/02/f3029ef85b6b35ff7383b946c36b3d92_1360x787.png) ~~~ <!-- 更新 --> <form action="springmvc/testRestPUT/1" method="post"> 用戶名稱:<input type="text" name="username"><br/> <input type="hidden" name="_method" value="PUT"> <input type="submit" value="更新"> </form> //控制器 @RequestMapping(value="/testRestPOST",method=RequestMethod.PUT) ~~~ web.xml下的web-app下 ~~~ <!-- 配置 org.springframework.web.filter.HiddenHttpMethodFilter,可以吧POST請求轉換為PUT或DELETE請求--> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ~~~ # @RequestHeader **作用:** 用于獲取請求消息頭。 **屬性:** value:提供消息頭名稱 required:是否必須有此消息頭 ~~~ @RequestMapping("/useRequestHeader") public String useRequestHeader(@RequestHeader(value="Accept-Language", required=false)String requestHeader){ System.out.println(requestHeader); return "success"; } ~~~ # @CookieValue **作用:** 用于把指定 cookie 名稱的值傳入控制器方法參數。 **屬性:** value:指定 cookie 的名稱。 required:是否必須有此 cookie。 ~~~ @RequestMapping("/useCookieValue") public String useCookieValue(@CookieValue(value="JSESSIONID",required=false) String cookieValue){ System.out.println(cookieValue); return "success"; } ~~~ # @ModelAttribute **作用:** 該注解是 SpringMVC4.3 版本以后新加入的。它可以用于修飾方法和參數。 出現在方法上,表示當前方法會在控制器的方法執行之前,先執行。它可以修飾沒有返回值的方法,也可 以修飾有具體返回值的方法。 出現在參數上,獲取指定的數據給參數賦值。 **屬性:** value:用于獲取數據的 key。key 可以是 POJO 的屬性名稱,也可以是 map 結構的 key。 **應用場景:** 當表單提交數據不是完整的實體類數據時,保證沒有提交數據的字段使用數據庫對象原來的數據。 例如: 我們在編輯一個用戶時, 用戶有一個創建 信息字段,該字段 的值是不允許被 修改的。在提交表 單數 據是肯定沒有此字段的內容,一旦更新會把該字段內容置為 null,此時就可以使用此注解解決問題。 **ModelAttribute 修飾方法帶返回值** ~~~ //頁面 <form action="word" method="post"> 用戶姓名:<input type="text" name="uname"/><br/> 用戶年齡:<input type="text" name="age"/><br/> <input type="submit" value="提交"/> </form> //控制器 //該方法會先執行 @ModelAttribute public User showUser(String uname) { System.out.println("showUser執行了"); User user = new User(); //模擬查詢數據庫 user.setUname(uname); user.setAge(20); user.setDate(new Date()); return user; } @RequestMapping(path = "/word") public String sayWord(User user) { System.out.println("hello sayWord: " + user); return "success"; } ~~~ **ModelAttribute 修飾方法不帶返回值** 把對象放到map中,控制器通過map的key獲取對象 ~~~ //該方法會先執行 @ModelAttribute public void showUser(String uname, Map<String, User> map) { System.out.println("showUser執行了"); User user = new User(); //模擬查詢數據庫 user.setUname(uname); user.setAge(21); user.setDate(new Date()); map.put("abc", user); } @RequestMapping(path = "/word") public String sayWord(@ModelAttribute("abc") User user) { System.out.println("hello sayWord: " + user); return "success"; } ~~~ # @SessionAttribute **只能作用在類上** 提供了一個Model接口org.springframework.ui.Model 也提供了一些實現類 **作用:** 用于多次執行控制器方法間的參數共享。 **屬性:** value:用于指定存入的屬性名稱 type:用于指定存入的數據類型。 控制器類上 ~~~ @Controller @SessionAttributes(value = {"msg"}) //把 msg=xx 存入到session域中 public class HelloController { ~~~ 存值 ~~~ @RequestMapping(path = "/order") public String sayOrder(Model model) { //底層會存儲到request域對象中 model.addAttribute("msg", "session-msg"); System.out.println("---model---"); return "success"; } ~~~ 取值 ~~~ @RequestMapping(path = "/Gods") public String sayGods(ModelMap model) { System.out.println(model.get("msg")); System.out.println("---Gods---"); return "success"; } ~~~ 清除 ~~~ @RequestMapping(path = "/del") public String sayDel(SessionStatus status) { status.setComplete(); System.out.println("---del---"); return "success"; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看