网页计算器是方便用户进行数学计算的一种有力工具。传统的网页计算器通过纯JvaScript在客户端实现,计算逻辑易被用户获取,安全性不高。通过Ajax优化过的网页计算器将主要的计算逻辑放在服务器端进行运算,客户端服装收集用户输入的表达式,提高了程序的安全性非常适合于有安全要求的场合。
/* * 网页计算器示例 */ Ext.onReady(function() { Ext.onReady(function() { var calpanel = new Ext.panel.Panel({ title: '计算器', renderTo: Ext.getBody(), bodyPadding: 5, width: 270, layout: { type: 'table', columns: 5 //设置表格布局默认列数 }, frame: true, tbar: ['公式:',new Ext.form.field.Text({ id: 'expression', readOnly: true, style: 'text-align:right' }), '=', new Ext.form.field.Text({ id: 'result', width: 60 })], defaultType: 'button', defaults: { minWidth: 50, handler: btnClick }, items: [{ text: '1',symbol: '1' }, { text: '2',symbol: '2' }, { text: '3',symbol: '3' }, { text: '(',symbol: '(' },{ text: ')',symbol: ')' }, { text: '4',symbol: '4' }, { text: '5',symbol: '5' }, { text: '6',symbol: '6' }, { text: '+',symbol: '+' },{ text: '-',symbol: '-' }, { text: '7',symbol: '7' }, { text: '8',symbol: '8' }, { text: '9',symbol: '9' }, { text: '×',symbol: '*' }, { text: '÷',symbol: '/' }, { text: '0',symbol: '0' }, { text: '.',symbol: '.' }, { text: '=',symbol: '=' }, { text: 'c',symbol: 'clear' }, { text: '<―',symbol: 'back' }] }) //取得id为expression的组件引用 var expression = Ext.getCmp('expression'); //取得id为result的组件引用 var result = Ext.getCmp('result'); //按钮单击事件的处理函数 function btnClick(btn) { var oldValue = expression.getValue(); if(btn.symbol == 'back') { //取消最后一次输入的字符 oldValue = oldValue.substring(0, oldValue.length - 1); } else if(btn.symbol == 'clear') { //清空表达式和结果 oldValue = ''; result.setValue(''); } else if(btn.symbol == '=') { //计算表达式 calculate(); } else if(btn.symbol == '.') { alert(oldValue.indexOf('.')) if(oldValue.indexOf('.') != -1) { return; } oldValue += btn.symbol; } else { //累计表达式字符串 oldValue += btn.symbol; } expression.setValue(oldValue); } //计算表达式函数 function calculate() { var str = expression.getValue(); //判断表达式是否为空 if(!Ext.isEmpty(str)) { //将表达式发送到服务器进行计算 Ext.Ajax.request({ url: 'calculateServer.jsp', params: { Exp: str }, callback: function(options, success, response) { if(success) { result.setRawValue(response.responseText); } else { result.setRawValue('error'); } } }) } } }) })
服务器端代码:
在服务端使用Apache的commons-jexl-1.1.jar解析表达式字符串并进行计算
<%@ page language="java" contentType="text/html;charset=utf-8" import="java.util.*" pageEncoding="utf-8"%> <%@ page import="org.apache.commons.jexl.*" %> <% String jexlExp = request.getParameter("Exp"); System.out.println(jexlExp); Expression e = ExpressionFactory.createExpression(jexlExp); JexlContext jc = JexlHelper.createContext(); Object result = e.evaluate(jc); response.getWriter().write(result.toString()); %>
相关推荐
打印功能 ext.js,打印功能 ext.js,打印功能 ext.js,打印功能 ext.js,打印功能 ext.js
ext编辑工具,学习ext的可以下载来用
ext学习资料ext学习资料ext学习资料ext学习资料ext学习资料ext学习资料ext学习资料ext学习资料ext学习资料
学习Extjs时,引入这个文件头,可以在VS2008里面进行智能提醒,Extjs里有部分功能可以提示
这里提供一些Ext js的一些示例及源码,仅供参考
最新ext.net纯官方框架源码+示例,附带VS2008和VS2010项目文件,亲测可用。
ext学习资料 ext ext技术资料
ext 实例 示例 实例 示例 ext 实例 示例 实例 示例
一个很经典的Ext的示例,有兴趣的可以下载下来看看!
Ext实现的仿windows界面示例.rarExt实现的仿windows界面示例.rarExt实现的仿windows界面示例.rar
ext实验 主要 tree grid等学习记录ext 学习记录学习记录ext 学习记录学习记录ext 学习记录学习记录ext 学习记录
springMVC+hibernate+ext搭建的一个demo示例 (内含数据库脚本 mysql)
1.入门 2.ext事件处理 3.面板 4.工具栏 5.Viewport 6.窗口 7.对话框 内附:ext语法总结.txt
EXT JS 3.0脚本源码及示例程序,很好的一个Ajax库
不错ext学习网站不错ext学习网站不错ext学习网站
Ext 2例子,几乎包含了ext的各种样式希望能够帮助大家
EXT dojoChina按钮控件示例 Ext.Button.rarEXT dojoChina按钮控件示例 Ext.Button.rarEXT dojoChina按钮控件示例 Ext.Button.rarEXT dojoChina按钮控件示例 Ext.Button.rar
Extjs的uploadDialog网上发布的正式版只有2.x版本。一些人做的3.x版本经使用效果不好。现改造Ext UploadDialog For Ext3.2.1版本及使用的示例供大家使用。
环境:Windows XP SP2、IE 7.0、Ext 3.2.1、MyEclipse 5.5、Tomcat 6.0 使用步骤: 1、下载解压缩之后,使用MyEclipse导入工程 2、把工程发布到服务器 3、在IE的地址栏输入http://localhost:8080/ExtTemplate/之后...
EXT学习心得,EXT学习心得,EXT学习心得