Latest web development tutorials

sesja JSP

HTTP jest protokołem, co oznacza, że ​​za każdym razem klient pobiera stron, musi otworzyć oddzielny serwer połączenia, serwer nie rejestruje poprzedni klient żąda żadnych informacji.

Istnieją trzy sposoby, aby utrzymać sesje klienta i serwera:


ciastka

Serwer sieciowy może przypisać unikalny identyfikator sesji jako ciastko do reprezentowania każdego klienta w celu identyfikacji następne żądanie klienta.

To nie może być skuteczny sposób, bo wiele razy nie muszą wspierać cookie w przeglądarce, dlatego nie zaleca się stosowania tej metody w celu utrzymania sesji.


Ukryte pola formularzy

Serwer WWW może wysłać ukrytych pól formularza HTML i unikalny identyfikator sesji, podobnie jak to:

<input type="hidden" name="sessionid" value="12345">

Ten zapis oznacza, że ​​gdy formularz jest składany, określona nazwa i wartość zostanie automatycznie włączone GET lub POST danych. Gdy przeglądarka wysyła żądanie, wartość session_id mogą być wykorzystane, aby zapisać inną trajektorię przeglądarki.

Takie podejście może być skutecznym sposobem, ale nie wywołuje zdarzenie przesłanie formularza Kliknij <a HREF> kartę hiperłącze, a więc ukrytych pól formularza nie obsługują rodzajowy śledzenia sesji.


przepisywanie URL

Możesz dodać jakieś dodatkowe informacje za każdy adres URL odróżnić sesję, w zależności od serwera danych można powiązać identyfikator sesji.

Na przykład http: //w3cschool.cc/file.htm; sessionid = 12345, identyfikator sesji sessionid = 12345, serwer może wykorzystać te dane w celu identyfikacji klienta.

W przeciwieństwie do tego, przepisywanie URL jest lepszy sposób, nawet jeśli przeglądarka nie obsługuje plików cookie może również pracować, ale wadą jest to, że należy podać identyfikator sesji dla każdego dynamicznego adresu URL, nawet jeśli jest to prosta strona HTML.


obiekty sesji

Oprócz powyższych kilku metod zewnętrznych, JSP servlet interfejs HttpSession zapewnia użyć do identyfikacji użytkownika, do przechowywania wszystkich dostęp użytkownika do informacji.

Domyślnie JSP pozwala na śledzenie sesji, nowy obiekt HttpSession automatycznie dla nowego klienta instancja. Śledzenie sesji Zakaz musi wyraźnie go wyłączyć przez dyrektywę Strona sesji wartość atrybutu na wartość false do osiągnięcia, co następuje:

<%@ page session="false" %>

Silnik JSP obiekt sesji niejawna jest narażona na dewelopera. Poprzez zapewnienie obiekt sesji, deweloperzy mogą łatwo przechowywać lub pobierać dane.

W poniższej tabeli przedstawiono niektóre z najważniejszych obiekcie sesji sposoby:

SN Sposób i opis
1 public Object getAttribute (String name)

Zwrócony obiekt sesji obiekt związany z określoną nazwą lub null, jeśli nie istnieją
2 metody getAttributeNames Wyliczenie publiczne ()

Zwraca obiekt sesji wszystkie nazwy obiektów
3 public long getCreationTime ()

Zwraca obiekt sesji tworzony jest czas w milisekundach, od 1 stycznia 1970 data wczesnym rankiem
4 public String getId ()

Zwraca identyfikator obiektu sesji
5 public long getLastAccessedTime ()

Zwraca ostatni raz klient odwiedził w milisekundach, od 1 stycznia 1970 roku termin wczesnym rankiem
6 public int getMaxInactiveInterval ()

Zwraca maksymalny przedział czasu, w sekundach, kontener serwletów będzie utrzymywać sesję otwarta w tym czasie
7 public void invalidate ()

Unieważnianie sesji rozdziału jakiekolwiek przedmioty związane z sesją
8 public boolean isNew (

Zwraca czy nowy klient, lub jeśli klient nie chciał przyłączyć się do sesji
9 public void removeAttribute (String name)

Wyjmij wskazaną nazwę obiektu sesji
10 public void setAttribute (String name, Object value)

Aby wyprodukować obiekt o podanej nazwie i wartości oraz związany z sesją
11 public void setMaxInactiveInterval (int interval)

Aby określić czas, w sekundach, kontener serwletów będzie utrzymywać sesję ważne w tym okresie

JSP aplikacji Session

Przykład ten opisuje jak korzystać z obiektu HttpSession, aby uzyskać czas tworzenia i ostatni czas dostępu. Będziemy nowy obiekt sesji dla skojarzonego obiektu żądania, jeśli ten obiekt nie istnieje.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<%
   // 获取session创建时间
   Date createTime = new Date(session.getCreationTime());
   // 获取最后访问页面的时间
   Date lastAccessTime = new Date(session.getLastAccessedTime());

   String title = "再次访问本教程实例";
   Integer visitCount = new Integer(0);
   String visitCountKey = new String("visitCount");
   String userIDKey = new String("userID");
   String userID = new String("ABCD");

   // 检测网页是否由新的访问用户
   if (session.isNew()){
      title = "访问本教程实例";
      session.setAttribute(userIDKey, userID);
      session.setAttribute(visitCountKey,  visitCount);
   } else {
	   visitCount = (Integer)session.getAttribute(visitCountKey);
	   visitCount += 1;
	   userID = (String)session.getAttribute(userIDKey);
	   session.setAttribute(visitCountKey,  visitCount);
   }
%>
<html>
<head>
<title>Session 跟踪</title>
</head>
<body>

<h1>Session 跟踪</h1>

<table border="1" align="center"> 
<tr bgcolor="#949494">
   <th>Session 信息</th>
   <th>值</th>
</tr> 
<tr>
   <td>id</td>
   <td><% out.print( session.getId()); %></td>
</tr> 
<tr>
   <td>创建时间</td>
   <td><% out.print(createTime); %></td>
</tr> 
<tr>
   <td>最后访问时间</td>
   <td><% out.print(lastAccessTime); %></td>
</tr> 
<tr>
   <td>用户 ID</td>
   <td><% out.print(userID); %></td>
</tr> 
<tr>
   <td>访问次数</td>
   <td><% out.print(visitCount); %></td>
</tr> 
</table> 
</body>
</html>

Spróbuj uzyskać dostęp do http: // localhost: 8080 / testjsp / main.jsp, pierwsze uruchomienie będzie uzyskać następujące wyniki:

Odwiedź znowu otrzymamy następujące wyniki:


Usuń dane sesji

Po zakończeniu przetwarzania danych sesji użytkownika, dostępne są następujące opcje:

  • Usuwanie specyficzną właściwość:

    Wywołać metodę void removeAttribute (String name), aby usunąć określoną właściwość.

  • Aby usunąć całą rozmowę:

    Zadzwoń metody public void invalidate (), aby cała sesja jest nieważna.

  • Ustawianie czas trwania sesji:

    Zadzwoń metody public void setMaxInactiveInterval (int interval), aby ustawić limit czasu sesji.

  • Zaloguj Użytkownik:

    Servlet2.4 obsługiwane wersje serwera, można wywołać metodę wylogowania (), aby wylogować użytkownika i wszystkie związane sesji jest nieprawidłowy.

  • Web.xml plik konfiguracyjny:

    Jeśli używasz Tomcat, można skonfigurować web.xml plik do następujących elementów:

  <session-config>
    <session-timeout>15</session-timeout>
  </session-config>

Time-out w ciągu kilku minut, Tomcat domyślny limit czasu wynosi 30 minut.

Servlet w metodzie getMaxInactiveInterval () zwraca ilość sekund oczekiwania. Jeśli web.xml jest skonfigurowany przez 15 minut, po czym metodą getMaxInactiveInterval () powróci 900.