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