DefaultWebSubjectContext类

本文详细解析了DefaultWebSubjectContext类的功能与实现细节,包括如何处理HTTP请求与响应,解析主机信息等关键方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DefaultWebSubjectContext类主要定义了获取request,设置request,解析request,获取response,设置response,解析response等操作,它继承了DefaultSubjectContext类,实现了WebSubjectContext接口,现对其接下如下:

1.WebSubjectContext接口

可以参考WebSubjectContext接口源码解析,主要定义了获取request,设置request,解析request,获取response,设置response,解析response等方法。

2.DefaultSubjectContext类

可以参考DefaultSubjectContext类源码解析,主要定义了将一些主机什么的信息保存到map中。

3.DefaultWebSubjectContext类

3.1.数据属性

private static final String SERVLET_REQUEST = DefaultWebSubjectContext.class.getName() + ".SERVLET_REQUEST";//servlet request
    private static final String SERVLET_RESPONSE = DefaultWebSubjectContext.class.getName() + ".SERVLET_RESPONSE";//servlet response

3.2.构造方法

public DefaultWebSubjectContext() {
}

3.3.构造方法

public DefaultWebSubjectContext(WebSubjectContext context) {
        super(context);
}

3.4.解析host信息(先从上下文map中获取,如果为空,则从token中获取,如果也为空,则从session中获取,如果也为空,则从request中获取,它覆盖了DefaultSubjectContext类的方法)

public String resolveHost() {
        String host = super.resolveHost();
        if (host == null) {
            ServletRequest request = resolveServletRequest();
            if (request != null) {
                host = request.getRemoteHost();
            }
        }
        return host;
}

3.5.从backingmap中获取servlet request(它实现了WebSubjectContext接口的方法)

public ServletRequest getServletRequest() {
        return getTypedValue(SERVLET_REQUEST, ServletRequest.class);
}

3.6.将servlet request设置到backingmap中(它实现了WebSubjectContext接口的方法)

public void setServletRequest(ServletRequest request) {
        if (request != null) {
            put(SERVLET_REQUEST, request);
        }
}

3.7.解析servlet request(先从backingmap中获取,如果为空,再从subject中获取,它实现了WebSubjectContext接口的方法)

public ServletRequest resolveServletRequest() {

        ServletRequest request = getServletRequest();

        //fall back on existing subject instance if it exists:
        if (request == null) {
            Subject existing = getSubject();
            if (existing instanceof WebSubject) {
                request = ((WebSubject) existing).getServletRequest();
            }
        }

        return request;
    }

3.8.从backingmap中获取servlet response信息(它实现了WebSubjectContext接口的方法)

public ServletResponse getServletResponse() {
        return getTypedValue(SERVLET_RESPONSE, ServletResponse.class);
    }

3.9.将servlet response设置到backingmap中(它实现了WebSubjectContext接口的方法)

public void setServletResponse(ServletResponse response) {
        if (response != null) {
            put(SERVLET_RESPONSE, response);
        }
    }

3.10.解析servlet response(先从backingmap中获取,如果不存在,再从subject中获取)

public ServletResponse resolveServletResponse() {

        ServletResponse response = getServletResponse();

        //fall back on existing subject instance if it exists:
        if (response == null) {
            Subject existing = getSubject();
            if (existing instanceof WebSubject) {
                response = ((WebSubject) existing).getServletResponse();
            }
        }

        return response;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值