`
KimShen
  • 浏览: 34808 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

OGNL小应用-动态数学公式计算

阅读更多
OGNL解析器:
import ognl.Ognl;
import ognl.OgnlContext;
import ognl.OgnlException;
public class OgnlExpression {
/* 表达式 */
private Object expression;
/* expressionString为OGNL表达式 */
public OgnlExpression(String expressionString) throws OgnlException {
super();
/* Ognl存放表达式,此时还没有解析 */
expression = Ognl.parseExpression(expressionString);
}
/* 获得表达式 */
public Object getExpression() {
return expression;
}
/* 获取Ognl结果 */
//参数1:上下文.
//参数2:对象
public Object getValue(OgnlContext context, Object rootObject)throws OgnlException {
/* 开始解析 */
return Ognl.getValue(getExpression(), context, rootObject);
}
}


测试Servlet:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ognl.OgnlContext;
public class Test extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
// 创建OGNL上下文
OgnlContext context = new OgnlContext();
// 需要全类名
OgnlExpression expr = new OgnlExpression(request.getParameter("test"));
/* 指定表达式在指定上下文和根目录时返回的结果 */
System.out.println(expr.getValue(context, context));
System.out.println("表达式是:" + expr.getExpression());
} catch (Exception e) {
throw new RuntimeException();
}
}
}

测试JSP:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<form action="test" method="post">
<input type="text" name="test" />
<input type="submit" />
</form>
</body>
</html>

测试用例:
(1.12+13.4)/3.1*1.7
结果:
7.96258064516129
分享到:
评论

相关推荐

    ognl-3.1.12-API文档-中文版.zip

    赠送jar包:ognl-3.1.12.jar; 赠送原API文档:ognl-3.1.12-javadoc.jar; 赠送源代码:ognl-3.1.12-sources.jar; 赠送Maven依赖信息文件:ognl-3.1.12.pom; 包含翻译后的API文档:ognl-3.1.12-javadoc-API文档-...

    ognl-3.2.21-API文档-中文版.zip

    赠送jar包:ognl-3.2.21.jar; 赠送原API文档:ognl-3.2.21-javadoc.jar; 赠送源代码:ognl-3.2.21-sources.jar; 赠送Maven依赖信息文件:ognl-3.2.21.pom; 包含翻译后的API文档:ognl-3.2.21-javadoc-API文档-...

    ognl-3.0.5-sources.jar

    ognl-3.0.5源码 本人最近在研究s2sh源码,如有需要请留言。 在使用过程中如果有问题可联系,让我们开始学习s2sh源码总动员吧!

    ognl-3.2.21-API文档-中英对照版.zip

    赠送jar包:ognl-3.2.21.jar; 赠送原API文档:ognl-3.2.21-javadoc.jar; 赠送源代码:ognl-3.2.21-sources.jar; 赠送Maven依赖信息文件:ognl-3.2.21.pom; 包含翻译后的API文档:ognl-3.2.21-javadoc-API文档-...

    ognl-3.1.12-API文档-中英对照版.zip

    赠送jar包:ognl-3.1.12.jar; 赠送原API文档:ognl-3.1.12-javadoc.jar; 赠送源代码:ognl-3.1.12-sources.jar; 赠送Maven依赖信息文件:ognl-3.1.12.pom; 包含翻译后的API文档:ognl-3.1.12-javadoc-API文档-...

    ognl.jar资源包

    camel-ognl-1.6.4.jar, camel-ognl-2.8.1.jar, com.springsource.org.ognl-2.6.9.jar, com.springsource.org.ognl-sources-2.6.9.jar, ognl-2.5.1.jar, ognl-2.6.11.jar, ognl-2.6.3.jar, ognl-2.6.5.jar, ognl-...

    mina-integration-ognl-2.0.0-M4.jar

    mina-integration-ognl-2.0.0-M4.jar mina-integration-ognl-2.0.0-M4.jar

    ognl-2.7.3-src

    OGNL 是一个用于 Java 应用程序的通用表达式语言,它支持动态计算对象属性和方法调用。OGNL 提供了对 Java 对象图的导航能力,使得你可以通过简单的字符串表达式来访问和修改对象的属性,甚至可以执行复杂的逻辑...

    开发工具 ognl-3.1.12

    开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12...

    ognl-3.0-jars.zip

    **标题与描述解析** ...总的来说,"ognl-3.0-jars.zip" 提供了OGNL库的一个完整包,包括源码和运行时所需的二进制文件,适用于Java开发者进行程序设计,特别是需要动态访问和操作对象属性的场景。

    ognl-2.6.11-sources.rar

    标题中的"ognl-2.6.11-sources.rar"是一个压缩文件,其中包含了OGNL(Object-Graph Navigation Language)版本2.6.11的源代码。OGNL是一种强大的表达式语言,广泛用于Java应用程序,特别是Struts2框架中,用于数据...

    struts2对Ognl的封装--PropertyAccessor

    在实际应用中,Struts2的ActionContext类管理了OGNL的上下文,包含了当前执行环境的信息,包括PropertyAccessor。开发者可以通过ActionContext来注册自定义的PropertyAccessor,以扩展OGNL的能力,满足特定的需求。 ...

    ognl-2.6.7-doc

    标题 "ognl-2.6.7-doc" 暗示了这是一个关于OGNL(Object-Graph Navigation Language)的文档包,版本为2.6.7。OGNL是一种强大的表达式语言,广泛用于Java应用程序,特别是那些使用Struts2或Spring框架的项目中,用于在...

    ognl-2.6.11-javadoc.rar

    此压缩包“ognl-2.6.11-javadoc.rar”提供了OGNL 2.6.11版本的Java文档,是学习和理解OGNL语法与功能的重要参考资料。 首先,让我们深入了解OGNL的特性: 1. **表达式语法**:OGNL的表达式语法简洁而强大,支持点...

    ognl-2.6.9-doc.zip

    **ognl-2.6.9-doc.zip** 这个压缩包文件主要包含了OGNL(Object-Graph Navigation Language)版本2.6.9的完整文档和相关资源。OGNL是一种强大的表达式语言,广泛用于Java应用程序,特别是Spring框架中,用于在运行时...

    JavaEE源代码 ognl-2.6.11

    JavaEE源代码 ognl-2.6.11JavaEE源代码 ognl-2.6.11JavaEE源代码 ognl-2.6.11JavaEE源代码 ognl-2.6.11JavaEE源代码 ognl-2.6.11JavaEE源代码 ognl-2.6.11JavaEE源代码 ognl-2.6.11JavaEE源代码 ognl-2.6.11JavaEE源...

    ognl-3.0.6-sources.jar

    Ognl-3.0.6源代码,想研究学习ognl源码的可以看下。

    ognl-2.7 源码 和 jar包.rar

    OGNL-2.7源码和jar包的提供,意味着我们可以深入理解其内部工作机制,并在需要时进行自定义或调试。 **1. OGNL的基本概念** OGNL的主要功能是提供一种简洁的语法来访问和操作Java对象的属性。例如,`user.name`表示...

    struts2对Ognl的封装--TypeConverter

    不仅如此,OGNL还能处理方法调用、集合操作以及动态对象等高级特性。 在Struts2框架中,TypeConverter扮演着关键角色。当OGNL试图将字符串转换为特定类型以赋值给某个属性时,如果默认的转换机制无法满足需求,...

    ognl全部源码---特别贡献

    OGNL,全称为对象图导航语言,是一种强大的表达式语言,广泛应用于Java应用中,特别是Spring框架中的数据绑定和视图层表达式。它允许程序开发者以简洁的方式访问和操作对象图,包括属性设置、方法调用、数组和集合的...

Global site tag (gtag.js) - Google Analytics