📅  最后修改于: 2021-01-09 12:41:10             🧑  作者: Mango
Cookie是一小段信息,可在多个客户端请求之间保留。
Cookie具有名称,单个值和可选属性,例如注释,路径和域限定符,最长期限和版本号。
默认情况下,每个请求都被视为一个新请求。在cookie技术中,我们通过来自servlet的响应添加cookie。因此,cookie存储在浏览器的缓存中。之后,如果用户发送了请求,则默认情况下将cookie与请求一起添加。因此,我们将用户识别为旧用户。
servlet中有两种cookie。
它仅对单个会话有效。每次用户关闭浏览器时都会将其删除。
对多个会话有效。用户每次关闭浏览器时都不会将其删除。仅在用户注销或注销时将其删除。
注意:Gmail使用cookie技术进行登录。如果您禁用Cookie,Gmail将无法使用。
javax.servlet.http.Cookie类提供使用cookie的功能。它为cookie提供了许多有用的方法。
Constructor | Description |
---|---|
Cookie() | constructs a cookie. |
Cookie(String name, String value) | constructs a cookie with a specified name and value. |
提供了Cookie类的一些常用方法。
Method | Description |
---|---|
public void setMaxAge(int expiry) | Sets the maximum age of the cookie in seconds. |
public String getName() | Returns the name of the cookie. The name cannot be changed after creation. |
public String getValue() | Returns the value of the cookie. |
public void setName(String name) | changes the name of the cookie. |
public void setValue(String value) | changes the value of the cookie. |
为了添加cookie或从cookie中获取值,我们需要其他接口提供的一些方法。它们是:public void addCookie(Cookie ck):HttpServletResponse接口的方法用于在响应对象中添加cookie。 HttpServletRequest接口的public Cookie [] getCookies():方法用于从浏览器返回所有cookie。
让我们看一下创建cookie的简单代码。
Cookie ck=new Cookie("user","sonoo jaiswal");//creating cookie object
response.addCookie(ck);//adding cookie in the response
让我们看一下删除cookie的简单代码。它主要用于注销或注销用户。
Cookie ck=new Cookie("user","");//deleting value of cookie
ck.setMaxAge(0);//changing the maximum age to 0 seconds
response.addCookie(ck);//adding cookie in the response
让我们看一下获取所有cookie的简单代码。
Cookie ck[]=request.getCookies();
for(int i=0;i"+ck[i].getName()+" "+ck[i].getValue());//printing name and value of cookie
}
在此示例中,我们将用户名存储在cookie对象中,并在另一个servlet中对其进行访问。众所周知,会话对应于特定用户。因此,如果您从太多具有不同值的浏览器中访问它,则会得到不同的值。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FirstServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response){
try{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String n=request.getParameter("userName");
out.print("Welcome "+n);
Cookie ck=new Cookie("uname",n);//creating cookie object
response.addCookie(ck);//adding cookie in the response
//creating submit button
out.print("");
out.close();
}catch(Exception e){System.out.println(e);}
}
}
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SecondServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response){
try{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Cookie ck[]=request.getCookies();
out.print("Hello "+ck[0].getValue());
out.close();
}catch(Exception e){System.out.println(e);}
}
}
s1
FirstServlet
s1
/servlet1
s2
SecondServlet
s2
/servlet2