`

Cookie和Session(会话编程)

阅读更多
Cookie是什么?
cookie是Web服务器通过浏览器保存在WWW用户端的硬盘上面的一个文本文件,当中包含了一些用户的信息。
cookie有什么作用?
cookie可以解决浏览器用户与服务器之间的无状态通信的问题。
cookie的代码实现:
构造器
Cookie(java.lang.String name, java.lang.String value) 
//构造一个具有指定名字和数值的 cookie. 

Cookie c = new Cookie("key","value")
//这里是创建了一个cookie对象,一般我们要需要设置cookie对象的有效期,如下:
c.setMaxAge(int expiry);
//参数是给一个整型的值,指定以秒计的cookie的最大存活时间。

还有很多的方法去设置cookie,根据需要去设置,具体的方法可以参考:
java EE 的帮助文档中的“javax.servlet.http.Cookie”这个类。
设置好了cookie以后要做最后一步,也是最重要的一步,就是要把cookie保存到客户端的硬盘上面,实现原理是:
通过服务器把这个cookie发送给客户端浏览器,然后客户端的浏览器就通过内置功能把cookie对象保存到本地硬盘上面,就完成了一个cookie对象的记录。具体调用:“HttpServletResponse”这个接口中的public void addCookie(Cookie cookie)方法。如:
response.addCookie(c);
//这下就彻底完成了cookie对象的保存,下次用户在来请求的时候,我们就可以查询或获得上次该用户请求的信息。

    虽然cookie可以有以上的优点,但是cookie也是有自己的缺点的,比如cookie保存的数据是文本文件,所以用户是可以篡改和删除的,另外一个缺点就是它保存数据是有限制的,最多4KB,所以给我们开发带来了很大的障碍。为了解决这些问题,为了更好的实现浏览器用户与服务器之间的无状态通信的问题,就推出了“会话(session)”。
会话是什么?
会话是记录浏览器与服务器多次交互想要保存的信息,更好解决了浏览器用户与服务器之间的无状态通信的问题。
那更好在那里呢?
主要是通过两点来反映:1.服务器会为每个来请求的客户端分配一块空间。2.这些信息不再是保存到浏览器用户的硬盘上了,而是保存到服务器端的内存里面,这样用户就不能直接性的删除或修改了。
会话(session)的代码实现:
HttpSession是一个接口,不能直接实例化,要得到它的实例,可以通过“HttpServletRequest”中的getSession()或getSession(boolean create)来得到,其中带参数的是传递一个boolean类型的值,当传false的时候,就不创建一个HttpSession,如果是传一个true值,就表示会创建一个新的会话,调用无参的getSession和带参数的getSession传true值是一样的。
以下是几个常用的方法,是属于HttpSession接口中的。
setAttribute(java.lang.String name, java.lang.Object value) 
         // 用指定的名字将一个对象绑定到一个会话。 
getAttribute(java.lang.String name) 
          //返回在本会话中绑定了指定名字的对象,当没有所要求的对象时,返回一个空值。
getAttributeNames() 
          //返回一个包含所有的绑定到会话的 对象名称的字符串对象的集合。 
invalidate() 
         //调用了这个方法以后会手动终止会话。 
getMaxInactiveInterval() 
         //设置会话的最大生存时间,以秒计时。  
removeAttribute(java.lang.String name) 
          //从会话中删除绑定到指定名字的对象。 
setMaxInactiveInterval(int interval) 
          //设置会话的最大生存时间,以秒计的时间。 

更多的方法可以参考:
“javax.servlet.http”包中的HttpSession接口。

会话结束。
有三种方式:
1.浏览器关闭。
2.主动关闭。
3.会话超时。
其中主动关闭是调用invalidate()这个方法 来实现的,而会话超时是通过调用setMaxInactiveInterval(int interval)这个方法来设置会话的生存时间来实现的。
下面谈谈会话的底层的实现方式:

会话的底层实现方式有两种:
1.cookie。
上面这幅图片表现的是cookie实现会话的底层原理。
由于不同的浏览器所保存的会话信息对象和地址空间是不同的,所以需要有一个类似于套接字编程中端口号的东西来区分不同的浏览器所保存的会话对象。在会话现实中是利用的一个session ID来区分的,见上面这幅图可知,服务器没产生一个session对象的时候就会给该对象生成一个session ID,由于这个ID需要长久的储存起来,所以最好的实现方式就是把他保存在客户端浏览器的cookie里面(储存的时候cookie的key叫做jsessionid,vlues当然就session ID了),这样当每次浏览器来请求的时候就会附加上这个session ID,然后服务器会根据这个ID查找,如果找到了,就根据ID可以获得ID对象。对应的值,这个值就是session对象的名称,既然获得了session对象的名称就可以获得该对象所储存的所有信息了,这就是利用cookie来实现会话的原理。
2.URL重写。
但是我们考虑一下,利用cookie实现会有一个问题,我们知道cookie是可以设置禁止的,如果cookie被用户禁止使用了,那怎么办?
为了解决这个问题,还提供了一种实现的方式那就是URL重写。
其实原理很简单,如果cookie被关闭了,那么我们可以在请求的URL后面跟一个jsessionid来区分不同的浏览器需要访问相应的会话对象。例如:
http://localhost:/8088/test/login.html;jsessionid=EUDJGH73KDF93SS2
不过注意的是这个jsessionid不是我们来写,而是服务器来帮我们,我们只需要调用HttpServletResponse 中已经封装好了的一个方法就可以了。方法代码:
encodeURL(java.lang.String url);
其中传的参数是你要重写的URL地址。
encodeRedirectURL(java.lang.String url)
这个方法也是重写URL地址的,作用是如果我们有一个重定向的URL,我们想重定向以后还是同一个会话,我们就可以采用这个方法来重写该重定向的URL。
2
2
分享到:
评论

相关推荐

    c#实现cookie和session的登陆实例

    在Web开发中,Cookie和Session是两种常见的用户身份验证机制,尤其在C#编程语言中,它们被广泛用于实现登录功能。本实例将探讨如何在C#环境下利用Cookie和Session来处理用户登录状态。 首先,我们要理解Cookie和...

    Cookie机制和Session机制

    ### Cookie机制和Session机制 #### 一、基本概念与背景 在现代Web应用中,为了实现用户认证、个性化设置等功能,通常需要在客户端与服务器之间维持一段时间内的状态信息。然而,HTTP协议本质上是无状态的,这意味...

    用java运用cookie和session

    在Java Web开发中,Cookie和Session是两种常用的技术,用于管理客户端和服务器之间的会话状态。它们在实现用户登录状态保持、个性化设置保存等方面发挥着重要作用。本篇将深入探讨如何在Java中有效地运用Cookie和...

    cookie和session学习的源码

    在IT行业中,尤其是在Java Web开发领域,Cookie和Session是两种非常重要的用户会话管理机制。它们主要用于跟踪用户状态,确保用户在浏览网站时能够保持登录状态,并提供个性化体验。下面将详细阐述Cookie和Session的...

    Session&Cookie;.rar

    在Web开发中,Session和Cookie是两种非常重要的用户状态管理工具。它们主要用于在HTTP协议无状态的特性下,保持用户的会话信息,实现用户在不同页面间的个性化体验和数据跟踪。下面将详细介绍这两种机制以及它们在...

    httpclient如何保持session会话模拟登录后的操作

    本篇文章将深入探讨如何使用HTTPClient来实现session会话的保持,并在模拟登录后执行后续的操作。 首先,了解HTTP协议的基础知识是非常重要的。HTTP协议是无状态的,这意味着每次请求之间没有任何关联。为了保持...

    会话编程实例代码

    在IT行业中,尤其是在Java Web开发领域,会话编程和Cookie管理是两个至关重要的概念。它们在构建动态、交互式的Web应用程序时发挥着核心作用。在这个实例代码中,我们将会探讨如何利用会话来实现购物车功能,以及...

    9--cookie&session;.docx

    在Web开发中,Cookie和Session是两种非常重要的用户会话管理技术。它们主要用来跟踪用户的状态,以便在多个页面间保持用户的登录信息或其他个性化设置。本文将深入探讨这两种技术及其在JavaEE企业全栈开发中的应用。...

    session与cookie的区别以及配置使用

    ### Session与Cookie的区别及配置使用 ...Cookie适用于需要在客户端持久存储少量数据的情况,而Session则更适合于需要在服务器端存储大量会话数据的场景。开发者应根据实际需求选择合适的技术方案。

    session编程(包括禁用cookie的情况)

    总之,Session编程在Cookie被禁用的情况下,需要采取替代策略来传递和恢复Session ID。开发者需要理解各种方法的优缺点,并根据实际应用场景选择合适的方式。在实际项目中,我们还需要关注安全问题,如防止Session...

    login for cookie or session or token

    - **持久性**:Cookie可以设置为持久化,即使浏览器关闭后仍保留,而Session和Token通常在会话结束时失效。 - **状态管理**:Cookie需要服务器记住每个用户的会话,而Token则可以实现无状态服务器。 - **跨域支持**...

    一次搞明白 Session、Cookie、Token,面试问题全搞定.pdf

    标题中的"Session、Cookie、Token"是网络编程中重要的概念,它们与HTTP协议的状态管理、身份验证和安全有着紧密的联系。在Web开发中,这三者通常用于处理用户的会话和验证用户身份。面试官通常会询问这些概念的原理...

    cookie编程

    Cookie编程是Web开发中的一个重要概念,它用于在客户端和服务器之间传递信息,特别是在维护用户状态时。这篇博客文章“Cookie编程”可能详细介绍了如何在实际项目中使用Cookie,以及其背后的原理和技术细节。 ...

    C# 对Cookie、Session、Cache的操作辅助类

    在开发Web应用时,Cookie、Session和Cache是三个非常关键的概念,它们都与数据存储和管理有关,但各有其特性和应用场景。本篇文章将深入探讨C#中对这三个概念的操作辅助类,以及如何利用它们来提升Web应用的性能和...

    cookie 会话的操作

    在IT领域,尤其是在Web开发中,Cookie和会话管理是至关重要的概念,它们涉及到用户身份验证、状态跟踪...通过学习提供的视频资料,学生们能够深入理解如何在实际项目中管理和操作Cookie与会话,提升他们的编程技能。

    session会话技术

    总的来说,session会话技术是Web开发中不可或缺的一部分,理解其原理和应用对于提升用户体验和保证应用安全至关重要。在实际项目中,应根据需求选择合适的会话管理策略,并注意资源优化,以提高系统的稳定性和性能。

    一个php类用于处理cookie会话.zip

    在PHP编程中,Cookie和Session是两种常见的用户状态管理机制,它们用来跟踪用户的状态和数据。这个名为"一个php类用于处理cookie会话"的压缩包文件提供了一个PHP类,帮助开发者更方便、高效地管理和操作Cookie和...

    PHP网站编程技术-PHP会话控制.doc

    《PHP网站编程技术-PHP会话控制》 ...通过这个实验,开发者可以深入理解Cookie和Session在网站开发中的应用,以及它们在用户身份验证和状态管理中的作用。同时,也学习到了密码加密处理的方法,增强了网站的安全性。

    ASP.NET中Cookie编程简明参考

    ASP.NET中的Cookie编程是Web应用程序中管理用户状态和数据传输的重要技术。Cookie主要用来存储用户信息,如登录状态、偏好设置等,同时也能用于跟踪用户行为。以下是对标题和描述中涉及的知识点的详细说明: 1. **...

Global site tag (gtag.js) - Google Analytics