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