Java web 学习—struts2高级技术

OGNL表达式

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

特点:

1.支持对象方法的调用

2.支持静态方法的调用

3.支持变量的赋值

4.可以操作集合数据

Struts框架中的OGNL

     struts2中ognl作用与struts2中的ActionContext。

      接收一个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中更该:<constant name="struts.ognl,allowStaticMethodAccess" 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:变量名称

<s:set var="username" value="测试set标签" scrope="request”></s:set>

<s:property default="没有数据" value="#request.username"/>

3.a:构建超链接

4.param:对参数赋值

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

6.push:将对象或值压到值栈中并放置到顶部      <s:push value="#request.student"/>

7.date:格式化日期时间

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

9.url标签:

2.控制标签

1.if:<s:if>     <s:elseif>       <s:else>

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添加新功能

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

使用拦截器

直接使用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命名适用于多个请求处理方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 概述 什么是Struts2的框架Struts2是Struts1的下一代产品,是在 struts1和WebWork的...
    inke阅读 2,182评论 0 50
  • 标签 如果要配置的标签,那么必须要先配置标签,代表的包的概念。 包含的属性 name包的名称,要求是唯一的,管理a...
    偷偷得路过阅读 1,171评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,296评论 18 399
  • 非本人总结的笔记,抄点笔记复习复习。感谢传智博客和黑马程序猿记笔记啊记笔记 Ognl的简介 Ognl是独立的项目,...
    键盘瞎阅读 484评论 0 2
  • 很难有失落的情绪,但它确实存在,存于每个人的身体里,趁你不注意时爬出来,像藤蔓一样将整个人裹起来,然而这藤蔓没有绿...
    付西阅读 106评论 0 0