struts2的整体回顾(ACTION、拦截器、值栈、OGNL表达式、ModelDriven方案等)

来源:互联网 发布:mac finder要密码 编辑:程序博客网 时间:2024/05/24 07:17

ValueStack:struts2的一个存放数据的数据结构(核心)
ValueStack大致可以理解为:由Map和对象栈组成
ValueStack作用范围:一个请求,用它来代替request的作用域。
当来了一个请求时,便创建出一个ValueStack,并进行一些初始化,
往Map中放:request=...,session=...,application=...,attr=...,parameters=...,等等

往对象栈中放:action和另一个默认对象


拦截器:ModelDriven
作用:把model放在对象栈栈顶,
参数拦截器:params
作用:封装参数,把参数封装到对象栈中,会先封装到对象栈中的属性里(一找到相同属性就封装)


Action里怎么用ValueStack:ActionContext.getContext().getValueStack()
JSP里怎么用ValueStack:OGNL表达式
调用ValueStack
1.调用map:
ActionContext.getContext().put(k,v);//将一组对象存入map
ActionContext.getContext().get(k);//通过key拿到value
2.调用对象栈:
ActionContext.getContext().getValueStack().push(obj);//将obj放到栈顶
ActionContext.getContext().getValueStack().pop();//拿到栈顶对象

OGNL表达式
格式:
在struts.xml中,OGNL的格式为:${ognl}
在JSP中,OGNL的格式为:%{ognl}
语法:
user  = findValue("user")//先找对象栈,再找map,一找到就返回
#user = map.get("user")//直接从map中获取
#user.name = map.get("user").getName()


findValue(expr)的查找顺序
1.从对象栈中查找指定名称的属性,从栈顶开始向下找,找到后就返回。
2.如果从对象栈中没有找到属性,则从map中查找对应的key值,找到后就返回。

EL表达式(struts中):
作用域查找顺序:page,request,ValueStack.findValue(),session,application

0 0
原创粉丝点击