Java Spring,如何通过标头管理HTTP请求?
在此期间,我将学习STS仪表板上的Spring MVC Showcase示例dowlodable 我对HTTP请求头映射的功能有疑问 在showcase示例中,我有以下两个链接:Java Spring,如何通过标头管理HTTP请求?,java,spring,model-view-controller,http-headers,httprequest,Java,Spring,Model View Controller,Http Headers,Httprequest,在此期间,我将学习STS仪表板上的Spring MVC Showcase示例dowlodable 我对HTTP请求头映射的功能有疑问 在showcase示例中,我有以下两个链接: <li> <a id="byHeader" href="<c:url value="/mapping/header" />">By presence of header</a> </li>
<li>
<a id="byHeader" href="<c:url value="/mapping/header" />">By presence of header</a>
</li>
<li>
<a id="byHeaderNegation" class="textLink" href="<c:url value="/mapping/header" />">By absence of header</a>
</li>
第二种方法如下:
@RequestMapping(value="/mapping/header", method=RequestMethod.GET, headers="FooHeader=foo")
public @ResponseBody String byHeader() {
System.out.println("Sono dentro byHeder()");
return "Mapped by path + method + presence of header! (MappingController)";
}
@RequestMapping(value="/mapping/header", method=RequestMethod.GET, headers="!FooHeader")
public @ResponseBody String byHeaderNegation() {
System.out.println("Sono dentro byHeaderNegation");
return "Mapped by path + method + absence of header! (MappingController)";
}
我不明白为什么这两个请求由两种不同的方法处理,因为两个链接都会生成指向同一文件夹的HTTP请求:“/mapping/header”
为什么第一个有标题,第二个没有
我可能遗漏了什么,你能帮我理解这件事吗
多谢各位
Andrea正如您可以在末尾的
src/main/webapp/WEB-INF/views/home.jsp
文件中找到的,显示按标题映射的链接正在使用Ajax将FooHeader
设置为foo
这就是调用这两个方法的方式
如果不设置标题(意味着一个简单的HTML链接),将调用方法ByHeaderNavigation
,但如果设置标题(在本例中使用Ajax),则将调用方法byHeader
,因为FooHeader=foo
为true
$("#byHeader").click(function(){
var link = $(this);
$.ajax({ url: this.href, dataType: "text", beforeSend: function(req) { req.setRequestHeader("FooHeader", "foo"); }, success: function(form) { MvcUtil.showSuccessResponse(form, link); }, error: function(xhr) { MvcUtil.showErrorResponse(xhr.responseText, link); }});
return false;
});