Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 然后RequestDispatcher转发但不发送cookie_Java_Jsp_Servlets_Cookies - Fatal编程技术网

Java 然后RequestDispatcher转发但不发送cookie

Java 然后RequestDispatcher转发但不发送cookie,java,jsp,servlets,cookies,Java,Jsp,Servlets,Cookies,我对这里的cookies有意见。在webapp中,我使用jsp表单让用户登录。用户单击submit并进入LoginServlet。它是doPost方法,验证用户名和密码,如果正确,则添加cookie。然后它重定向到HomeServlet。但是,当我在HomeServlet上检查cookies时,除了jsessionID之外,我什么也得不到。代码是: Cookie userlastNameCookie = new Cookie("user_last_name", user.getLastName(

我对这里的cookies有意见。在webapp中,我使用jsp表单让用户登录。用户单击submit并进入LoginServlet。它是doPost方法,验证用户名和密码,如果正确,则添加cookie。然后它重定向到HomeServlet。但是,当我在HomeServlet上检查cookies时,除了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);
在家里,我有

@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我没有饼干。。 有人能帮忙吗?
我使用的是tomcat 8.0.18和java 1.7.75,而不是转发您应该使用的请求,将其重定向到Servlet。 您可以使用response.sendRedirect(“url”)


因为请求转发在服务器端内部传输请求,重定向请求会使客户端浏览器将请求与特定域的cookie一起发送到给定的url。

如果您尝试
setPath(“/App”)
呢?哦,删除
setDomain(…)
谢谢您的建议!!看起来很好用@bayou.io:我还删除了set域