Cookie是存储在客户端计算机上的文本文件,并保留了各种跟踪信息,Java Servlet支持 HTTP Cookie。识别返回用户包括3个步骤:
(1)服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。
(2)浏览器将这些信息存储在本地计算机上,以备将来使用。
(3)当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户。
Cookie通常设置在 HTTP 头信息中(虽然 JavaScript 也可以直接在浏览器上设置一个 Cookie)。设置 Cookie的Servlet会发送如图3.17所示的头信息:
图3.17 Cookie设置在HTTP头信息
Set-Cookie 头包含了一个名称值对、一个GMT(格林尼治时间)日期、一个路径和一个域。名称和值会被 URL 编码。expires 字段是一个指令,告诉浏览器在给定的时间和日期之后“忘记”该 Cookie。
如果浏览器被配置为存储Cookie,它将会保留此信息直到日期到期。如果用户的浏览器指向任何匹配该Cookie 的路径和域的页面,它会重新发送Cookie 到服务器。浏览器的头信息如图3.18所示。Servlet或者JSP就能够通过request.getCookies()访问 Cookie,该方法将返回一个Cookie对象的数组。Sarvlet中操作lookie时常用方法如表3.2所示。
图3.18 请求包含Cookie头信息
表3.2 Servlet中操作Cookie时常用的方法
【例3.4】记住登录用户名及密码。(www.xing528.com)
(1)新建名称为chapter3_cookie的Web工程,在WebContent目录下新建login.jsp和welcome.jsp页面;在src目录下新建类名为CookieServlet的Servlet并覆盖doPost()方法。
login.jsp页面内容:
Welcome.Jsp页面内容:
(2)部署工程到Tomcat,然后启动Tomcat。在浏览器的地址栏中输入http://localhost:8080/chapter3_cookie/login.jsp,如图3.19所示。
图3.19 Cookie运行结果
程序说明:
首先访问login.jsp页面时,通过JSP内置对象request读取Cookie,判断是否存在名称为loginName和password的Cookie,由于是第一次访问login.jsp页面,因此不存在这两个cookie,所以用户名和密码需要录入,并单击了记住用户名和密码,单击登录按钮提交到CookieServlet的doPost方法处理。在doPost方法中首先读取了表单的用户名、密码以及记住用户名和密码的值。判断用户名和密码是否等于admin,如果等于则将登录用户名保存到session中,然后再判断表单的“记住用户名及密码”的复选框是否为选中状态,如果为选中状态,则新建两个Cookie对象分别用来保存用户名和密码并发送到浏览器。最后通过请求重定向将页面转向到welcome.jsp页面,在welcome.jsp页面中获取到session保存的登录用户名,并通过JSP表达式显示在浏览器。
当第二次打开login.jsp页面,由于浏览器已经保存有用户名及密码的Cookie,则读取到这些值,并重构JSP表达式显示在表单输入框中。所以第二次在访问login.jsp页面时,用户名和密码的值自动填充到表单输入框中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。