【问题标题】:When is the cookie created in Servlet?什么时候在 Servlet 中创建 cookie?
【发布时间】:2018-11-26 01:34:39
【问题描述】:

我正在学习 Servlet 和 cookie,但我有一个误解。不使用“new Cookie”可以创建cookie吗?

我知道用这个语句创建了一个 cookie:

Cookie ck = new Cookie("username",name);

以下语句用于在客户端浏览器发送cookie:

response.addCookie(ck);

但是我找到了一个应用程序,它没有上面的语句,它在我的浏览器中创建了一个 cookie。如果我不在代码中使用“新 Cookie”,是否会在创建新会话时创建 cookie?

这是代码:

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="Validate">
  User: <input type="text" name="user" /><br/>
  Password: <input type="password" name="pass" ><br/>
  <input type="submit" value="submit">
</form>
</body>
</html>

验证.java

package servlet.httpses;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class Validate
 */
@WebServlet("/Validate")
public class Validate extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Validate() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");

        String name = request.getParameter("user");
        String pass = request.getParameter("pass");

        if(pass.equals("1234")) {

            //creating a session
            HttpSession session = request.getSession();

            session.setAttribute("user", name);

            response.sendRedirect("Welcome");
        }
    }
}

Welcome.java

package servlet.httpses;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class Welcome
 */
@WebServlet("/Welcome")
public class Welcome extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Welcome() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        HttpSession session = request.getSession();

        String user = (String) session.getAttribute("user");

        out.println("Hello " + user);

        out.println("<br>Session ID in Request is from a Cookie: " 
        + request.isRequestedSessionIdFromCookie());

        out.println("<br> Session ID: " + session.getId());
        out.println("<br> Creation Time: " + new Date(session.getCreationTime()));
        out.println("<br>Last Accessed Time: " + new Date(session.getLastAccessedTime()));
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
}

在这种情况下,cookie 是什么时候创建的?不使用“new cookie”也可以创建cookie吗?

提前致谢!

【问题讨论】:

标签: java servlets cookies session-cookies


【解决方案1】:

您可以通过两种方式创建 cookie。

  1. 在服务器上创建一个 cookie 并将其发送给客户端

  2. 在客户端创建 cookie

当你使用新的cookie时,java会创建一个cookie对象并发送到客户端,客户端保存cookie。

另一方面,您可以在 JavaScript 的帮助下使用一些数据创建 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2012-03-21
    • 2019-11-18
    • 2010-09-11
    • 2019-06-13
    • 2014-02-07
    相关资源
    最近更新 更多