繁体   English   中英

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

[英]Spring, how to manage HTTP Request by headers?

在此期间,我正在研究可从STS仪表板下载的Spring MVC Showcase示例

我怀疑与标头的HTTP请求映射的功能有关。

在展示示例中,我有以下2个链接:

        <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>

因此,正如您所看到的,单击第一个链接,我正在向“/ mapping / header”文件夹创建HTTP请求,然后单击第二个链接,我将向同一个“/ mapping / header”文件夹创建HTTP请求

现在,这些HTTP请求由我的控制器类中的两个方法管理。

第一个是通过以下方法处理:

@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文件中找到的那样,显示按标头映射的链接正在使用将FooHeader设置为foo Ajax。

这就是调用这两种方法的方法。

如果不设置页眉(意味着一个简单的HTML链接),该方法byHeaderNegation被调用,但是如果设置了标题(在这种情况下使用Ajax),则该方法byHeader被调用,因为FooHeader=footrue

$("#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;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM