Struts2 request



request

Struts2中调用<%request.getAttribute(“”);%>是调用的不是HttpServletRequest对象,而是

调用org.apache.struts2.dispatcher.StrutsRequestWrappergetAttribute()方法;

源代码如下:

publicObject getAttribute(String key) {

        if (key == null) {

            throw new NullPointerException("You must specify a key value");

        }

 

        if (disableRequestAttributeValueStackLookup || key.startsWith("javax.servlet")) {

            // don't bother with the standardjavax.servlet attributes, we can short-circuit this

            // see WW-953 and the forums post linked inthat issue for more info

            return super.getAttribute(key);

        }

 

        ActionContext ctx = ActionContext.getContext();

        Object attribute = super.getAttribute(key);

 

        if (ctx != null && attribute == null) {

            boolean alreadyIn = isTrue((Boolean) ctx.get(REQUEST_WRAPPER_GET_ATTRIBUTE));

 

            // note: we don't let # come through orelse a request for

            // #attr.foo or #request.foo could cause anendless loop

            if (!alreadyIn && !key.contains("#")) {

                try {

                    // If not found, then try the ValueStack

                    ctx.put(REQUEST_WRAPPER_GET_ATTRIBUTE, Boolean.TRUE);

                    ValueStack stack =ctx.getValueStack();

                    if (stack != null) {

                        attribute =stack.findValue(key);

                    }

                } finally {

                    ctx.put(REQUEST_WRAPPER_GET_ATTRIBUTE, Boolean.FALSE);

                }

            }

        }

        return attribute;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值