簡體   English   中英

response.addCookie()然后前進RequestDispatcher,但沒有cookie

[英]response.addCookie() then RequestDispatcher forward but no cookie

我在這里遇到關於cookie的問題。 在Webapp中,我使用jsp表單登錄用戶。用戶單擊Submit並進入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之外,我沒有得到任何cookie。有人可以幫忙嗎? 我正在使用tomcat 8.0.18和java 1.7.75

而不是轉發請求,您應該使用將其重定向到Servlet。 您可以使用response.sendRedirect(“ url”);

由於請求轉發會在服務器端內部傳輸請求,因此重定向請求會使客戶端瀏覽器將請求連同特定域的Cookie一起發送到給定的url。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM