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);
  • 相关阅读:
    java数组基础
    java异常处理机制
    java面向对象基础(四):抽象类和接口
    java面向对象基础(二)
    java类路径classpath和包
    java面向对象基础(一)
    Tomcat(二):tomcat配置文件server.xml详解和部署简介
    java集合框架(Collections Framework)
    java基础数据类型包装类
    String、StringBuilder和StringBuffer类
  • 原文地址:https://www.cnblogs.com/BINGJJFLY/p/9304983.html
Copyright © 2011-2022 走看看