Struts2学习笔记02

来源:互联网 发布:女生学电脑编程好吗 编辑:程序博客网 时间:2024/05/16 01:00

1.     利用Struts2标签+OGNL技术重构资费列表

1.       OGNL技术的使用

a)       什么是OGNL

                                                                i.             源于ognl.jar工具包,全称:object graphics navigation language(对象图导航语言);

主要用于访问对象的数据和方法。

b)      OGNL基本原理

                                                                i.             OGNL工具主要由三部分组成,具体如下:

1.       OGNL引擎

负责解析ONGL表达式,定位数据

2.       Root根存储区(Object类型)

负责存储要访问的目标对象。

3.       Context变量存储区(Map类型)

负责存放多个要访问的目标对象

c)       *OGNL基本语法

                                                                i.             访问root区域对象基本语法(Obj对象的存储形式)

1.       访问简单数据“属性”例如:”name”

2.       访问数据或者List集合:“属性[0]”

例如“arr[0]”;

3. 访问Map集合:”属性[‘key’]”或二者”属性.key”。例如map.key或者map[‘key’];

注意:第3种方式使用的时候,最好不要传入单字符,例如设置key为‘a’,‘1’之类的,在底层获取的时候,会把单字符转为数值类型,导致空null出现,得不到value值。

4. 访问方法:“属性值.方法()”,

例如“list.size()”

5.       访问构造方法:“new 包名.方法名()”;

例如:“new java.util.Date()”

6.       访问静态成员:“@包名.类名@成员”

例如:“@java.lang.Math@PI”

7.       构建List对象:“{元素1,元素2}”

8.       创建Map对象:“#{key1:value1,key2:value2}”

                                                              ii.             访问Context区域对象基本语法(Context区域是Map集合形式,存储了键值对)

采用“#key”方式,获取值

例如:Ognl.getvalue(“#name”,map,root);

2.       OGNL技术在Struts的使用

a)       在struts2中有一个ValueStack数据对象,该对象存储了请求相关的所有数据信息。例如request,session,application,action等

b)      Struts2采用OGNL工具对ValueStack进行操作

                                                                i.             Xwork中OGNL进行了部分改造

在xwork中将原来OGNL标准结构中root存储区改造成了一个栈结构。

当利用“属性”表达式访问时,先去站定对象寻找,没有再去找次栈顶寻找…..都没有找到的话,则返回空,底层封装了异常处理,不会报错。

                                                              ii.             ValueStack结构(封装了OGNL引擎,root区域,Context区域)

1.       root结构中Action对象放在栈顶,很有意义,基本上都是接收action请求

2.       Map结构中存放如下对象;

Request,  session , application , parameters , attr

                                                           iii.             Struts2标签的使用

在JSP中,利用Struts2标签现实数据,需要为标签指定OGNL表达式,标签利用表达式定位ValueStack中的数据,进行相应操作。

1.       debug标签:现实valuestack状态

2.       iterator标签:循环集合元素

a)       value属性:指定ognl

b)      var属性:指定循环变量,会被存放到valueStack的context区域。该变量有count属性表示一共循环了多少个元素。

c)       index属性表示当前循环的元素的索引

3.       if…else…标签:判断分支

a)       test属性:指定ognl

4.       property标签:显示数据

5.       date标签:将date类型的数据格式化输出

原创粉丝点击