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

时间:2023-03-10 00:02:19
jsp开发模式和web计算器案例
 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'Calculator.jsp' starting page</title> </head> <body> <jsp:useBean id="Calculator" class="cn.itcast.domain.Calculator"></jsp:useBean>
<jsp:setProperty property="*" name="Calculator"/> <%
try{
Calculator.calculate();
}catch(Exception e){
out.write(e.getMessage());
}
%> <br/>--------------------------------------------<br/>
计算的结果是:
<jsp:getProperty name="Calculator" property="firstnum"/>
<jsp:getProperty name="Calculator" property="operator"/>
<jsp:getProperty name="Calculator" property="secondnum"/>
=
<jsp:getProperty name="Calculator" property="result"/>
<br/>--------------------------------------------<br/>
<br/>
<form action="/JSPDemo/Calculator.jsp" method="post" style="text-align:center;">
<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>

Calculator.jsp

 package cn.itcast.domain;

 import java.math.BigDecimal;

 //封装计算器数据的bean
public class Calculator { private String firstnum = "0";
private String secondnum = "0";
private char operator = '+';
private String 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("运算符只能+-*/");
} } 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 char getOperator() {
return operator;
} public void setOperator(char operator) {
this.operator = operator;
} public String getResult() {
return result;
} public void setResult(String result) {
this.result = result;
}
}

Calculator