`

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;
	}

 

分享到:
评论

相关推荐

    Session Cookie的HttpOnly和secure属性

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

    09配置+servlet+高速缓存

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

    java-servlet-api.doc

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

    How Tomcat Works: A Guide to Developing Your Own Java Servlet Container

    说明:10分虽然有点高 但东西值 重点是 我也只想搞点分数下东西 谢谢支持 目录 I 简介 1 概览 1 适合读者 1 servlet容器是如何工作的 1 catalina结构图 1 tomcat的版本4和版本5 2 章节简介 2 第1章 一个简单的Web...

    1javaweb上机报告.doc

    (1)判断是否是首次访问:如果cookie里面有时间,说明就不是第一次访问。 (2)如果是第一次访问,创建cookie,保存时间,把这个cookie回写到浏览器端。 (3)如果不是第一次访问,把时间回写到浏览器,记住当前...

    J2EE应用开发详解

    57 4.3.7 Servlet协作 57 4.3.8 Filter 58 4.4 使用Servlet处理客户端请求 58 4.5 会话跟踪 61 4.5.1 使用Cookie进行会话跟踪 61 4.5.2 使用URL重写进行会话跟踪 62 4.5.3 使用隐藏表单域进行会话跟踪 63 4.6 小结 ...

    java面试题大全--java基础,struts,spring,ejb等

    4.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。 5.列出Jsp中包含外部文件的方式,两者有何区别。 6.说明Jsp中errorPage的作用,应用范围。 7.介绍在Jsp中如何使用JavaBeans。 8.简单介绍JSP...

    千方百计笔试题大全

    152、如何设置cookie在某一时间后过期? 37 153、如何获得当前的sessions数? 37 154、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 37 155、对一个JSP页,如果多个客户端同时请求它,同步可能吗...

    java面试宝典

    152、如何设置cookie在某一时间后过期? 37 153、如何获得当前的sessions数? 37 154、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 37 155、对一个JSP页,如果多个客户端同时请求它,同步可能吗...

    java 面试题 总结

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    超级有影响力霸气的Java面试题大全文档

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    SpringMVC-Mybatis-Shiro-redis-master 权限集成缓存中实例

    上面配置是去掉了 Session 的存储Key 的作用域,之前设置的.itboy.net ,是写到当前域名的 一级域名 下,这样就可以做到N 个 二级域名 下,三级、四级....下 Session 都是共享的。 <!-- 用户信息记住我功能的...

    Java语言基础下载

    获取Cookie 565 HTTP响应报头--Response 566 会话管理 566 Servlet过滤器 569 Servlet监听器 576 内容总结 579 独立实践 580 第二十九章: Jsp 技术 583 学习目标 583 JSP介绍 584 JSP语法 584 模板元素 588 指令...

    how-tomcat-works

    说明:10分虽然有点高 但东西值 重点是 我也只想搞点分数下东西 谢谢支持 目录 I 简介 1 概览 1 适合读者 1 servlet容器是如何工作的 1 catalina结构图 1 tomcat的版本4和版本5 2 章节简介 2 第1章 一个简单的Web...

    Lotus.Domino.Web编程

    译者序 前言 第1章 Domino Web开发综述 1 1.1 为什么使用Domino 1...11.4.4 Cookie-Setting Servlet 293 11.4.5 小服务程序和Netes Java类 298 11.4.6 最后一点说明 299 参考信息 300 本章小结 300 附录 Domino URL 301

    dominoWEB编程

    译者序 前言 第1章 Domino Web开发综述 1 1.1 为什么使用Domino 1...11.4.4 Cookie-Setting Servlet 293 11.4.5 小服务程序和Netes Java类 298 11.4.6 最后一点说明 299 参考信息 300 本章小结 300 附录 Domino URL 301

    java面试题

    26. 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。 14 27. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? 14 28. JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 15 29. ...

    JAVA面试题最全集

    描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。 5.列出Jsp中包含外部文件的方式,两者有何区别。 6.说明Jsp中errorPage的作用,应用范围。 7.介绍在Jsp中如何使用JavaBeans。 8.简单介绍...

    EL表达式 (详解)

    2--EL表达式可操作常量 变量 和隐式对象. 最常用的 隐式对象有${param}和${paramValues}. ${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组 值.pageScope表示页面范围的变量....

Global site tag (gtag.js) - Google Analytics