Grails는 세션 ID를 통해 세션 객체를 가져옵니다.
Grails는 세션 ID를 통해 세션 객체를 가져옵니다.
사고방식: 감청에 사용할 클래스를 사용자 정의합니다session
, 모두session
입금map
중,sessionId
읽기key
스니퍼 클래스 SessionTracker 만들기
package com.session
import org.springframework.beans.BeansException
import org.springframework.context.ApplicationContext
import org.springframework.context.ApplicationContextAware
import org.springframework.web.context.WebApplicationContext
import javax.servlet.http.HttpSession
import javax.servlet.http.HttpSessionEvent
import javax.servlet.http.HttpSessionListener
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ConcurrentMap
class SessionTracker implements HttpSessionListener, ApplicationContextAware {
private static final ConcurrentMap sessions = new ConcurrentHashMap();
void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
def servletContext = ((WebApplicationContext) applicationContext).getServletContext()
servletContext.addListener(this);
}
void sessionCreated(HttpSessionEvent httpSessionEvent) {
sessions.putAt(httpSessionEvent.session.id, httpSessionEvent.session)
}
void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
sessions.remove(httpSessionEvent.session.id)
}
HttpSession getSessionById(id) {
sessions.get(id)
}
}
grails-app/conf/resources.groovy에 등록
import com.session.SessionTracker
// Place your Spring DSL code here
beans = {
// session
sessionTracker(SessionTracker)
}
세션 가져오기
package com.genee
import org.springframework.web.context.request.RequestContextHolder
import javax.servlet.http.HttpSession
class HiController {
//
def sessionTracker
def index() {
// session
def sessionId = RequestContextHolder.currentRequestAttributes().getSessionId()
println " sessionId:$sessionId"
// sessionId session
HttpSession httpSession = sessionTracker.getSessionById(sessionId).getId()
println " session :"+httpSession.getId()
// session
sessionTracker.getSessionById(sessionId).invalidate()
render sessionId
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
현재 경로의 모든 파일을 클립으로 출력하는 방법
제목:
Groovy 클립에 대한 우리의 이해는 each 등object의 자체 클립에만 국한되어서는 안 된다.
클립을 사용하면 귀속 조작을 더욱 편리하고 유연하게 할 수 있다.groovy 홈페이지의 클립 예는Fibon...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
package com.session
import org.springframework.beans.BeansException
import org.springframework.context.ApplicationContext
import org.springframework.context.ApplicationContextAware
import org.springframework.web.context.WebApplicationContext
import javax.servlet.http.HttpSession
import javax.servlet.http.HttpSessionEvent
import javax.servlet.http.HttpSessionListener
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ConcurrentMap
class SessionTracker implements HttpSessionListener, ApplicationContextAware {
private static final ConcurrentMap sessions = new ConcurrentHashMap();
void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
def servletContext = ((WebApplicationContext) applicationContext).getServletContext()
servletContext.addListener(this);
}
void sessionCreated(HttpSessionEvent httpSessionEvent) {
sessions.putAt(httpSessionEvent.session.id, httpSessionEvent.session)
}
void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
sessions.remove(httpSessionEvent.session.id)
}
HttpSession getSessionById(id) {
sessions.get(id)
}
}
import com.session.SessionTracker
// Place your Spring DSL code here
beans = {
// session
sessionTracker(SessionTracker)
}
package com.genee
import org.springframework.web.context.request.RequestContextHolder
import javax.servlet.http.HttpSession
class HiController {
//
def sessionTracker
def index() {
// session
def sessionId = RequestContextHolder.currentRequestAttributes().getSessionId()
println " sessionId:$sessionId"
// sessionId session
HttpSession httpSession = sessionTracker.getSessionById(sessionId).getId()
println " session :"+httpSession.getId()
// session
sessionTracker.getSessionById(sessionId).invalidate()
render sessionId
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
현재 경로의 모든 파일을 클립으로 출력하는 방법제목: Groovy 클립에 대한 우리의 이해는 each 등object의 자체 클립에만 국한되어서는 안 된다. 클립을 사용하면 귀속 조작을 더욱 편리하고 유연하게 할 수 있다.groovy 홈페이지의 클립 예는Fibon...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.