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

33 篇文章 0 订阅

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>

下面是运行效果图


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值