Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring,如何通过标头管理HTTP请求?_Java_Spring_Model View Controller_Http Headers_Httprequest - Fatal编程技术网

Java Spring,如何通过标头管理HTTP请求?

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>

在此期间,我将学习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="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;
});