JSP+JavaBea实现简单的Web计算器

本文介绍了一个基于JSP和JavaBean实现的简单Web版计算器应用案例。该计算器使用BigDecimal进行精确计算,并通过JSP页面接收用户输入,JavaBean进行计算逻辑处理。

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

Sun公司推出JSP之后,有两种设计方法供选择,一个是JSP+JavaBean来实现一些比较简单的案例,另一个就是使用JSP+Servlet+Javabean来实现较为复杂的案例,但是对于现在流行的MVC设计模式而言,后者无可厚非是最好的,前者现在几乎已经不再使用,但是作为一个案例,还是写了一个最简单的Web版面的计算器。

主要的注意点有,精确计算一定要使用BigDecimal类来完成,否则会出现不精确的失误,然后由于是JSP+ JavaBean,所以请求的处理都是在JSP页面里面实现的,其实这个是非常不好的,因为JSP里面几乎不要写代码的,即使出现代码也要使用标签去除。


下面是代码,首先是作为封装数据的JavaBean

package com.bird.domain; import java.math.BigDecimal; /** * @category 封装计算器数据的Bean * @author Bird * */ public class ClaculatorBean { private String firstNum = "0"; private char operator = '+'; private String secondNum = "0"; private String result; public String getFirstNum() { return firstNum; } public void setFirstNum(String firstNum) { this.firstNum = firstNum; } public char getOperator() { return operator; } public void setOperator(char operator) { this.operator = operator; } public String getSecondNum() { return secondNum; } public void setSecondNum(String secondNum) { this.secondNum = secondNum; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } public void calculate(){ BigDecimal first = new BigDecimal(this.firstNum); BigDecimal second = new BigDecimal(this.secondNum); switch (this.operator) { case '+':{ this.result = first.add(second).toString(); break; } case '-':{ this.result = first.subtract(second).toString(); break; } case '*':{ this.result = first.multiply(second).toString(); break; } case '/':{ if(second.doubleValue() == 0){ throw new RuntimeException("被除数不能为0"); } this.result = first.divide(second,20,BigDecimal.ROUND_HALF_UP).toString(); break; } default:{ throw new RuntimeException("运算符只能为+ - * /"); } } } }
第二个就是JSP界面

<%@page import="java.util.concurrent.ExecutionException"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>计算器</title> </head> <body style="text-align: center;"> <jsp:useBean id="claculatorBean" class="com.bird.domain.ClaculatorBean" scope="page"></jsp:useBean> <jsp:setProperty name="claculatorBean" property="firstNum" param="firstNum"/> <jsp:setProperty name="claculatorBean" property="operator" param="operator"/> <jsp:setProperty name="claculatorBean" property="secondNum" param="secondNum"/> <% try{ claculatorBean.calculate(); }catch(Exception e){ out.write(e.getMessage()); } %> <br>--------------------------------------------------------------<br/> 计算结果为: <jsp:getProperty name="claculatorBean" property="firstNum"/> <jsp:getProperty name="claculatorBean" property="operator"/> <jsp:getProperty name="claculatorBean" property="secondNum"/> = <jsp:getProperty name="claculatorBean" property="result"/> <br>--------------------------------------------------------------<br/> <form action="/Web/calculator.jsp" method="post"> <table width="40%" border="1"> <tr> <td colspan="2">简单的计算器</td> </tr> <tr> <td>第一个参数</td> <td> <input type="text" name="firstNum"> </td> </tr> <tr> <td>操作符</td> <td> <select name="operator"> <option value="+">+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> </td> </tr> <tr> <td>第二个参数</td> <td> <input type="text" name="secondNum"> </td> </tr> <tr> <td colspan="2"> <input type="submit" value="计算"> </td> </tr> </table> </form> </body> </html>
下面是运行效果图


可以通过定义一个复数类来实现复数的四则运算,结合 JSP 页面进行输入和输出。以下是一个简单实现: 首先定义一个复数类 Complex,包含实部和虚部两个属性,以及对应的 getter 和 setter 方法。同时实现复数的加、减、乘、除四种运算方法。 ```java public class Complex { private double real; private double imag; public Complex(double real, double imag) { this.real = real; this.imag = imag; } public double getReal() { return real; } public void setReal(double real) { this.real = real; } public double getImag() { return imag; } public void setImag(double imag) { this.imag = imag; } public Complex add(Complex c) { return new Complex(this.real + c.real, this.imag + c.imag); } public Complex sub(Complex c) { return new Complex(this.real - c.real, this.imag - c.imag); } public Complex mul(Complex c) { double real = this.real * c.real - this.imag * c.imag; double imag = this.real * c.imag + this.imag * c.real; return new Complex(real, imag); } public Complex div(Complex c) { double denominator = c.real * c.real + c.imag * c.imag; double real = (this.real * c.real + this.imag * c.imag) / denominator; double imag = (this.imag * c.real - this.real * c.imag) / denominator; return new Complex(real, imag); } } ``` 然后在 JSP 页面中,通过表单获取两个复数的实部和虚部,以及所要进行的运算类型。运算结果通过 JSP 页面进行输出。 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.example.Complex" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>复数四则运算</title> </head> <body> <h1>复数四则运算</h1> <form action="complex.jsp" method="post"> <label>第一个复数:</label> 实部:<input type="text" name="real1"> 虚部:<input type="text" name="imag1"><br> <label>第二个复数:</label> 实部:<input type="text" name="real2"> 虚部:<input type="text" name="imag2"><br> <label>运算类型:</label> <select name="op"> <option value="add">加</option> <option value="sub">减</option> <option value="mul">乘</option> <option value="div">除</option> </select><br> <input type="submit" value="计算"> </form> <% String real1Str = request.getParameter("real1"); String imag1Str = request.getParameter("imag1"); String real2Str = request.getParameter("real2"); String imag2Str = request.getParameter("imag2"); String op = request.getParameter("op"); if (real1Str != null && imag1Str != null && real2Str != null && imag2Str != null && op != null) { double real1 = Double.parseDouble(real1Str); double imag1 = Double.parseDouble(imag1Str); double real2 = Double.parseDouble(real2Str); double imag2 = Double.parseDouble(imag2Str); Complex c1 = new Complex(real1, imag1); Complex c2 = new Complex(real2, imag2); Complex result = null; if ("add".equals(op)) { result = c1.add(c2); } else if ("sub".equals(op)) { result = c1.sub(c2); } else if ("mul".equals(op)) { result = c1.mul(c2); } else if ("div".equals(op)) { result = c1.div(c2); } out.println("结果为:" + result.getReal() + "+" + result.getImag() + "i"); } %> </body> </html> ``` 这样,在浏览器中访问 complex.jsp 页面,即可进行复数的四则运算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值