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