Servlet程序应用和实例之使用Cookie简析
2010-02-23 10:31
330 查看
Servlet程序应用和实例之使用Cookie呢,我们首先来看看Cookie,Cookie是一小块可以嵌入HTTP请求和响应的数据。它在服务器上产生,并作为响应头域的一部分返回给客户。浏览器在收到有Cookie的响应后,会把Cookie的内容以"关键字/值"的形式写入到一个专为存放Cookie的文本文件中。浏览器会把Cookie的信息与请求发送给服务器,这样服务器就可以再次读取Cookie中存放的数据了。Cookie可以对有效期进行设置,浏览器不会把过期的Cookie发送给服务器。
Servlet API提供了一个Cookie类,封装了对Cookie的基本操作。如下所示。
java.lang.Object.javax.servlet.http.Cookie
public class Cookie extends Object implements Cloneable
Cookie类的方法如表1所示。
实例:使用Cookie的Servlet程序
下面的程序示例14-6就是对Cookie的基本运用。
【程序源代码】
相应的配置文件web.xml的内容如下:
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﹥ " + "﹤title﹥阅微草堂﹤/title﹥ " + "﹤/head﹥ " + "﹤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﹥
相关文章推荐
- Servlet程序应用和实例之使用Cookie简析
- 在Servlet程序中使用Cookie
- Android深入浅出系列之实例应用—程序运行进度提示条应用ProgressBar和Handler的使用
- 使用微信小程序开发弹出框应用实例详解
- Servlet程序开发--实例操作:MVC设计模式应用
- Android深入浅出系列之实例应用—程序运行进度提示条应用ProgressBar和Handler的使用
- Android深入浅出系列之实例应用—程序运行进度提示条应用ProgressBar和Handler的使用
- Visual Studio 2017开发linux程序使用实例及原理简析
- 关于linux驱动(应用)程序头文件使用
- Servlet第五课:Cookie的使用
- JavaWeb -- Cookie应用实例 -- 购物历史记录
- ServletConfig读取web.xml文件的应用实例
- Cookie多应用共享使用
- vue2.x中vuex的使用方法及应用时的项目文件结构设计以完整demo实例解释
- 微信小程序记账应用实例课程(完结)——对接服务端账目CRUD
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之五
- Android应用Design Support Library完全使用实例
- 使用进程互斥实现WinForm程序只运行一个实例(VB.Net)
- MOSS 2007 应用随笔(19)-- 使用SPEventHandler事件处理程序(三)在文档库中应用事件处理程序
- MOSS 2007 应用随笔(20)-- 使用SPEventHandler事件处理程序(四)使事件处理程序具有通用性