使用请求调度程序将请求从一个servlet转发到另一个servlet



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

//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");
}
}

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

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

最新更新