Java cookie设置与获取实例
web.xml:
<web-app>
<servlet>
<servlet-name>abc</servlet-name>
<servlet-class>SetCookie</servlet-class>
</servlet>
<servlet>
<servlet-name>pqr</servlet-name>
<servlet-class>ShowCookie</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>abc</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>pqr</servlet-name>
<url-pattern>/test2</url-pattern>
</servlet-mapping>
</web-app>
setcookie.java:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class SetCookie extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
//default maximum age is -1, indicating cookie applies only to current browsing session
res.setContentType("text/html");
Cookie c1 = new Cookie("ANDHRA PRADESH", "HYDERABAD");
Cookie c2 = new Cookie("TAMILNADU", "CHENNAI");
res.addCookie(c1);
res.addCookie(c2);
//c3 is valid for 5mins & c4 for 10mins, regardless of user quits browser, reboots computer
Cookie c3 = new Cookie("KARNATAKA", "BANGLORE");
Cookie c4 = new Cookie("BIHAR", "PATNA");
c3.setMaxAge(300);
c4.setMaxAge(600);
res.addCookie(c3);
res.addCookie(c4);
System.out.println("SUCCESSFUL IN SETTING COOKIES");
}
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
doGet(req, res);
}
};
showcookie.java:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ShowCookie extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter pw = res.getWriter();
String title = "Active Cookies";
pw.println("<html><head><title>" + title + "</title></head></body>");
pw.println("<table border=\"1\" align=\"center\">");
pw.println("<tr><th>Cookie Name</th><th>Cookie Value</th></tr>");
Cookie ck[] = req.getCookies();
if (ck != null) {
for (int i = 0; i < ck.length; i++) {
pw.println("<tr><td>" + ck[i].getName() + "</td><td>" + ck[i].getValue() + "</td></tr>");
}
} else {
System.out.println("NO COOKIES PRESENT");
}
pw.println("</table></body></html>");
}
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
doGet(req, res);
}
};
开发cookie的步骤:
- 创建一个cookie的对象。
Cookie ck=new Cookie (String, Object);
例如:
Cookie c1=new Cookie ("fno","10");
Cookie c2=new Cookie ("sno","20");
- 必须添加每个cookie作为响应的一部分(将cookie添加到响应对象)。例如:
res.addCookie (c1); res.addCookie (c2);
其中C1和C2是在步骤1中创建的cookie类对象,并且addcookie()是httpservletresponse interface中存在的实例方法。
- 为了获取cookie,我们必须使用httpservletRequest中存在的以下方法。
例如:
Cookie ck []=req.getCookies ();
if (ck!=null)
{
pw.println ("COOKIES ARE PRESENT");
}
else
{
pw.println ("COOKIES ARE NOT PRESENT");
}
- 为了获取cookie名称,cookie值和设置其年龄,我们必须使用以下方法:
public String getName (); public Object getValue (); public void setMaxAge (long sec); public long getMaxAge ();
方法1和2用于获取Cookie的名称和值。
方法3和4用于设置和获取Cookie的年龄。
Cookie的默认年龄将为-1,只有当前浏览会话时,浏览器关闭时,Cookie将无法使用,系统重新启动。
Cookie由服务器端程序编写,并将驻留在客户端。
例如:
Cookie c1=new Cookie (); c1.setMaxAge (24*60*60); //setting the cookie age for 24 hours. String s=c1.getName (); Object obj=c1.getValue ();
Cookie的缺点:
- 当我们通过转到工具删除驻留在客户端的cookie时 - Internet选项 - 删除浏览器的Cookie,我们无法维护客户端的身份。
- 有关Cookie的大小限制(即,每个Web应用程序允许20个cookie)。
- as和何时导致更多网络流量的Cookie,并且有可能失去服务器侧应用的性能。
Cookie是包含(钥匙,值)对形式的客户端的和平的和平。
键始终表示cookie名称和值表示cookie的值。
Cookie是根据HTTP协议规范开发的类,用于维护客户端的身份,它存在于名为javax.servlet.http的包中。
日期:2020-04-11 23:04:23 来源:oir作者:oir
