抽出した後、チェックを整理
一般的なセッションクッキーと利用者の身元を追跡するために使用されるブラウザ
ストレージのセッション
1.クッキー:クッキーを使用することができるセッションIDを保存するため、サーバーへのブラウザことができ、自動的にJSESSIONIDの相互作用の間に。
クッキーは、クライアントの要求がJSESSIONIDが含まれていない場合に、サーバがでrequest.getSession(呼び出しを生成)と、クライアントに渡された場合、クライアント要求はJSESSIONIDが含まれている場合、レスポンスヘッダには、クッキー、クッキーを設定した情報が含まれていますサーバがでrequest.getSession(呼び出したとき、彼らは返すように見つけることができれば、オブジェクトを見つけるか、単に同じJSESSIONID再生成を実現していなかったJSESSIONIDに応じて)行われます。直接またはURLのAJAXリクエストを閲覧JSESSIONIDにクライアントクッキーを生成しています。
2. URL書き換え:クッキーは、クッキーが無効になっているとき、まだ戻ってサーバーにセッションIDにできるようにするために他のメカニズムが存在する必要があり、無効とみなすことができるとして、しばしば使用される技術は、URLの書き換えはセッションIDですと呼ばれていますURLパスに付加された、二つの追加の方法があり、一つはURLパスのような付加的な情報であり、他方は、URLに付加されたクエリ文字列としてです。インタラクティブネットワークのコースが状態のままを通して、それが戻って要求することができる各クライアントのパスにセッションIDが含まれている必要があります。
urlパラメータを渡すとJSESSIONID一般的な方法は、引数が続くが、バックURLに続かないよう、違う「「?」;」分離すること。ユーザーは、私たちがセッションを使用するようにJSESSIONIDを渡すことができたときにクッキーを無効にするが、JSESSIONIDが戻ってURLをパラメータとして渡されたすべての時間を必要とするようにします。response.encodeURL()とresponse.encodeRedirectURL():これは、太陽は物事が非常に簡単にする二つの方法を提供してくれ、非常に面倒です。これらの2つの方法は、クッキーが無効になっ意志JSESSIONID URLが解析される場合は、入手可能であり、指定されたURLの後ろに接続されているかどうかを決定します、JSESSIONIDを見つけていない場合は、自動的に私たちが生成するのに役立ちます。
わずかに異なる論理JSESSIONIDを含めるかどうかを決定する際にこれらの2つの方法の間の差、。response.sendRedirect()を呼び出す前に、のencodeRedirectURL()メソッドを呼び出す必要があります。または、セッション情報を失う可能性があります。次のようなこれらの2つの方法を使用する方法; Response.sendRedirect(response.encodeURL( "/ XX / xx.jspを")) 。クッキーが無効になっていない場合、我々は、ブラウザのアドレスバーのアドレスでご覧クッキーが無効になっている場合、我々は/xx/xx.jsp;jsessionid=L7bZL7bZL7bZL7bZL7bZが表示されます、/xx/xx.jspです。だから、慎重に、我々はプログラム内の各ジャンプのURLにこれらの2つの方法を使用する必要があり、セッションの可用性を確保します。
セッションの作成と削除
セッションの作成
1)JSPの、現在のページがウェブブラウザアプリケーションにアクセスする場合は、最初のリソースページであり、ページプロパティがtrueのJSPはセッションを指定しました
現在のブラウザは、Webアプリケーションの最初のリソースにアクセスする場合2)サーブレットの場合、サーブレットは、でrequest.getSession()またはでrequest.getSessionを(真)に作成を使用として
セッションの削除
1)コールはsession.invalidate()メソッド
2)アンインストールWebアプリケーション
3)のHttpSessionの有効期限を越えました
セッションタイムアウトの管理
WEBサーバは、現在のクライアントのブラウザが訪問していきますかどうかを判断することができない、クライアントは、顧客が残っている場合でも、ブラウザがそのように閉じているかどうかを検出したり、ブラウザを閉じ、だけでなく、前にWEBサーバに対応するHttpSessionオブジェクトを保持し、することはできません。
時間が経つにつれて、常に新しいアクセスクライアント、WEBサーバのメモリは、したがって、HttpSessionオブジェクトを大量に蓄積されます追加して、もはや使用されていない、そして最終的にはサーバがメモリ不足になります。
WEBサーバー、クライアントが一定の期間内に後続の要求を発行しない場合、クライアントは、アクセスに続くかどうかを判断するために、「タイムアウト制限」アプローチ、WEBサーバは、クライアントがクライアントで終わる、その活動を停止したことを信じていますHttpSessionのセッションと、対応するオブジェクトがごみになります。
クライアントブラウザのタイムアウト、WEBサーバは、これは新しいセッションの始まりであると考えている場合は、アクセス要求は、再び、それは新しいHttpSessionオブジェクトを作成し、新しいセッション識別番号を割り当てます。
セッションのタイムアウト間隔がweb.xmlファイルを提供(TomcatサーバやWebアプリケーション)のファイルであってもよいし、そのデフォルト値はServletコンテナによって定義されます。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Session 缺点
- session 和 cookie是同一类型,如果用户将浏览器设置为不兼容任何 cookie,那么该用户就无法使用 Session变量,也不能用 cookie存储信息
- 分布式情况下session共享需要特别处理
Cookie概述
Cookie 译为小型文本文件或者小甜饼,web 应用程序利用 Cookie 在客户端缓存服务器端文件。Cookie 是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端在下一次访问服务器端时,服务器端可以获取到客户端 cookie 缓存文件。
cookie 可以由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储 cookie。客户端再次访问服务端时,存储的 cookie 会保存在请求协议中,服务端可以获取上次存储的缓存文件内容。
Cookie可以通过浏览器和服务器端生成, 存储在 http 请求头里面。
Cookie 的缺点
- 多人公用一台计算机(导致用户名密码不安全)
- Cookie 被删除时,部分信息可能出错
- Cookie 会被附加在每次 http 请求协议中,增加流量
- Cookie 使用明文传递,安全性低
- 大小受限
- Cookie 可以被用户禁用,禁用后系统中需要使用 cookie 的地方就不能用了
sessionStorage 和 localStorage
HTML5中与本地存储相关的两个重要内容:web storage 与本地数据库。其中,web storage 存储机制是对 HTML4 中 cookie 存储机制的一个改善。由于 cookie 存储机制有很多缺点,HTML5不再使用它,转而使用改良后的 web storage 存储机制。本地数据库是 HTML5 新增的一个功能,使用它可以在客户端本地建立一个数据库,原本必须保存在服务端数据库中的内容现在可以直接保存在客户端本地,这大大减轻了服务器端的负担,同时也加快了访问数据的速度。
我们知道,在HTML4 中可以使用 cookie 在客户端保存像用户名等简单的用户信息,但是通过长期的使用,你会发现,用cookie存储永久数据存在一些问题:
大小(cookie大小在4KB),带宽(cookie是随HTTP事务一起被发送的,因此会浪费一部分带宽),复杂性(要正确操纵cookie很困难)
针对这些问题,在 HTML5 中,重新提供了一种在客户端本地保存数据的功能 Web Storage
具体说,Web Storage 又分为两种:
1. sessionStorage:将数据保存在 session 对象中。
2. localStorage:将数据保存在客户端本地的硬件设备中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用。
这两者的区别在于,sessionStorage 为临时保存,而 localStorage 为永久保存。
WebStorage 的目的是克服由 cookie 带来的一些限制,当数据需要被严格控制在客户端时,不需要持续的将数据发回服务器。
WebStorage 两个主要目标:1)提供一种在 cookie 之外存储会话数据的路径 2)提供一种存储大量可以跨会话存在的数据的机制
HTML5 的 WebStorage 提供了两种 API:localStorage 和 sessionStorage
1. 生命周期:localStorage 的生命周期是永久的,关闭页面或浏览器后数据也不会消息,除非主动删除数据。sessionStorage 的生命周期是仅在当前会话下有效。sessionStorage 引入一个浏览器窗口概念,sessionStorage 是在同源的窗口中始终存在的数据。只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源的另个页面,数据依然存在。但是 sessionStorage 在关闭了浏览器窗口后就会被销毁。同时独立的打开同一个窗口同一页面,sessionStorage 在是不一样的(因为,不同源了)。
2. 存储大小:localStorage 和 sessionStorage 的存储数据大小一般都是 5MB
3. 存储位置:localStorage 和 sessionStorage 都保存在客户端,不与服务器进行互相通信
4. 存储内容类型:localStorage 和 sessionStorage 只能存储字符串类型,对于复杂的对象可以使用 ECMAScript 提供的 JSON 对象来处理
5. 获取方式:window.localStorage 和 window.sessionStorage
6. 应用场景:localStorage 常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据。 方法:
setItem(key, value) —— 保存数据,以键值对的方式存储信息
getItem(key) —— 获取数据,将键值传入,即可获取到对应的 value 值
removeItem(key) —— 删除单个数据
clear() —— 删除所有数据
key(index) —— 获取某个索引的 key