zoukankan      html  css  js  c++  java
  • Shiro SessionContext和SessionKey的设计概念

    SessionContext

    其行为有:

    DefaultSessionContext

    其主要是实现了SessionContext的行为,MapContext主要是实现了Map的行为

    WebSessionContext

    其主要行为是,继承了SessionContext,拥有了后者的行为

    DefaultWebSessionContext

    其主要实现了WebSessionContext的行为和RequestPairSource的行为

    RequestPairSource

    其主要行为就是获得Request和Response,但是该行为WebSessionContext也具备了,有点冗余

    HttpServletRequest的获取

    创建SessionContext时会将HttpServletRequest设置到DefaultWebSessionContext中,通过后者获得

    HttpServletRequest request = WebUtils.getHttpRequest(context);

    WebUtils

    public static HttpServletRequest getHttpRequest(Object requestPairSource) {
        ServletRequest request = getRequest(requestPairSource);
        if (request instanceof HttpServletRequest) {
            return (HttpServletRequest) request;
        }
        return null;
    }
    
    public static ServletRequest getRequest(Object requestPairSource) {
        if (requestPairSource instanceof RequestPairSource) {
            return ((RequestPairSource) requestPairSource).getServletRequest();
        }
        return null;
    }

    SessionKey

    其行为有

    DefaultSessionKey 

    其主要是实现了SessionKey的行为

    WebSessionKey 

    其主要是实现了RequestPairSource的行为,又继承了DefaultSessionKey拥有了后者的行为

    创建WebSessionKey时,将HttpServletRequest设置到WebSessionKey中

    ServletRequest request = WebUtils.getRequest(context);
    ServletResponse response = WebUtils.getResponse(context);
    SessionKey key = new WebSessionKey(session.getId(), request, response);

    通过WebSessionKey获得HttpServletRequest

    ServletRequest request = WebUtils.getRequest(key);
  • 相关阅读:
    组播IP地址
    改变未来的10大科技
    知行合一之健康
    2017第47周五
    2017第47周四感恩节
    spring boot测试
    2017第47周二
    音频格式opus
    周日反思
    四种人工智能技术对五个行业的影响
  • 原文地址:https://www.cnblogs.com/BINGJJFLY/p/9304983.html
Copyright © 2011-2022 走看看