相关阅读
简介
用于存放被SessionFactory
解析后构建Session
实例的数据,本质上是一个数据映射集,提供额外的类型安全方法用于检索构建Subject
实例的对象;
核心方法
/**
* 获取主机
*/
void setHost(String host);
/**
* 设置主机
*/
String getHost();
/**
* 获取Session ID
*/
Serializable getSessionId();
/**
* 设置Session ID
*/
void setSessionId(Serializable sessionId);
实现子类
public interface SessionContext extends Map<String, Object>
public class DefaultSessionContext extends MapContext implements SessionContext
public class DefaultWebSessionContext extends DefaultSessionContext implements WebSessionContext
public interface WebSessionContext extends SessionContext, RequestPairSource
public class DefaultWebSessionContext extends DefaultSessionContext implements WebSessionContext
DefaultSessionContext
简介
SessionContext
接口的默认实现,提供基于ContextMap
的实现;
核心方法
// HOST KEY
private static final String HOST = DefaultSessionContext.class.getName() + “.HOST";
// SESSION_ID KEY
private static final String SESSION_ID = DefaultSessionContext.class.getName() + “.SESSION_ID";
/**
* 获取主机
*/
public String getHost() {
// 返回String类型
return getTypedValue(HOST, String.class);
}
/**
* 设置主机
*/
public void setHost(String host) {
if (StringUtils.hasText(host)) {
put(HOST, host);
}
}
/**
* 获取Session ID
*/
public Serializable getSessionId() {
// 返回Serializable类型
return getTypedValue(SESSION_ID, Serializable.class);
}
/**
* 设置Session ID
*/
public void setSessionId(Serializable sessionId) {
nullSafePut(SESSION_ID, sessionId);
}
/**
* 返回特定类型的Value
* 来自MapContext
*/
protected <E> E getTypedValue(String key, Class<E> type) {
E found = null;
Object o = backingMap.get(key);
if (o != null) {
if (!type.isAssignableFrom(o.getClass())) {
String msg = "Invalid object found in SubjectContext Map under key [" + key + "]. Expected type " +
"was [" + type.getName() + "], but the object under that key is of type " +
"[" + o.getClass().getName() + "].";
throw new IllegalArgumentException(msg);
}
found = (E) o;
}
return found;
}
WebSessionContext
简介
额外提供类型安全的ServletRequest
/ServletResponse
访问接口;
核心方法
/**
* 获取ServletRequest
*/
ServletRequest getServletRequest();
/**
* 设置ServletRequest
*/
void setServletRequest(ServletRequest request);
/**
* 获取ServletResponse
*/
ServletResponse getServletResponse();
/**
* 设置ServletResponse
*/
void setServletResponse(ServletResponse response);
DefaultWebSessionContext
简介
WebSessionContext
接口的默认实现,提供基于ContextMap
的实现;
核心方法
// ServletRequest KEY
private static final String SERVLET_REQUEST = DefaultWebSessionContext.class.getName() + “.SERVLET_REQUEST";
// ServletResponse KEY
private static final String SERVLET_RESPONSE = DefaultWebSessionContext.class.getName() + “.SERVLET_RESPONSE";
/**
* 设置ServletRequest
*/
public void setServletRequest(ServletRequest request) {
if (request != null) {
put(SERVLET_REQUEST, request);
}
}
/**
* 获取ServletRequest
*/
public ServletRequest getServletRequest() {
return getTypedValue(SERVLET_REQUEST, ServletRequest.class);
}
/**
* 设置ServletResponse
*/
public void setServletResponse(ServletResponse response) {
if (response != null) {
put(SERVLET_RESPONSE, response);
}
}
/**
* 获取ServletResponse
*/
public ServletResponse getServletResponse() {
return getTypedValue(SERVLET_RESPONSE, ServletResponse.class);
}