response.addCookie() 然后 RequestDispatcher 转发但没有 cookie
response.addCookie() then RequestDispatcher forward but no cookie
我的 cookie 有问题。在网络应用程序中,我使用 jsp 表单让用户登录。用户单击提交并进入 LoginServlet。它是 doPost 方法,验证用户名和密码,如果正确则添加 cookie。然后它重定向到 HomeServlet。但是,当我在主 servlet 上检查 cookie 时,除了 jsessionID 之外,我什么也得不到。代码是:
Cookie userlastNameCookie = new Cookie("user_last_name", user.getLastName());
userlastNameCookie.setDomain("127.0.0.1");
userlastNameCookie.setPath("/App/");
userlastNameCookie.setMaxAge(30*60);
Cookie userEmailCookie = new Cookie("user_email", user.getEmail());
userEmailCookie.setDomain("127.0.0.1");
userEmailCookie.setPath("/App/");
userEmailCookie.setMaxAge(30*60);
String userUniqueIdString= Integer.toString(user.getUniqueId());
Cookie userUniqueIdCookie = new Cookie("user_uuid",userUniqueIdString);
userUniqueIdCookie.setDomain("127.0.0.1");
userUniqueIdCookie.setPath("/App/");
userUniqueIdCookie.setMaxAge(30*60);
String userId = Integer.toString(user.getUserId());
Cookie userIdCookie = new Cookie("user_id",userId);
userIdCookie.setDomain("127.0.0.1");
//userIdCookie.setPath("/App/");
userIdCookie.setMaxAge(30*60);
Cookie userHashCookie = new Cookie("hash", user.getHash());
userHashCookie.setDomain("127.0.0.1");
//userHashCookie.setPath("/App/");
userHashCookie.setMaxAge(30*60);
resp.addCookie(usernameCookie);
resp.addCookie(userfirstnameCookie);
resp.addCookie(userlastNameCookie);
resp.addCookie(userEmailCookie);
resp.addCookie(userUniqueIdCookie);
resp.addCookie(userIdCookie);
resp.addCookie(userHashCookie);
//response.sendRedirect("HomeControllerServlet");
RequestDispatcher dsp = req.getRequestDispatcher("HomeServlet");
dsp.forward(req, resp);
在家庭 Servlet 上我有
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for(Cookie cookie : cookies)
{
System.out.println("Cookie is "+cookie.getName()+" "+cookie.getValue());
}
}
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
if (cookies != null) {....}
但是除了 JSESSIONID 之外,我没有得到任何 cookies..
谁能帮忙?
我正在使用 tomcat 8.0.18 和 java 1.7.75
您应该使用将请求重定向到您的 Servlet 而不是转发请求。
你可以使用 response.sendRedirect("url");
因为请求转发在服务器端内部传输请求,重定向请求使客户端浏览器向给定的 url 连同特定域的 cookie 发出请求。
我的 cookie 有问题。在网络应用程序中,我使用 jsp 表单让用户登录。用户单击提交并进入 LoginServlet。它是 doPost 方法,验证用户名和密码,如果正确则添加 cookie。然后它重定向到 HomeServlet。但是,当我在主 servlet 上检查 cookie 时,除了 jsessionID 之外,我什么也得不到。代码是:
Cookie userlastNameCookie = new Cookie("user_last_name", user.getLastName());
userlastNameCookie.setDomain("127.0.0.1");
userlastNameCookie.setPath("/App/");
userlastNameCookie.setMaxAge(30*60);
Cookie userEmailCookie = new Cookie("user_email", user.getEmail());
userEmailCookie.setDomain("127.0.0.1");
userEmailCookie.setPath("/App/");
userEmailCookie.setMaxAge(30*60);
String userUniqueIdString= Integer.toString(user.getUniqueId());
Cookie userUniqueIdCookie = new Cookie("user_uuid",userUniqueIdString);
userUniqueIdCookie.setDomain("127.0.0.1");
userUniqueIdCookie.setPath("/App/");
userUniqueIdCookie.setMaxAge(30*60);
String userId = Integer.toString(user.getUserId());
Cookie userIdCookie = new Cookie("user_id",userId);
userIdCookie.setDomain("127.0.0.1");
//userIdCookie.setPath("/App/");
userIdCookie.setMaxAge(30*60);
Cookie userHashCookie = new Cookie("hash", user.getHash());
userHashCookie.setDomain("127.0.0.1");
//userHashCookie.setPath("/App/");
userHashCookie.setMaxAge(30*60);
resp.addCookie(usernameCookie);
resp.addCookie(userfirstnameCookie);
resp.addCookie(userlastNameCookie);
resp.addCookie(userEmailCookie);
resp.addCookie(userUniqueIdCookie);
resp.addCookie(userIdCookie);
resp.addCookie(userHashCookie);
//response.sendRedirect("HomeControllerServlet");
RequestDispatcher dsp = req.getRequestDispatcher("HomeServlet");
dsp.forward(req, resp);
在家庭 Servlet 上我有
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for(Cookie cookie : cookies)
{
System.out.println("Cookie is "+cookie.getName()+" "+cookie.getValue());
}
}
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
if (cookies != null) {....}
但是除了 JSESSIONID 之外,我没有得到任何 cookies.. 谁能帮忙? 我正在使用 tomcat 8.0.18 和 java 1.7.75
您应该使用将请求重定向到您的 Servlet 而不是转发请求。 你可以使用 response.sendRedirect("url");
因为请求转发在服务器端内部传输请求,重定向请求使客户端浏览器向给定的 url 连同特定域的 cookie 发出请求。