Cookie und Session Grundsätze

Session Prinzipien:

  Sitzung kann auf Datei, Speicher oder Datenbank gespeichert werden kann, wird in Form von Schlüssel-Wert-Paaren gespeichert. Session ist auch ein Schlüssel-Wert des Eigentumsrechts.

  Wenn das Programm braucht eine Sitzung für die Anforderung eines Kunden zu schaffen, hat der Server überprüft zunächst die Anforderung des Client eine Sitzungskennung enthalten ist, eine Session-ID genannt, wenn bereits eine Session-ID enthält, dann tun die zuvor diese der Client erstellt zu Sitzung, abgerufen in Übereinstimmung mit der Server-Session-ID dieser Sitzung (falls nicht abgerufen werden, kann neu sein, entsprechend die Parameter getSeesion () -Methode), wenn die Client-Anforderung nicht eine Session-ID enthält, dann ist dieser Kunde einen Sitzungsende erstellen und generiert eine Sitzung mit diesem zugeordnet ist, in Verbindung Session-ID wird die Sitzungs-ID an den Client in dieser Antwort gespeichert zurückgegeben.

Sitzung der Client-Implementierung Form (das heißt, speichern Sie die Session-ID-Methode)

Allgemein Browser bietet drei Möglichkeiten zu sparen:

  [1] Verwendung Cookies zu speichern. Dies ist die am häufigsten verwendete Methode, „Record angemeldet me in“ Funktion erreichen auf diesem Ansatz basiert. Der Server sendet an den Browser durch Cookie - Session - ID zu setzen. Wenn wir nicht eine Ablaufzeit festgelegt, dann wird das Cookie nicht auf der Festplatte gespeichert werden, um die Zeit , wenn der Browser geschlossen wird, Cookie verschwunden, wird die Session - ID verloren. Wenn wir diese Zeit gesetzt, dann wird das Cookie im Client - Festplatte gespeichert werden, auch wenn der Browser geschlossen wird, ist der Wert immer noch da, das nächste Mal , wenn Sie die Website besuchen, wird es auch an den Server gesendet werden.

  [2] URL - Rewriting , wird die Session - ID in den URL - Pfad direkt angehängt, das ist, wie wir oft JSP Seite sehen aaa.jsp? JSESSIONID = * gleich.

  [3] in einem versteckten Feld nimmt in dem Web - Formular , auf diese Weise , und die zweite Möglichkeit ist tatsächlich die gleiche, aber die früheren Sendedaten über GET - Methode, die Daten unter Verwendung der POST - Methode senden. Aber offensichtlich letztere ist zu viel Mühe.

  Das heißt, ändern wird der Server automatisch das Formular, fügen Sie ein verstecktes Feld, während die Session-ID zurück an den Server übergeben werden kann, wenn das Formular abgeschickt wird. Zum Beispiel:

1  < Form Name = "Testform" Aktion = "/ xxx" > 
2  < Eingang Typ = "hidden" name = "JSESSIONID" 
3 -  Wert = "ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBug! -145.788.764" > 
4  < Eingang Typ = "text" > 
5  </ Form >

Wenn Sitzung erstellt?

  Ein häufiger Fehler ist zu glauben, dass Sitzung erstellt wird, wenn es den Client-Zugriff, aber die Tatsache ist, dass ein Server nicht bis zum Ende des Programms (wie Servlets) nennen eine solche Aussage HttpServletRequest.getSession (true) Zeit erstellt werden.

Sitzung, wenn es gelöscht wurde?

Sitzung wird in den folgenden Fällen gelöscht:

  A. Invokes HttpSession.invalidate ()

  B. Bei Empfang der letzten Mal, wenn der Client eine Sitzungs-ID des Sitzungsintervall sendet überschreitet die maximale effektive Zeit

  C-Server-Prozess wird gestoppt

  Beachten Sie, dass der Browser wieder geschlossen wird nur den Session-Cookie im Client-Browser Speicherfehler gespeichert machen, nicht das Scheitern des serverseitigen Sitzungsobjekts.

getSession () / getSession (true), getSession (false) 的 区别

  getSession () / getSession (true): Gibt die Sitzung, wenn die Sitzung vorhanden ist, oder eine neue Sitzung erstellen und das Objekt zurück.

  getSession (false): Gibt die Sitzung, wenn die Existenz der Sitzung, wäre es nicht eine neue Sitzung, return null zu erstellen.

 

Cookie-Mechanismen:

Cookie Kategorien:

  1, in einer Art und Weise gibt es eine permanente Cookie - Datei auf Ihrer Festplatte. Persistent Cookie auf der Festplatte der Client - Cookie - Informationen gespeichert (eine bestimmte Ablaufdatum Einstellung), wenn ein Nutzer eine Website, der Browser für Cookie im Zusammenhang mit der Website auf der lokale Festplatte suchen. Wenn das Cookie vorhanden ist , wird es die Browserseite Anfrage sein , um die HTTP - Header - Informationen zu Ihrer Website zu senden durch, dann ist das System konsistent Verhältnis für jedes Attribut und der Wert des Cookies und die Informationen auf der Serverseite gespeichert. Und damit der Anwender als „Erstbesucher“ oder „Kunden“ nach dem Vergleichsergebnis zu identifizieren.

  2 Aufenthalt im temporären Speicher des Browsers durch den Cookie besetzt , wird von Ihrem Computer gelöscht , wenn Sie Internet Explorer schließen.

Cookie gültig:

  Cookie的maxAge决定着Cookie的有效期,单位为秒。

  如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。下面代码中的Cookie信息将永远有效。

1 Cookie cookie = new Cookie("username","helloweenvsfei");//新建Cookie
2 cookie.setMaxAge(Integer.MAX_VALUE);//设置生命周期为MAX_VALUE
3 response.addCookie(cookie);//输出到客户端

  如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。maxAge为负数的Cookie,为临时性Cookie,Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为-1.

  如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除。

例如:

1 Cookie cookie = new Cookie("username","helloweenvsfei");//新建Cookie
2 cookie.setMaxAge(0);//设置生命周期为0,表示删除cookie
3 response.addCookie(cookie);//必须执行这一句

Cookie的组成部分

  Cookie在HTTP的头部信息中。

  标准格式:Set-Cookie:NAME=VALUE; Expires=DATE; Path=PATH; Domain=DOMAIN_NAME; SECURE;

  举例说明:Set-Cookie:JSESSIONID=mysession; Expires=Thu; 05-Jun-20 08 05:02:50 GMT; Path=/web;

  Cookie的Expires属性标识了Cookie的有效时间,当Cookie的有效时间过了之后,这些数据就被自动删除了。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命周期为浏览器会话期的cookie被称为会话cookie(临时性cookie),会话cookie保存在内存里。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。

Cookie被浏览器禁用怎么办?

cookie可以被人为地禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递会服务器。

  【1】URL重写,就是把session id直接附加在URL路径的后面,也就是像我们经常看到JSP网站会有aaa.jsp?JSESSIONID=*一样的。

  【2】在网页表单里面增加隐藏域,这种方式实际上和第二种方式一样,只不过前者通过GET方法发送数据,后者使用POST方式发送数据。但是明显后者比较麻烦。

  就是服务器会自动修改表单,添加一个隐藏字段,一边在表单提交时能够把session id传递回服务器。比如:

1 <form name="testform" action="/xxx">
2 <input type="hidden" name="jsessionid"
3 value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBug!-145788764">
4 <input type="text">
5 </form>

 

Cookie 与 Session的区别

1、cookie数据存放在客户端,用来记录用户信息的,session数据放在服务器上。

2、正是由于Cookie存储在客户端中,对客户端是可见的,客户端的一些程序可能会窥探、复制甚至修改Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的危险。

  如果选用Cookie,比较好的方法是,敏感的信息如账号密码等尽量不要写到Cookie中。最好是像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只有自己能读得懂。而如果选择Session就省事多了,反正是放在服务器上,Session里任何隐私都可以。

3、Session是保存在服务器端的,每个用户都会产生一个Session。如果并发访问的用户非常多,会产生非常多的Session,消耗大量的服务器内存。因此像Google、Baidu这样并发访问量极高的网站,是不太可能使用Session来追踪客户会话的。

  而Cookie保存在客户端,不占用服务器资源。如果并发浏览的用户非常多,Cookie是很好的选择。

4、cookie的容量和个数都有限制。单个cookie的容量不能超过4KB,很多浏览器都限制一个站点最多保存20个cookie,而session没有此问题。

5、所以建议:将登录信息等重要信息存放到SESSION中,其他信息如果需要保留,可以放在COOKIE中。

Session 和 Cache 的区别

  Session是但用户的会话状态。当用户访问网站时,产生一个SESSIONID。并存在于COOKIES中。每次向服务器请求时,发送这个COOKIES,再从服务器中检索是否有这个SESSIONID保存的数据。而cache则是服务器端的缓存,是所有用户都可以访问和共享的。因为从Cache中读数据比较快,所以有些系统(网站)会把一些经常被使用的数据放到Cache中,提高访问速度,优化系统性能。

如果有几千个session,怎么提高效率?(当session访问量比较大的时候,怎么解决?)

  把session放到redis或memcache等此类内存缓存中或把session存储到SSD硬盘上。

 

Ich denke du magst

Origin www.cnblogs.com/HuiH/p/12621225.html
Empfohlen
Rangfolge