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