ognl和Struts2标签概述

本文介绍了OGNL表达式的基本概念及其在Struts2框架中的应用。重点讲解了如何使用OGNL进行对象方法调用及值栈操作,并通过实例演示了如何结合Struts2标签计算字符串长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ognl概述

ognl的作用

Struts2默认的表达式语言就是OGNL,它具有以下特点:

  • 支持对象方法调用。例如:objName.methodName()。
  • 支持类静态方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名|值名]。

例如:@java.lang.String@format(‘foo %s’,’bar’)。

  • 支持赋值操作和表达式串联。

例如:price=100,discount=0.8,calculatePrice(),在方法中进行乘法计算会返回80。

  • 访问OGNL上下文 (OGNL context)和 ActionContext。
  • 操作集合对象。

但是上面OGNL作用的访问方法啊等等,都不是经常用到的。我们用到的是下面这种!!!

之前web阶段,学习过EL表达式,EL表达式在JSP中获取域对象里面的值。

OGNL是一种表达式,这个表达式功能更加强大

  • 在Struts2里面操作值栈的数据!!
  • 一般ognl在struts2操作:和struts2标签一起使用操作值栈。

OGNL和struts2的关系:OGNL不是struts2的一部分,是一个单独的项目,只是经常和struts2一起使用

  • 使用ognl的时候,首先导入jar包。

ognl入门案例

使用OGNL+struts2标签实现计算字符串长度。

  • 支持对象方法调用objName.methodName();

  • 以前计算长度在java代码中,调用字符串.length();

使用struts2的标签

  • 使用jstl的时候,除了导入jar包外,还要在jsp页面引入标签库。struts2也是一样的!!!

具体细节代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="s" uri="/struts-tags" %><!-- 引入标签库 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'ognl.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">

  </head>

  <body>
        <s:property value="'huyibaoaitongzuo'.length()"/><!-- 在struts2标签中使用ognl表达式 -->
  </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值