2016-09-27 79 views
-1

我试图在一个servlet中创建一个cookie,将它添加到response()并使用DisaptcherServlet将其转发到另一个servlet,并尝试使用request.getCookies( )。但是这总是出现为空。使用请求调度程序将请求从一个servlet转发到另一个

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

回答

1

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

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

相关问题