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);