-1

我试图在一个 servlet 中创建一个 cookie,将其添加到 response() 并使用 DisaptcherServlet 将其转发到另一个 servlet,并尝试使用 request.getCookies() 检索 cookie。但这总是无效。

//Servlet one 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String userName = request.getParameter("username");
String password = request.getParameter("password");

Cookie cookie = new Cookie("name", "value");
cookie.setMaxAge(30);
response.addCookie(cookie);

if(userName.equals("username") && password.equals("*****")){

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Welcome");
requestDispatcher.forward(request, response);
}
else{
System.out.println("invalid credentials");
}
}

//welcome servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie []  cookie = request.getCookies();

if(cookie != null){
System.out.println("sucess");
}
else{
System.out.println("cookieis null");
}
}
4

1 回答 1

1

当你转发一个请求时,你基本上是在说“不,我不想处理这个请求,而是把它交给这个其他资源”。这意味着转发的请求使用与原始请求相同的请求和响应。

在您的示例 servlet 中,在响应上设置了一个 cookie,欢迎 servlet 无法访问,因为响应对象上没有 API 来获取 cookie。如果您想要这种模式 servlet,则应在请求对象上设置一个参数,然后欢迎 servlet 可以从请求对象中获取该参数。

于 2016-09-27T16:41:08.483 回答