jsp开发模式和web计算器案例

15 篇文章 0 订阅

sun公司推出了jsp以后,同时也推出了两种web应用程序的开发模式,一种是jsp+javabean的开发模式,一种是jsp+servler+javabean模式。

jsp+javabean的开发模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,javabean用于封装业务数据,jsp即负责用户处理请求,又显示数据。

jsp+servler+javabean(MVC)设计模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。

jsp+servler+javabean(MVC)设计模式程序各个模块之间层次清晰,web开发推荐采用这种模式。

使用jsp+javabean编写一个计算器页面,javabean具有firstNum,secondNum,Result,Operater属性,并提供一个calculate方法。

package cn.it.domain;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double a = 0.1;
		double b = 0.006;
		System.out.println(a+b);

	}

}

控制台:

0.10600000000000001

double类型的数据在进行相加时不能用于精确计算,在转换成二进制数据,因为位数的限制会出现数据省略的情况。

一般使用java.math.BigDecimal进行运算

BigDecimal a = new BigDecimal("0.1");
		BigDecimal b = new BigDecimal("0.006");
		System.out.println(a.add(b).toString());  //+
		System.out.println(a.multiply(b).toString());   //*
		System.out.println(a.divide(b, 10, BigDecimal.ROUND_HALF_UP));   //\
		System.out.println(a.subtract(b).toString());    // 

控制台

0.106
0.0006
16.6666666667
0.094

好了,开始编写web计算器的案例:

封装数据的javabean:swtich()变量类型只能是int、short、char、byte和enum类型。

package cn.it.domain;

import java.math.BigDecimal;


//封装计算机数据的javabean
public class Calculator {
	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 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 char getOperator() {
		return operator;
	}
	public void setOperator(char operator) {
		this.operator = operator;
	}
	
	
	public void calculate(){
		BigDecimal a = new BigDecimal(this.firstNum);
		BigDecimal b = new BigDecimal(this.secondNUm);
		switch (this.operator) {
			case '+':{
				this.result=a.add(b).toString();
				break;
			}	
			case '-':{
				this.result=a.subtract(b).toString();			
				break;
						}
			case '*':{
				this.result=a.multiply(b).toString();
				break;
			}
			case '/':{
				if(b.doubleValue()==0){
					
					throw new RuntimeException("被除数不能为0");
				}
				
				this.result=a.divide(b,20,BigDecimal.ROUND_HALF_UP).toString();
				break;
			}
			default:
				throw new RuntimeException("运算符只能是:+,-,*,/");
			}
		
		
		
	}

}

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'calculator.jsp' starting page</title>
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body style="text-align: center">
  <jsp:useBean id="caculatorBean" class="cn.it.domain.Calculator" ></jsp:useBean>
  <jsp:setProperty property="*" name="caculatorBean"/>
  <%
  try{
  caculatorBean.calculate();
  }catch(Exception e){
  out.write(e.getMessage());
  }
  
   %>
  <br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</br>
  	计算结果是:
  	<jsp:getProperty property="firstNum" name="caculatorBean"/>
  	<jsp:getProperty property="operator" name="caculatorBean"/>
  	<jsp:getProperty property="secondNUm" name="caculatorBean"/>
  	=
  	<jsp:getProperty property="result" name="caculatorBean"/>
  	
  <br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</br>
  
  	<form action="/day12/calculator.jsp" method="get">
    <table width="50%" border="1" style="margin:0 auto">
    	<tr>
    	<td colspan="2">简单web计算器</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页面展示:

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值