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

时间:2016-09-27 07:19:00

标签: java servlets cookies requestdispatcher sessiontracking

我试图在一个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");
}
}

1 个答案:

答案 0 :(得分:1)

当您转发请求时,您基本上是在说#34;不,我不想处理此请求而是将其提供给其他资源而不是#34;。这意味着转发的请求使用与原始请求相同的请求和响应。

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