Java web 学习—struts2高级技术

OGNL表达式

       自动导航对象的结构并访问和设置对象数据,核心对象是ognl上下文(一个Map容器),可以存放多的对象

特点:

1.支持对象方法的调用

2.支持静态方法的调用

3.支持变量的赋值

4.可以操作集合数据

Struts框架中的OGNL

     struts2中ognl作用与struts2中的ActionContext。

Java web 学习—struts2高级技术_第1张图片

      接收一个action请求时会创建ActionContext对象并实例化

获取值栈对象:${user.name}

获取application:#application.name或#application.['name']    :相当于调用application.getAttribute("name");

获取request:#request.name或#request.['name']

获取session:#session.name或#session.['name']

获取parameters:#parameters.name或#parameters.['name']

获取attr:不指定范围时按page, request, session, application 次序搜索:#attr.name或#attr.['name']

         在使用Struts2标签时需要引用Struts2的标签库,在jsp头部通过<%@ taglib prefix="s" uri="/struts-tags"%>

访问静态方法与属性

调用Bean.NAME静态属性  : @com.lyq.bean.Bean@NAME

调用静态方法:            @com.lyq.bean.Bean@greeting()

默认情况下struts2不允许ognl 调用静态方法。需要在struts.xml中更该:value="true">

访问List,Set,Map集合

List集合:list[0]\

Set集合:无序集合不能通过下标值方式访问

Map集合:map.key或map.['key']             访问所有的key:map.keys

判断元素是否为空:collection.isEmpty()           collection.size

投影和选择

投影:获取集合中某列的所有数据     值栈中: list.{数据}     非值栈:#list.name

选择:获取集合中满足条件的选择操作:值栈:list.{?#this.age>10}   非值栈:#list.{?#this.age>10}\

?:获取满足指定条件的所有元素

^:获取满足指定条件的第一个元素

$:获取指定条件的最后一个元素

Struts2标签库

1.数据标签

1.property:获取数据值并将数据直接输出到页面中

2.set:定义百年灵并赋值及设置变量的作用域

scrope:设置变量作用域(application,request,session,page,action(默认))

value:变量的值

var:变量名称

3.a:构建超链接

4.param:对参数赋值

5.action:执行action请求并选择返回结果输出到当前jsp页面中

6.push:将对象或值压到值栈中并放置到顶部      

7.date:格式化日期时间

8.include:包含一个页面:<%@ include file="一个jsp页面或者servlet"%>

9.url标签:

2.控制标签

1.if:          

2.iterator:用于迭代数据   begin:起始位置    end结束位置   status迭代状态   step每次迭代增加量  value:集合或数组对象   var迭代元素变量,指定后迭代的变量将压入到值栈中

元素数:st.count    是否为第一个元素   st.first    是否为最后一个元素: st.last  当前索引值:st.index  索引值是否为偶数:st.even  索引值是否为奇数:st.odd

拦截器

       拦截器可以动态增强action对象的功能,动态的作用于Action和Result之间,动态的为action和result添加新功能

Java web 学习—struts2高级技术_第2张图片

拦截器对Action对象进行拦截操作的顺序图:

Java web 学习—struts2高级技术_第3张图片

使用拦截器

直接使用AbstractInterceptor对象实现Interceptory接口 

数据验证机制

手动验证:ActionSupport对Validateable接口进行了实现,但对validate()方法是一个空实现,通过validate()方法验证数据有效性时直接重写validate()

验证文件命名规则:名称必须是ActoinName-validation.xml或ActionName-AliasName-validation.xml            ActoinName 是Action对象的名称            AliasNameAction配置的名称

以ActoinName-validation.xml命名数据的验证会作用到整个Action对象中,并验证Action对象的请求业务处理方法,适用于action对象处理方法单一或验证处理规则相同\

以ActionName-AliasName-validation.xml命名适用于多个请求处理方法

你可能感兴趣的:(Java web 学习—struts2高级技术)