gpt4 book ai didi

java - 读取 servlet 中的自定义 header

转载 作者:可可西里 更新时间:2023-11-01 17:13:04 25 4
gpt4 key购买 nike

我需要在 http response 中设置自定义 header ,并在需要时读取它们。我使用以下代码来读取 header 。

servlet1:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.addHeader("cust-header", "cust-value");
RequestDispatcher rd = request.getRequestDispatcher("servlet2");
rd.include(request, response);
}

servlet2:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(request.getHeader("cust-header"));
}

当我尝试读取自定义 header 值时,控制台显示“null”。为什么会这样?如何在需要时读取响应中设置的自定义 header ?

最佳答案

来自RequestDipatcher include method API doc :

[...] The ServletResponse object has its path elements and parameters remain unchanged from the caller's. The included servlet cannot change the response status code or set headers; any attempt to make a change is ignored. [...]

因此,如果您查看您的代码,您会在响应对象中设置 header ,但会尝试从请求中获取它。由于它们保持不变,因此无法正常工作。

在转发或包含重定向中将值从一个 servlet 传递到另一个的最常见方法是将其作为请求属性传递:

servlet1:

//set a request attribute
request.setAttribute("cust-header", "cust-value");
RequestDispatcher rd = request.getRequestDispatcher("servlet2");
rd.include(request, response);

servlet2:

System.out.println(request.getAttribute("cust-header"));

关于java - 读取 servlet 中的自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com