JSP 세션
HTTP 클라이언트 페이지를 검색 때마다 별도의 연결 서버를 열어야한다는 것을 의미 무 상태 프로토콜이며, 서버는 이전 클라이언트는 모든 정보를 요청 기록하지 않습니다.
클라이언트와 서버 세션을 유지하는 세 가지 방법이 있습니다 :
쿠키
네트워크 서버는 클라이언트의 다음 요청을 식별하는 각각의 클라이언트를 나타내는 쿠키로 고유 세션 ID를 할당 할 수있다.
많은 시간이 필요 브라우저 쿠키를 지원하지 않기 때문에, 효율적인 방법이 될 수 없습니다, 그래서 우리는 세션을 유지하기 위해이 방법을 사용하지 않는 것이 좋습니다.
숨겨진 양식 필드
웹 서버는 다음과 같은 숨겨진 HTML 양식 필드와 고유 세션 ID를 보낼 수 있습니다 :
<input type="hidden" name="sessionid" value="12345">
이 항목은 양식이 제출 될 때, 지정된 이름과 값이 자동으로 GET 또는 POST 데이터에 포함된다는 것을 의미합니다. 브라우저 요청을 보낼 때마다, SESSION_ID 값은 다른 브라우저 궤적을 저장하는데 사용될 수있다.
이 방법은 효과적인 방법이 될 수 있지만, 양식 제출 이벤트가 <A HREF> 탭 하이퍼 링크를 클릭, 따라서 숨겨진 양식 필드가 일반 세션 추적을 지원하지 않습니다 생성하지 않습니다.
URL 재 작성
사용자는 세션 식별자를 연관시킬 수있는 데이터 서버에있어서, 상기 세션을 구별하기 위해 각각의 URL 뒤에 일부 추가 데이터를 추가 할 수있다.
예를 들어, HTTP : //w3cschool.cc/file.htm, 세션 id = 12345, 세션 식별자 세션 ID = 12345, 서버는 클라이언트를 식별하기 위해이 데이터를 사용할 수있다.
대조적으로, URL을 개서 쿠키를 지원하지 않는 브라우저도 작동 할 수 있더라도, 더 좋은 방법이지만, 단점은 그것이 단순 HTML 페이지 인 경우에도, 각 동적 URL에 대한 세션 ID를 지정해야한다는 것이다.
세션 객체
외부 상기 여러 가지 방법에 더하여, JSP 서블릿의 HttpSession 인터페이스는 정보의 모든 사용자의 액세스를 저장하는 사용자를 식별하는 데 사용 제공한다.
기본적으로, JSP 새의 HttpSession 객체가 자동으로 새 클라이언트에 대한 인스턴스화합니다, 세션 추적을 할 수 있습니다. 다음과 같이 금지 세션 추적, 명시 적으로 달성하기 위해 false로 페이지 지시문 세션 속성 값을 해제해야합니다 :
<%@ page session="false" %>
JSP 엔진 암시 세션 객체는 현상 제에 노출된다. 세션 객체를 제공하여, 개발자가 쉽게 저장하거나 데이터를 검색 할 수있다.
다음 표는 중요한 방법 세션 객체의 일부 목록입니다 :
SN | 방법 및 설명 |
---|---|
(1) | 공공 개체 대해 getAttribute (문자열 이름) 반환 된 객체 세션 지정된 이름으로 바인드 된 객체는 null이 존재하지 않는 경우 |
이 | 공공 열거 대해 getAttributeNames () 세션 개체 모든 개체 이름을 돌려줍니다 |
3 | 공공 긴 getCreationTime () 세션 개체 년 1 월 1 일 1970 이른 아침의 날짜에서 밀리 초 단위로 시간을 만들어 돌려줍니다 |
4 | 공공 문자열 getId () 세션 개체 ID를 반환 |
(5) | 공공 긴 getLastAccessedTime () 클라이언트가 1970 년 1 월 1 일부터 밀리 초, 이른 아침의 날짜를 마지막으로 방문한 시간을 반환 |
6 | 공공 INT getMaxInactiveInterval () 최대 시간 간격 (초), 서블릿 컨테이너가이 시간에 오픈 세션을 유지합니다 반환 |
(7) | 공공 무효의 무효화 () 세션 무효화는 물건을 개별화하는 세션에 바인딩 |
8 | 공공 부울 isNew ( 클라이언트가 세션에 참가하기를 거절 새 클라이언트 여부 경우, 또는 리턴 |
9 | 공공 무효 removeAttribute (문자열 이름) 지정된 세션 객체 이름을 제거 |
(10) | 공공 무효의 setAttribute (문자열 이름, 개체 값) 지정된 이름과 값을 가지는 객체를 생성하고 세션에 바인딩하려면 |
(11) | 공공 무효 setMaxInactiveInterval (INT 간격) 시간을 지정하려면, 초, 서블릿 컨테이너는이 기간 동안 유효한 세션을 유지합니다 |
JSP 세션 응용 프로그램
이 예는 작성 시간 및 마지막 액세스 시간을 얻기 위해의 HttpSession 객체를 사용하는 방법에 대해 설명합니다. 이 개체가 이미 존재하지 않는 경우 우리는 관련 요청 객체에 대한 새로운 세션 객체가 될 것입니다.
<%@ 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>
액세스에서 http보십시오 : // localhost를 : 8080 / testjsp / main.jsp를 처음 실행은 다음과 같은 결과를 얻을 것이다 :
다시 방문, 우리는 다음과 같은 결과를 얻을 것이다 :
세션 데이터를 삭제
사용자의 세션 데이터 처리를 완료하면 다음과 같은 옵션이 있습니다 :
- 특정 속성을 제거합니다
지정된 속성을 제거하기 위해 공공 무효 removeAttribute (문자열 이름) 메서드를 호출합니다.
- 전체 대화를 삭제하려면 :
전체 세션이 유효하게 공공 무효 무효 () 메서드를 호출합니다.
- 세션 시간 설정 :
세션 시간 제한을 설정하는 공공 무효 setMaxInactiveInterval (INT 간격) 메서드를 호출합니다.
- 사용자 로그인 :
서버의 Servlet2.4 지원되는 버전, 당신은 사용자가 로그 아웃 로그 아웃 () 메서드를 호출 할 수 있습니다 및 모든 관련 세션이 잘못되었습니다.
- web.xml의 설정 파일 :
Tomcat을 사용하는 경우, 다음의 web.xml 파일을 구성 할 수 있습니다 :
<session-config> <session-timeout>15</session-timeout> </session-config>
분 시간 제한은 톰캣의 기본 제한 시간은 30 분입니다.
getMaxInactiveInterval () 메소드에서 서블릿은 제한 시간 (초)을 반환합니다. 은 web.xml 15 분 동안 구성된 경우 getMaxInactiveInterval () 메서드는 900을 반환합니다.