HttpSession
봐 항상 필요하지 않습니다를 가져 가라. 서블릿이 "상태 비 저장 (stateless)"상태이고 HTTP 요청의 정보가 요청을 수행하기에 충분하다면이 경우입니다.
request.getSession()
을 호출하지 않는 서블릿이있는 경우 HttpSession
이 작성되지 않습니다.
일반적으로 서블릿이 동일한 클라이언트의 요청이 여러 개인지 검색해야하는 경우 HttpSession
이 필요합니다. 예를 들어 세션 속성에서 대화식 상태 (예 : 장바구니 등)를 관리 할 수 있습니다.
예 : 만 텍스트/일반 문자열을 반환하는 서블릿에 telnet
: 굵은의 텍스트를 입력 할되었다 (그건 HTTP 요청)
$ 텔넷 로컬 호스트 8080
127.0.0.1 시도 중 ...
localhost.localdomain에 연결되었습니다.
이스케이프 문자는 '^]'입니다.
GET/XXX/textplainservlet/HTTP/1.1
호스트 : 로컬 호스트 : 8080
HTTP/1.1 200 OK
서버 : 아파치 - 코요테/1.1
콘텐츠 유형 : 텍스트/일반; 캐릭터 세트 =-8859-1 ISO
콘텐츠 길이 : 13
날짜 : 금, 그리니치 표준시 12시 11분 10초
안녕하세요 2013 9월 6일, 세계
이 경우에는 영역이 만들어지지 않습니다.
예 :
GET /xxx/hello.jsp HTTP/1.1
호스트 : 로컬 호스트 : 8080
정적 HTML 콘텐츠를 제외한 아무 것도 반환하지 않습니다 간단한 JSP
HTTP/1.1 200 OK
서버 : Apache-Coyote/1.1
X-Powered-By : JSP/2. 2
쿠키 설정 : JSESSIONID = n0cOaZFUvlXSvX7hNEfcNzHP.undefined; 경로 =/NK-eapp 핑-60-JPA
의 Content-Type : text/html과; 문자셋 = ISO-8859-1
콘텐츠 길이 : 49
날짜 : 2013년 9월 6일 (금) 12시 11분 58초 JSP로 명시 적으로 request.getSession()
를 호출하지 않는 경우에도, GMT는
[... HTML 문서 ...]이 경우
이하는 세션 만들어지고 쿠키가 설정됩니다 !
따라서 나는 HttpSessionListener
을 첨부했으며 실제로 세션은 암시 적으로 만들어집니다.
org.apache.catalina.session.StandardSession.tellNew (StandardSession.java:374)
org.apache.catalina.session.StandardSession.setId (StandardSession.java : 그 리스너에서 나는 스택 추적을 덤프 344)
org.apache.catalina.session.ManagerBase.createSession (ManagerBase.java:506)
org.apache.catalina.session.StandardManager.createSession (StandardManager.java:297)
org.apache.catalina .connector.Request.doGetSession (Request.java:2665)
org.apache.catalina.connector.Request.getSession (Request.java:2375),210 org.apache.catalina.connector.RequestFacade.getSession (RequestFacade.java:841)
org.apache.catalina.connector.RequestFacade.getSession (RequestFacade.java:852)
org.apache.jasper.runtime. PageContextImpl._initialize (PageContextImpl.자바 : 146)
org.apache.jasper.runtime.PageContextImpl.initialize (PageContextImpl.java:124)
org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext (JspFactoryImpl.java:106)
org.apache. jasper.runtime.JspFactoryImpl.getPageContext (JspFactoryImpl.java:62)
org.apache.jsp.hello_jsp._jspService (hello_jsp.java:45는)
이 테스트는
보스 7. 사용하여 실행 된
채널 세션이 생성되었는지 여부를 확인하려면 방금 HttpSessionListener
을 사용하여 다시 테스트하십시오.
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
private final static Logger log = Logger
.getLogger(MyHttpSessionListener.class.getName());
public void sessionCreated(HttpSessionEvent e) {
// Possibly create a stack trace here, and dump it
log.info("Session created: " + e.getSession().getId() + ", timeout "
+ e.getSession().getMaxInactiveInterval());
}
public void sessionDestroyed(HttpSessionEvent e) {
log.info("Session destroyed: " + e.getSession().getId());
}
}
어디서 마지막 견적을 읽었습니까? – Beryllium
@Beryllium 당신이 말하는 것은 무엇입니까? –
"코드가 호출 될 때 세션이 생성되었습니다 ..." – Beryllium