我有一个Servlet A,在其中设置HTTP响应中的标头:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName=request.getParameter("userName");
String newUrl = "http://somehost:port/ServletB";
response.addHeader("REMOTE_USER", userName);
response.sendRedirect(newUrl);
}
现在在servlet B中,我试图获取在servlet A中设置的标头值:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userid = request.getHeader("REMOTE_USER");
}
但是这里的userid的值是null
。请让我知道我在这里想念的东西。
首先,您必须了解
response.sendRedirect(newUrl);
它为客户端(浏览器)302 HTTP代码响应提供了URL。然后,浏览器在该URL上发出单独的GET请求。而且该请求在第一个请求中没有标题。
因此,如果您需要将标头从Servlet A传递到Servlet B,则sendRedirect将不起作用。
如果您希望此代码起作用,请在Servlet A中使用RequestDispatcher(而不是sendRedirect)。同样,最好使用相对路径。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String userName=request.getParameter("userName");
String newUrl = "ServletB";
response.addHeader("REMOTE_USER", userName);
RequestDispatcher view = request.getRequestDispatcher(newUrl);
view.forward(request, response);
}
========================
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
String sss = response.getHeader("REMOTE_USER");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句