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);
  • 相关阅读:
    MinGW 介绍
    Android Gallery组件实现循环显示图像
    白话经典算法系列之六 高速排序 高速搞定
    background-position 使用方法具体介绍
    小程序:目录
    SLC-测试-Postman:Postman 工具
    云-腾讯云:视频解决方案-un
    云-腾讯云:实时音视频
    Tool:XMind
    小程序:微信公众平台:小程序
  • 原文地址:https://www.cnblogs.com/BINGJJFLY/p/9304983.html
Copyright © 2011-2022 走看看