Struts标签库结合OGNL的使用

1.OGNL:object graph navigation language(对象图导航语言),一般是和Struts标签库结合使用。

2.值栈:ValueStack,是对应每一个请求对象的轻量级的内存数据中心。

3.ActionContext:用于和web容器交换的对象。

发起请求时:web容器会在ActionContext中创建一个ValueStack,并实例化一个Action对象,将对象存入ValueStack中。在这个过程中拦截器会将请求的参数值设置给Action中对应的属性。对于ValueStack中的值可以通过OGNL来获取。

4.Struts标签库:使用方式与JSTL一致,基本涵盖所有JSTL。

引用代码如下:

<%@taglib prefix="s" uri="/struts-tags" %>
使用标签格式如下:

<s:property value="name"/>
<s:property value="#parameters.name"/>
<s:property value="%{#parameters.name}"/>
上面代码均能获取到name属性对应的属性值。

5.OGNL中的3个常用符号:#,%,$

Action对象是根对象。

#的作用:

(1)用于获取非根对象的属性对应的值:

获取parameters对象的属性对应的值

#parameters.name等同于request.getParameter(“name”);

获取request对象中的属性对应的值

#request.name等同于request.getAttribute(“name”);

获取session对象中的属性对应的值

#session.name等同于session.getAttribute(“name”);

获取application对象中的属性对应的值

… …

获取attr对象中的属性对应的值

如果是使用这种方法,会按照page-request-session-application依次查找属性。

(2)构造map集合对象

#{key:value,key:value,...}

(3)进行过滤筛选


%的作用:用于将属性字符串使用ognl表示,可以用于处理获取非根对象属性也非内置对象出现的值错误问题。

语法:属性值="%{OGNL表达式}"

对于<s:property/>标签:

<s:set name="val" value="%{'zhangsan'}"></s:set>
<s:property value="val123"/><br>
<s:property value="%{#val}"/><br>
<s:property value="#val"/><br>
<s:property value="val"/><br>
对于后四行获取值,最后三行都能获取到值,而第一个val123获取不到值,返回值为null。

对于<s:url></url>标签:

<s:url value="%{#val}"></s:url><br>
<s:url value="#val"></s:url><br>
<s:url value="val"></s:url><br>
只有第一个能获取到val对应的值,下面两个获取得值是错误的分别为#val,val。


$的作用:在配置文件中使用OGNL。

语法:${表达式}


阅读更多
文章标签: Struts标签库 OGNL
个人分类: JavaEE
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭