Servlet程序应用和实例之使用Cookie呢,我们首先来看看Cookie,Cookie是一小块可以嵌入HTTP请求和响应的数据。它在服务器上产生,并作为响应头域的一部分返回给客户。浏览器在收到有Cookie的响应后,会把Cookie的内容以"关键字/值"的形式写入到一个专为存放Cookie的文本文件中。浏览器会把Cookie的信息与请求发送给服务器,这样服务器就可以再次读取Cookie中存放的数据了。Cookie可以对有效期进行设置,浏览器不会把过期的Cookie发送给服务器。
黟县网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
Servlet API提供了一个Cookie类,封装了对Cookie的基本操作。如下所示。
java.lang.Object.javax.servlet.http.Cookie
public class Cookie extends Object implements Cloneable
Cookie类的方法如表1所示。
- 表 1 Cookie类的方法
- 方 法 意 义
- Cookie(String, String) 生成一个有名和值的Cookie
- clone() 返回当前对象的一个拷贝
- getComment() 返回描述该Cookie的注释,没有就为空
- getDomain() 返回该Cookie的域名
- getMaxAge() 返回该Cookie的最大寿命
- getName() 返回该Cookie的名字
- getPath() 返回使用该Cookie的所有URL前缀
- getSecure() 返回该Cookie的安全标志
- getValue() 返回该Cookie的值
- getVersion() 返回该Cookie的版本
- setComment(String) 设置描述该Cookie的注释
- setDomain(String) 设置该Cookie的域名
- setMaxAge(int) 设置该Cookie的最大寿命
- setPath(String) 设置该Cookie只能被从使用该URL前缀的请求提出
- setSecure(boolean) 设置该Cookie的安全标志
- setValue(String) 设置该Cookie的值
- setVersion(int) 设置该Cookie所使用的协议的版本号
实例:使用Cookie的Servlet程序
下面的程序示例14-6就是对Cookie的基本运用。
【程序源代码】
- // ==================== Program Description ======================
- // 程序名称:示例14-6: CookieCounter.java
- // 程序目的:编写Cookie的Servlet程序
- // ==========================================================
- package test.cookie;
- import java.io.*;
- import java.util.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class CookieCounter extends HttpServlet {
- public void init(ServletConfig config) throws ServletException {
- super.init(config);
- }
- public void service(HttpServletRequest request,
- HttpServletResponse response) throws
- IOException {
- boolean cookieFound = false;
- Cookie thisCookie = null;
- response.setContentType("text/html;charset=gb2312;");
- PrintWriter out = response.getWriter();
- Cookie[] cookies = request.getCookies();
- if (cookies != null){
- for (int i = 0; i ﹤ cookies.length; i++) {
- thisCookie = cookies[0];
- if (thisCookie.getName().equals("CookieCount")) {
- cookieFound = true;
- break;
- }
- }
- }
- if (cookieFound == false) {
- thisCookie = new Cookie("CookieCount", "1");
- thisCookie.setMaxAge(10);
- response.addCookie(thisCookie);
- }
- out.println("﹤html﹥﹤head﹥\n" +
- "﹤title﹥阅微草堂﹤/title﹥\n" +
- "﹤/head﹥\n" +
- "﹤body﹥﹤p﹥﹤font color=red﹥" +
- "﹤center﹥﹤h3﹥阅微草堂﹤/h3﹥﹤/center﹥﹤/font﹥");
- out.println("﹤p﹥欢迎来到阅微草堂!﹤/p﹥");
- if (cookieFound) {
- int cookieCount = Integer.parseInt(thisCookie.getValue());
- cookieCount++;
- thisCookie.setValue(String.valueOf(cookieCount));
- thisCookie.setMaxAge(10);
- response.addCookie(thisCookie);
- out.println("﹤p﹥这是您在近" + 10 *
- (Integer.parseInt((thisCookie.getValue()))-1)
- + "秒钟内第 " + thisCookie.getValue() + " 次光临寒舍!﹤/p﹥");
- }
- else {
- out.println( "﹤p﹥您至少已经10秒钟没有光临寒舍了!﹤/p﹥");
- }
- out.println("﹤/body﹥﹤/html﹥");
- }
- }
相应的配置文件web.xml的内容如下:
- ﹤?xml version="1.0" encoding="UTF-8"?﹥
- ﹤!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//
- DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"﹥
- ﹤web-app﹥
- ﹤servlet﹥
- ﹤servlet-name﹥CookieCounter﹤/servlet-name﹥
- ﹤servlet-class﹥test.cookie.CookieCounter﹤/servlet-class﹥
- ﹤/servlet﹥
- ﹤servlet-mapping﹥
- ﹤servlet-name﹥CookieCounter﹤/servlet-name﹥
- ﹤url-pattern﹥/CookieCounter﹤/url-pattern﹥
- ﹤/servlet-mapping﹥
- ﹤/web-app﹥
【程序注解】
本例是在Resin 2.1.8服务器下调试运行的。首先在webapps目录下建一个名为cookie的Web应用。Servlet编译生成的class文件放在cookie/WEB-INF/classes/test/cookie目录下,web.xml文件直接放在cookie/WEB-INF目录下。由于web.xml中url-pattern的配置为"/CookieCounter",所以在浏览器中输入"http://localhost:8080/cookie/CookieCounter"即可访问到该Servlet。
下面对源程序做一简单分析。在service()方法中,用getCookies()函数获得客户端的Cookies,查找是否有名为"CookieCount"的Cookie。如果不存在就生成一个Cookie,名称为"CookieCount",值为"1"(thisCookie = new Cookie("CookieCount", "1")),并指定了该Cookie的最大寿命为10秒钟(setMaxAge(10)),然后将该Cookie发送给客户端(addCookie())。如果Cookie已经存在,就将Cookie的值加1之后再发送给客户端。
这样,如果客户端第一次访问CookieCounter Servlet,或者两次访问之间的时间间隔超过了10秒,就将看到如图14-8(a)所示的输出结果。如果客户端在Cookie的生命周期结束之前连续访问该Servlet,则Cookie的值将不断增加。如图14-8(b)所示的就是在10秒钟内连续访问两次Servlet时的输出结果。
Servlet程序应用和实例之使用Cookie的基本情况就是这样了,希望对你在实际操作有所帮助。
分享名称:Servlet程序应用和实例之使用Cookie简析
网站URL:http://www.shufengxianlan.com/qtweb/news48/112848.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联