java ognl 值栈_Struts2值栈和OGNL

一、首先关于Struts2框架:

①特点:

1、通用性

2、可扩展性

struts2可以自定义类型转换器(尚待深入)、自定义拦截器。

3、非侵入式

不会污染其他模块

②配置

1、Web工程的web.xml文件配置filter拦截器(拦截*.action请求)

2、struts.xml首先要关联约束文档

detailpage.jsp

标签package的作用是定义一个功能模块,其name属性作为标识是必填项,便于其他package引用,extends是继承了默认的配置。namespace也采用了默认配置,如果采用自定义名称空间,则访问这个package中定义的action时,必须在路径中加上名称空间值。

action对应着请求,class属性指定处理请求的类,method属性为处理请求的具体方法,result则对应响应,注意其name属性值。

③Action类

类中的set方法是注入请求参数,get方法作用是在jsp文件中利用EL表达式取出数据显示出来。当然,在标签action中指定了method的属性值为save,这个save就是Action类中处理请求的具体方法,此方法有固定的格式:

1)public 权限

2)String返回值类型

3) 没有参数

二、值栈

Struts2中的request对象不是Servlet容器创建的request对象了。

public class StrutsRequestWrapper extends HttpServletRequestWrapper{

public Object getAttribute(String key){

if(key==null){

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

}

if(){

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

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

try{

ctx.put(REQUEST_WRAPPER_GET_ATTRIBUTE, Boolean.TRUE);

ValueStack stack=ctx.getValueStack();

if(stack!=null){

attribute=stack.findValue(key);

}catch(Exception e){

...

}finally{

ctx.put(REQUEST_WRAPPER_GET_ATTRIBUTE, Boolean.FALSE);

}

}

}

}

return attribute;

}

}

它修改了getAttribute()方法,但除了request之外,获取的response和ServletContext对象依然是原生的,太晚了,明天继续,希望自己能坚持下来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值