首页 > 学院 > 开发设计 > 正文

el ognl jstl标签 struts标签

2019-11-11 04:09:00
字体:
来源:转载
供稿:网友

el是表达式语言,ognl也是表达式语言的一种,两者都是用来访问对象的属性的。。 ognl的名字的来头是—-图对象语言,这个不重要

el在jsp里面不用任何配置,直接就可以用,用法也很简单,基本格式就是 ${属性名字}默认是输出pageScope范围的属性 可以指定属性范围

${pageScope.info}${requestScope.info}${sessionScope.info}${applicationScope.info}

除了访问属性,还可以接受参数

${param.参数名称}接受一组参数${paramValues.参数名称}

如果访问的对象是集合,可以通过下标[]访问,也可以通过.符号访问

list集合 ${info[0]}或者${info.0}map集合 ${info["key"]}或者${ info.key}

再来说ognl表达式 相对EL表达式,它提供了平时我们需要的一些功能,如: * 支持对象方法调用,如xxx.sayHello(); * 支持类静态方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如: @java.lang.String@format(‘foo%s’, ‘bar’)或@cn.itcast.Constant@APP_NAME; * 操作集合对象。 * Ognl 有一个上下文(Context)概念,说白了上下文就是一个MAP结构,它实现了java.utils.Map接口,在Struts2中上下文(Context)的实现为ActionContext,下面是上下文(Context)的结构示意图

这里写图片描述

ognl context 就是 action context

这里写图片描述

当Struts2接受一个请求时,会迅速创建ActionContext,ValueStack,action 。然后把action存放进ValueStack,所以action的实例变量可以被OGNL访问

<s:PRoperty value="name"/>

ognl表达式要和struts标签配合使用,这里的”name”可以就可以输入ognl表达式

由于ValueStack(值栈)是Struts2中OGNL的根对象,如果用户需要访问值栈中的对象,在JSP页面可以直接通过下面的EL表达式访问ValueStack(值栈)中对象的属性: ${foo} //获得值栈中某个对象的foo属性

如果访问其他Context中的对象,由于他们不是根对象,所以在访问时,需要添加#前缀。 application对象:用于访问ServletContext,例如#application.userName或者#application[‘userName’],相当于调用ServletContext的getAttribute(“username”)。

session对象:用来访问HttpSession,例如#session.userName或者#session[‘userName’],相当于调用session.getAttribute(“userName”)。

request对象:用来访问HttpServletRequest属性(attribute)的Map,例如#request.userName或者#request[‘userName’],相当于调用request.getAttribute(“userName”)。

parameters对象:用于访问HTTP的请求参数,例如#parameters.userName或者#parameters[‘userName’],相当于调用request.getParameter(“username”)。

attr对象:用于按page->request->session->application顺序访问其属性。


采用OGNL表达式创建List/Map集合对象

如果需要一个集合元素的时候(例如List对象或者Map对象),可以使用OGNL中同集合相关的表达式。 使用如下代码直接生成一个List对象: 这里写图片描述

Set标签用于将某个值放入指定范围。 scope:指定变量被放置的范围,该属性可以接受application、session、request、page或action。如果没有设置该属性,则默认放置在OGNL Context中。 value:赋给变量的值.如果没有设置该属性,则将ValueStack栈顶的值赋给变量。


采用OGNL表达式判断对象是否存在于集合中,所以struts的判断标签还是很有用的,至于复杂的逻辑控制标签,switch,while,for什么的,我就不想去记那些该死的标签了,只要知道用判断标签,输出标签,表单标签,就差不多了

对于集合类型,OGNL表达式可以使用in和notin两个元素符号。其中,in表达式用来判断某个元素是否在指定的集合对象中;not in判断某个元素是否不在指定的集合对象中,如下所示。

这里写图片描述

OGNL表达式的投影功能

除了in和notin之外,OGNL还允许使用某个规则获得集合对象的子集,常用的有以下3个相关操作符。 ?:获得所有符合逻辑的元素。 ^:获得符合逻辑的第一个元素。 $:获得符合逻辑的最后一个元素。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表