java - Spring,如何通过 header 管理HTTP请求?

标签 java spring model-view-controller http-headers httprequest

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

我对通过 header 映射 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 请求由我的 Controller 类中的两个方法管理。

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

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

为什么第一个有header,第二个没有?

我可能遗漏了什么,你能帮我理解这件事吗?

非常感谢 安德里亚

最佳答案

您可以在 src/main/webapp/WEB-INF/views/home.jsp 中找到文件末尾,按标题显示映射的链接正在使用设置 FooHeader 的 Ajax至 foo .

这就是这两个方法的调用方式。

如果你没有设置标题(意味着一个简单的 HTML 链接),方法 byHeaderNegation被调用,但是如果您设置 Header(在本例中使用 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;
});

关于java - Spring,如何通过 header 管理HTTP请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13452228/

相关文章:

java - 对象锁定私有(private)类(class)成员 - 最佳实践? ( java )

java - 嵌套异常是java.lang.StackOverflowError

spring - 如何在 404 Tomcat 上重定向到外部网站

java - 如何在 spring Controller 中处理数据库特定异常

java - Spring:对我的 ThreadFactory 使用 "Lookup method injection"看起来不可扩展

java - 如何让两个子类在游戏中相互通信

java - 检索所有记录但控制台中仍显示错误

spring - 如何在 ActiveMq 嵌入式代理上启用 Web 控制台

iphone - 为 UIViewController 建立委托(delegate)

javascript - Web 应用程序的组件 - Express.js、Angular.js 和 MVC 混淆?