Spring Shiro基础组件 SessionContext

相关阅读

简介

用于存放被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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值