JavaBean计算器的实现

JSP+JavaBean编写一个计算器
2011-11-09 19:45:47       我来说两句        
收藏    我要投稿

 

Java

\

\

\

Jsp

\

\

 

下面是第二种实现方式

 

 

 

 

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

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


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

  1. package com.bird.domain;  
  2.   
  3. import java.math.BigDecimal;  
  4.   
  5. /** 
  6.  * @category 封装计算器数据的Bean 
  7.  * @author Bird 
  8.  * 
  9.  */  
  10. public class ClaculatorBean {  
  11.       
  12.     private String firstNum = "0";  
  13.     private char operator = '+';  
  14.     private String secondNum = "0";  
  15.     private String result;  
  16.       
  17.       
  18.       
  19.     public String getFirstNum() {  
  20.         return firstNum;  
  21.     }  
  22.   
  23.   
  24.   
  25.     public void setFirstNum(String firstNum) {  
  26.         this.firstNum = firstNum;  
  27.     }  
  28.   
  29.   
  30.   
  31.     public char getOperator() {  
  32.         return operator;  
  33.     }  
  34.   
  35.   
  36.   
  37.     public void setOperator(char operator) {  
  38.         this.operator = operator;  
  39.     }  
  40.   
  41.   
  42.   
  43.     public String getSecondNum() {  
  44.         return secondNum;  
  45.     }  
  46.   
  47.   
  48.   
  49.     public void setSecondNum(String secondNum) {  
  50.         this.secondNum = secondNum;  
  51.     }  
  52.   
  53.   
  54.   
  55.     public String getResult() {  
  56.         return result;  
  57.     }  
  58.   
  59.   
  60.   
  61.     public void setResult(String result) {  
  62.         this.result = result;  
  63.     }  
  64.   
  65.   
  66.   
  67.     public void calculate(){  
  68.         BigDecimal first = new BigDecimal(this.firstNum);  
  69.         BigDecimal second = new BigDecimal(this.secondNum);  
  70.           
  71.         switch (this.operator) {  
  72.             case '+':{  
  73.                 this.result = first.add(second).toString();  
  74.                 break;  
  75.             }  
  76.               
  77.             case '-':{  
  78.                 this.result = first.subtract(second).toString();  
  79.                 break;  
  80.             }  
  81.               
  82.             case '*':{  
  83.                 this.result = first.multiply(second).toString();  
  84.                 break;  
  85.             }  
  86.               
  87.             case '/':{  
  88.                 if(second.doubleValue() == 0){  
  89.                     throw new RuntimeException("被除数不能为0");  
  90.                 }  
  91.                 this.result = first.divide(second,20,BigDecimal.ROUND_HALF_UP).toString();  
  92.                 break;  
  93.             }  
  94.       
  95.             default:{  
  96.                 throw new RuntimeException("运算符只能为+ - * /");  
  97.             }  
  98.         }  
  99.     }  
  100.       
  101. }  
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界面

  1. <%@page import="java.util.concurrent.ExecutionException"%>  
  2. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.   <head>  
  7.     <title>计算器</title>  
  8.       
  9.   </head>  
  10.     
  11.   <body style="text-align: center;">  
  12.     
  13.   <jsp:useBean id="claculatorBean" class="com.bird.domain.ClaculatorBean" scope="page"></jsp:useBean>  
  14.   <jsp:setProperty name="claculatorBean" property="firstNum" param="firstNum"/>  
  15.   <jsp:setProperty name="claculatorBean" property="operator" param="operator"/>  
  16.   <jsp:setProperty name="claculatorBean" property="secondNum" param="secondNum"/>  
  17.     
  18.   <%  
  19.   try{  
  20.     claculatorBean.calculate();  
  21.     }catch(Exception e){  
  22.         out.write(e.getMessage());  
  23.     }  
  24.    %>  
  25.      
  26.    <br>--------------------------------------------------------------<br/>  
  27.     计算结果为:  
  28.     <jsp:getProperty name="claculatorBean" property="firstNum"/>  
  29.     <jsp:getProperty name="claculatorBean" property="operator"/>  
  30.     <jsp:getProperty name="claculatorBean" property="secondNum"/>  
  31.     =  
  32.     <jsp:getProperty name="claculatorBean" property="result"/>  
  33.                   
  34.    <br>--------------------------------------------------------------<br/>  
  35.     
  36.     
  37.   <form action="/Web/calculator.jsp" method="post">  
  38.   <table width="40%" border="1">  
  39.       <tr>  
  40.             <td colspan="2">简单的计算器</td>  
  41.       </tr>  
  42.     
  43.       <tr>  
  44.             <td>第一个参数</td>  
  45.             <td>  
  46.                 <input type="text" name="firstNum">  
  47.             </td>  
  48.       </tr>  
  49.       
  50.       <tr>  
  51.         <td>操作符</td>  
  52.         <td>  
  53.             <select name="operator">  
  54.                 <option value="+">+</option>  
  55.                 <option value="-">-</option>  
  56.                 <option value="*">*</option>  
  57.                 <option value="/">/</option>  
  58.             </select>  
  59.         </td>  
  60.     </tr>  
  61.       
  62.       
  63.     <tr>  
  64.         <td>第二个参数</td>  
  65.         <td>  
  66.         <input type="text" name="secondNum">  
  67.         </td>  
  68.     </tr>  
  69.       
  70.       
  71.       
  72.     <tr>  
  73.         <td colspan="2">  
  74.             <input type="submit" value="计算">  
  75.         </td>  
  76.           
  77.     </tr>  
  78.     
  79.   </table>  
  80.   </form>  
  81.   </body>  
  82. </html>  
<%@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>


下面是运行效果图


 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值