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。

语法:${表达式}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值