SpringmMVC-@PathVariable\@RequestHeader\@cookieValue

SpringmMVC-@PathVariable\@RequestHeader\@cookieValue

 1.rest風格接收參數

2.在form表單中發送put和delete請求

   1).在web.xml中配置HiddenHttpMethodRequest過濾器(在其中添加)

<!--
    配置HiddenHttpMethodFilter過濾器
    實現resultful請求
    -->
    <filter>
        <filter-name>hiddenmethod</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>hiddenmethod</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

   2).給表單添加影藏的input標籤

<%--測試form表單是否能發送put請求--%>
<form action="${pageContext.request.contextPath}/testRestFrom/100" method="post">
    <%--定義一個隱藏表單 name值必須爲_method value爲請求的方式--%>
    <input type="hidden" name="_method" value="put">
    <input type="submit" value="測試testRestFrom">
</form>
<br>
<hr>

   3).設置前端控制器,跳轉界面的重定向(或者不使用重定向然後在直接返回的界面中的page中設置isErrorPage=true)

3.註解@requestHeader和@cookieValue的使用

代碼示例:

前端jsp:

<%--rest請求風格--%>
<a href="${pageContext.request.contextPath}/rest/1">請求方式rest</a>
<br>
<hr>

<%--測試form表單是否能發送put請求--%>
<form action="${pageContext.request.contextPath}/testRestFrom/100" method="post">
    <%--定義一個隱藏表單 name值必須爲_method value爲請求的方式--%>
    <input type="hidden" name="_method" value="put">
    <input type="submit" value="測試testRestFrom">
</form>
<br>
<hr>


<%--@requestHeader註解--%>
<a href="${pageContext.request.contextPath}/testHeader">測試testHeader</a>

後臺的前端控制器:

/*rest風格接收參數
    * 京東和歪果仁喜歡使用這種方式接收參數
    * */
    @RequestMapping("rest/{id}")
    public String rest1(@PathVariable Integer id){
        System.out.println("rest");
        System.out.println(id);
        return "/second.jsp";
    }

    /*測試from表單是否能發送put請求
    * 默認情況下form表單只能夠發送post和get請求
    * 解決方法:
    * 1.在web.xml中配置HiddenHttpRequest過濾器
    * 2.給表單添加隱藏的input標籤:<input type="hidden" name="_method" value="put/delete">
    * 3.設置前端控制器,跳轉界面的重定向(或者將直接返回的頁面中的page中設置iserrorpage=true設置爲true)
    * */
    @RequestMapping(value = "testRestFrom/{id}",method = RequestMethod.PUT)
    public String testRestFrom(@PathVariable Integer id){
        System.out.println("testRestFrom");
        System.out.println(id);
        return "redirect:/localsecond";//JSPs only permit GET POST or HEAD錯誤的解決方法
    }

    @RequestMapping("localsecond")
    public String localsecond(){

        return "/second.jsp";
    }

    /*註解@requestHeader@CookieValue的使用方法獲取請求頭裏面的信息*/
    @RequestMapping("testHeader" )
    public String testHeader(
            @RequestHeader("Host") String host,
            @RequestHeader("Referer") String referer,
            @RequestHeader("Cookie") String cookie,
            @CookieValue("JSESSIONID") String sessionid
    ){
        System.out.println("testHeader");
        /*獲取發送的主機地址*/
        System.out.println(host);
        /*獲取發送界面的地址*/
        System.out.println(referer);
        /*獲取主機的cookie*/
        System.out.println(cookie);
        /*使用@CookieValue註解 根據value來獲取對應的值,而不是像@requestHeader這樣來獲取全部內容*/
        System.out.println(sessionid);
        return "/second.jsp";
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章