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,并且有可能失去服务器侧应用的性能。
servlet Cookie

Cookie是包含(钥匙,值)对形式的客户端的和平的和平。
键始终表示cookie名称和值表示cookie的值。

Cookie是根据HTTP协议规范开发的类,用于维护客户端的身份,它存在于名为javax.servlet.http的包中。

日期:2020-04-11 23:04:23 来源:oir作者:oir