Java 未在servlet中的请求中插入自定义标头

Java 未在servlet中的请求中插入自定义标头,java,servlets,http-headers,Java,Servlets,Http Headers,有一个第三方应用程序需要通过自定义http头获取信息,所以我编写了一个简单的测试应用程序,创建这个头,然后重定向到一个列出所有头的页面 生成servlet代码段的标头为: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain");

有一个第三方应用程序需要通过自定义http头获取信息,所以我编写了一个简单的测试应用程序,创建这个头,然后重定向到一个列出所有头的页面

生成servlet代码段的标头为:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/plain");
    response.setHeader("cust-header", "cust-val");
    response.sendRedirect("header.jsp");
}
另一方面,header.jsp中的相关代码是:

<%
    Enumeration enumeration = request.getHeaderNames();
    while (enumeration.hasMoreElements()) {
    String string = (String)enumeration.nextElement();
    out.println("<font size = 6>" +string +": " + request.getHeader(string)+ "</font><br>");
    }
    %>
就好像从未插入自定义标题一样。我怎样才能修好它


感谢通过重定向您基本上是在指示客户端(webbrowser)启动一个全新的HTTP请求。一个全新的请求也意味着一个全新的响应。将其替换为向前:

request.getRequestDispatcher("header.jsp").forward(request, response);
或者,如果您确实想在重定向请求中使用它,那么创建一个映射到
/header.jsp
过滤器
,并相应地修改报头

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    ((HttpServletResponse) response).setHeader("foo", "bar");
    chain.doFilter(request, response);
}

还要注意,您在
header.jsp
中显示的是请求头,而不是响应头。由于没有可用于显示响应头的直接API,因此您希望使用外部HTTP头嗅探工具(如面板)或。

感谢您的回复;我将代码更改为:response.setContentType(“text/html;charset=UTF-8”);response.setHeader(“cust header”、“cust val”);getRequestDispatcher(“header.jsp”).forward(请求、响应);但是自定义头仍然没有列在头中。您列出的是
请求
头,而不是
响应
头。我建议用Firebug来检查它们。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    ((HttpServletResponse) response).setHeader("foo", "bar");
    chain.doFilter(request, response);
}