`

Servlet操作Cookie说明

阅读更多


用到的类 javax.servlet.http.Cookie

构造cookie 的方法 :  new Cookie(键,值)
构造函数如下:
Cookie(java.lang.String name, java.lang.String value)


把cookie发送给客户端
HttpServletResponse.addCookie(javax.servlet.http.Cookie)


取得客户浏览器的cookie,返回的是数组
HttpServletRequest.getCookies()


getComment/setComment 

      获取/设置Cookie的注释。


getDomain/setDomain
  获取/设置Cookie适用的域。一般地,Cookie只返回给与发送它的服务器名字完全相同的服务器。使用这里的方法可以指示浏览器把Cookie返回给同一域内的其他服务器。注意域必须以点开始(例如.sitename.com),非国家类的域(如.com,.edu,.gov)必须包含两个点,国家类的域(如.com.cn,.edu.uk)必须包含三个点。


getMaxAge/setMaxAge
  获取/设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,即在用户关闭浏览器之前有效,而且这些Cookie不会保存到磁盘上。

若生存时间为负值,代表浏览器关闭Cookie即消失。生存时间为0,代表删除Cookie,生存时间为正数,代表Cookie存在多少秒。


getName/setName
  获取/设置Cookie的名字。本质上,名字和值是我们始终关心的两个部分。由于HttpServletRequest的getCookies方法返回的是一个Cookie对象的数组,因此通常要用循环来访问这个数组查找特定名字,然后用getValue检查它的值。


getPath/setPath
  获取/设置Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下的所有页面。这里的方法可以用来设定一些更一般的条件。例如,someCookie.setPath("/"),此时服务器上的所有页面都可以接收到该Cookie。


getSecure/setSecure
  获取/设置一个boolean值,该值表示是否Cookie只能通过加密的连接(即SSL)发送。


getValue/setValue
  获取/设置Cookie的值。如前所述,名字和值实际上是我们始终关心的两个方面。不过也有一些例外情况,比如把名字作为逻辑标记(也就是说,如果名字存在,则表示true)。


getVersion/setVersion
  获取/设置Cookie所遵从的协议版本。默认版本0(遵从原先的Netscape规范);版本1遵从RFC 2109 , 但尚未得到广泛的支持。

几个Cookie工具函数,获取指定名字的Cookie值
   该函数是ServletUtilities.java的一部分。getCookieValue通过循环依次访问Cookie对象数组的各个元素,寻找是否有指定名字的Cookie,如找到,则返回该Cookie的值;否则,返回参数中给出的默认值。getCookieValue能够在一定程度上简化Cookie值的提取。



cookie保存在哪里
在Windows 9X系统计算机中,Cookie文件的存放位置为C:\Windows\Cookies,在Windows NT/2000/ XP的计算机中,Cookie文件的存放位置为C:\Documents and Settings\用户名\Cookie文件夹。

--------------------------------

 

下面是代码,是直接从项目中实际代码

	/**
	 * 设置SSO认证标识(把用户名,密码 写入客户端浏览器的cookie),关闭浏览器后,cookie立即失效
	 * 
	 * @param response
	 *            HttpServletResponse
	 * @param userName
	 *            用户名
	 * @param password
	 *            密码
	 */
	public static void setReffer(final HttpServletResponse response, final String userName, final String password)
	{
		final String sSession = password + userName;  //密码是SHA1加密,长度为40个字符(160位)
		Cookie oItem;
		// 因为Cookie 中不允许保存特殊字符, 所以采用 BASE64 编码,CookieUtil.encode()是BASE64编码方法,略..
		oItem = new Cookie("SSO", CookieUtil.encode(sSession));
		oItem.setDomain(.google.com);  //请用自己的域
		oItem.setMaxAge(-1); //关闭浏览器后,cookie立即失效		
		oItem.setPath("/");
		response.addCookie(oItem);
	}

 

	/**
	 * 认证SSO标识(从客户端浏览器读入cookie, 并取得用户名、密码,不能取得时返回null)
	 * 
	 * @param request
	 * @return 返回从cookie中取得的用户名、密码,不能取得时返回null.String[0]中保存用户名,String[1]中保存密码
	 */
	public static String[] checkReffer(final HttpServletRequest request)
	{
		final Cookie[] oCookies = request.getCookies();
		if (oCookies != null)
		{
			for (final Cookie oItem : oCookies)
			{
				final String sName = oItem.getName();

				if (sName.equals("SSO"))
				{
					final String sSession = CookieUtil.decode(oItem.getValue()); //解码 CookieUtil.decode()是BASE64解码方法,略..
					if (sSession.length() > 40)
					{
						// 获得存储在 Cookies 中的用户名称和密码
						final String sUser = sSession.substring(40);
						final String sPass = sSession.substring(0, 40);
						final String[] strArr =
						{ sUser, sPass };
						return strArr; //返回用户名,密码
					}
				}
			}
		}
		return null;
	}

 

分享到:
评论

相关推荐

    Java Servlet API说明文档

    Java Servlet API是Java ...综上所述,Java Servlet API说明文档涵盖了Servlet技术的各个方面,对于理解和使用Servlet进行Web开发至关重要。通过深入学习这些内容,开发者可以有效地构建出高效、可扩展的Web应用程序。

    Java Web应用开发 50 课堂案例-应用Servlet读取Cookie数据.docx

    然后在第33行至第34行,通过`setMaxAge()`方法设置Cookie的生命周期。这里的`age`变量表示Cookie将在客户端存活的秒数,60*60*24*30表示30天。最后,通过`HttpServletResponse`的`addCookie()`方法(第35行)将更新...

    Session Cookie的HttpOnly和secure属性

    如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。 对于以上两个属性, 首先,secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,...

    Java Servlet API中文说明文档

    - **跨平台性**:Java Servlet具有良好的跨平台能力,可以在不同的操作系统和Web服务器上运行。 - **高效性**:相比于传统的CGI脚本,Servlet的性能更高,因为它只需要加载一次,之后可以直接调用其方法。 - **安全...

    Servlet实现用户自动登陆

    设置Cookie的有效期,通常设定为几天,以实现用户关闭浏览器后仍能自动登录的效果。 3. **响应设置**:将创建的Cookie添加到响应中,通过HttpServletResponse的addCookie方法将其发送回客户端(浏览器)。这样,当...

    JAVA servlet API说明文档

    Java Servlet API 说明文档是一份关于Java Servlet技术的权威文档,涵盖了servlet容器中各个接口及其方法的详细解释。Servlet API是Java EE(Java Platform, Enterprise Edition)规范的一部分,主要用于开发基于...

    Servlet+jsp.docx

    Cookie由服务器设置,浏览器保存。当浏览器访问同一个网站时,会自动携带Cookie。 ##### 3.2 Session Session是在服务器端存储用户会话信息的对象,可以通过`HttpServletRequest.getSession()`方法获取。 #### 四...

    09配置+servlet+高速缓存

    因为 Java Server Pages 文件被编译成 servlet,所以动态高速缓存功能对 Java Server Pages 文件的处理与对 servlet 的处理是一样的(特别说明的情况除外)。 过程 在管理控制台中,单击控制台导航树中的服务器 > ...

    Servlet Tutorial

    - API 层面:Servlet 提供了大量的接口和类,这些包括文档说明。 - 实现层面:Servlet 是一个接口,必须实现该接口才能创建任何 Servlet。 - 类层面:Servlet 是一个类,能够扩展服务器的功能并响应到来的请求,它...

    cookie机制

    例如,在Java中使用`javax.servlet.http.Cookie`类来操作Cookie,可以设置其名称、值、有效期等。在JavaScript中,通过`document.cookie`属性可以读写Cookie,但通常不推荐直接操作,因为属性值需要正确的编码和解码...

    java-servlet-api.doc

    Java Servlet API说明文档 绪言 这是一份关于2.1版JavaServletAPI的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。 谁需要读这份文档 这份...

    英文版servlet2.5帮助文档

    以下是对Servlet 2.5核心知识点的详细说明: 1. **Servlet生命周期**: - **初始化**:Servlet在首次请求时被加载,或者在web.xml中通过`<load-on-startup>`元素指定初始化顺序。 - **服务**:Servlet通过`...

    Test_dl.rar_cookie_cookie java_cookies_java cookie

    描述进一步说明了这个压缩包包含的信息,它提到了如何利用Cookie进行自动登录以及在Cookie中存储和读取值的操作。 在Web开发中,Cookie是一种小型文本文件,由服务器发送到用户的浏览器并存储在那里。它们主要用于...

    servlet入门配置

    - Servlet可以连接数据库,执行查询操作,并将结果返回给浏览器。需要使用JDBC(Java Database Connectivity)API,包括加载驱动、建立连接、执行SQL、获取结果集,并将其转换为HTML内容输出。 10. **总结和任务**...

    Servlet中文API文档

    Servlet中文API文档是Java Servlet API的2.1版本的详细说明,主要面向Servlet开发者和Servlet引擎的开发者。这个文档包含了两个关键的软件包,一个是针对HTTP协议的,另一个是通用的,不局限于HTTP,这样的设计使得...

    java cookie 读写,记住密码 自动登录

    - **HttpOnly**:设置Cookie的HttpOnly属性可以防止JavaScript脚本访问Cookie,减少XSS攻击风险。 - **Secure**:在HTTPS连接上设置Secure属性,确保Cookie仅通过安全通道传输。 - **限制大小和数量**:避免创建...

    JSP改造Cookie案例1

    下面是该案例的详细说明: 一、 记住用户名的实现 在这个案例中,我们使用了Servlet和Cookie来实现记住用户名的功能。当用户首次访问系统登录界面时,系统会显示一个登录表单,用户可以输入账户和密码,并选择是否...

    Cookie与Session机制.doc

    通过 request.getCookie()获取客户端提交的所有 Cookie(以 Cookie[] 数组形式返回),通过 response.addCookie(Cookie cookie)向客户端设置 Cookie。Cookie 对象使用 key-value 属性对的形式保存用户状态,一个 ...

    Cookie的存入和读取,并解决中文问题

    - `CookieProcess.java`: 这可能是一个Java类,用于处理Cookie的操作,包括创建、读取和设置Cookie的属性。 - `addCookies.jsp`: 这是一个JSP页面,它可能包含了向客户端发送Cookie的逻辑,通过调用`response.add...

    Servlet2.4 PDF

    - **Cookie 和 Session**:使用 Cookie 来识别客户端,利用 HttpSession 维护用户状态信息。 #### 三、技术文档概述 文档开头提到了联系信息,即技术反馈和业务咨询的邮箱地址,这表明 Sun Microsystems 对于接收...

Global site tag (gtag.js) - Google Analytics