Struts2_19_OGNL标签学习

来源:互联网 发布:csol游戏数据异常 编辑:程序博客网 时间:2024/06/16 13:52

一. 开始

我跟着视频学习ognl,一开始我也不知道什么是ognl表达式,所以如果有人看到这里,希望可以看下面一个简单的示例,就会明白他的作用。

其实ognl表达式语法和面向对象语法很像,很简单。

二.具体操作

1. 准备工程

新建一个工程,导入jar宝,修改web.xml

增加struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <!-- 添加了这个表示处于开发模式,更改文件不需要重启服务器就可以得到及时的反馈 -->    <constant name="struts.devMode" value="true" />      <package name="ognl" namespace="/ognl" extends="struts-default">        <action name="ognl"  class="com.shiyang.Action.OgnlTestAction">            <result>                 /OGNLTest.jsp            </result>        </action>    </package></struts>
新建java包、OgnlTestAction类、和OGNLTest.jsp,之后的示例操作会主要编写这几个文件

2. 利用ognl标签访问值栈中action的普通成员(这个之前已经做过了,通过这个明白什么是ognl):

编写index.jsp,完成跳转和传参数

action中编写,添加参数变量和getset


编写OGNLTest.jsp显示两个参数的值:

运行结果:

OGNL表达式是下图中红圈部分,红圈外面是标签,表达是表达式,是引号里面的东西,我们只需要关注引号中的部分。


3. 访问值栈中普通对象的属性

新建一个User类,添加一个age属性,添加getset和toString方法

修改action

修改jsp页面显示数据

显示结果;

注意: 1.值栈中的对象只有传值之后才会实例化,如果我们没有传参数,值栈中user将会是null,另外如果在代码中为user提供参数构造并且在action中new user(10);也会正常显示

2. domain类必须要显示的写无参构造。

4. 访问值栈中对象的对象的属性

新建cat和dog类:

dog类:

cat类:

编写action

编写显示jsp

编写index.jsp传参数:

运行结果:

5. 访问值栈中对象普通方法(java方法)

修改显示jsp:

显示结果:

我们可以看到,我们用对象 点出了java的length方法获得长度。

我们再来一个,在cat类中添加方法:

显示jsp中调用:

结果

再来一个,在action中添加一个方法:

修改显示jsp:

显示结果:

6. 访问静态方法

首先在struts.xml中配置一个:

新建一个类,新建静态方法:

修改显示jsp:注意使用@包名类名@方法

显示结果:

7. 静态属性

在上一个类中添加静态变量:

       修改显示jsp:

显示结果:

8. 访问Math类中的方法

显示结果:

9. 访问普通类中的构造方法

现在User中添加带参数的构造。

修改显示jsp:

结果:

10. 访问值栈中的集合,list、set、map

修改action类:

修改显示类:

显示结果:


11. 投影(过滤)

?代表条件,^代表从前面第一个$代表从最后面一个

显示结果

12 ,最后一个:  []

显示结果;

注意

如果是[0]代表了值栈中所有的值

我们的action永远在最上面,如果是服务器跳转,会有多个action在值栈中。

0 0
原创粉丝点击