简单的计算器
设计一个web应用,有两个JSP页面inputNumber.jsp和showResult.jsp、一个javabean和一个servlet。JSP页面inputNumber.jsp负责提供表单,输入两个数和运算符号提交给servlet控制器;javabean负责存储运算数、运算符号和运算结果;servlet控制器负责运算,将结果存储在javabean中,并负责请求JSP页面showResult.jsp显示javabean中的数据。注意要对输入的数据合法性进行判断。不用连接数据库。
CalculatorBean.java
public class CalculatorBean {
private double num1;
private double num2;
private String operator;
private double result;
public double getNum1() {
return num1;
}
public void setNum1(double num1) {
this.num1 = num1;
}
public double getNum2() {
return num2;
}
public void setNum2(double num2) {
this.num2 = num2;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public double getResult() {
return result;
}
public void setResult(double result) {
this.result = result;
}
public void calculate() {
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
result = num1 / num2;
break;
default:
break;
}
}
}
CalculatorServlet.java
public class CalculatorServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取表单参数
String num1Str = request.getParameter("num1");
String num2Str = request.getParameter("num2");
String operator = request.getParameter("operator");
// 判断参数是否为空
if (num1Str == null || num2Str == null || operator == null) {
response.sendRedirect("inputNumber.jsp");
return;
}
// 将参数转换为数值类型
double num1 = 0, num2 = 0;
try {
num1 = Double.parseDouble(num1Str);
num2 = Double.parseDouble(num2Str);
} catch (NumberFormatException e) {
response.sendRedirect("inputNumber.jsp");
return;
}
// 判断除数是否为0
if ("/".equals(operator) && num2 == 0) {
response.sendRedirect("inputNumber.jsp");
return;
}
// 计算结果
CalculatorBean calculator = new CalculatorBean();
calculator.setNum1(num1);
calculator.setNum2(num2);
calculator.setOperator(operator);
calculator.calculate();
// 将结果存储到request中,并请求showResult.jsp页面显示
request.setAttribute("calculator", calculator);
request.getRequestDispatcher("showResult.jsp").forward(request, response);
}
}
inputNumber.jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Calculator</title>
</head>
<body>
<h1>Calculator</h1>
<form action="CalculatorServlet" method="POST">
<input type="number" name="num1" required>
<select name="operator" required>
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="number" name="num2" required>
<button type="submit">Calculate</button>
</form>
</body>
</html>
showResult.jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Calculator Result</title>
</head>
<body>
<h1>Calculator Result</h1>
<p>num1: ${calculator.num1}</p>
<p>operator: ${calculator.operator}</p>
<p>num2: ${calculator.num2}</p>
<p>result: ${calculator.result}</p>
</body>
</html>
您可以向GPT进行提问,可以私聊我
以下复制自GPT
以下是简单的计算器应用的设计和实现:
设计Javabean - CalculationBean.java:
java
public class CalculationBean {
private String number1; //输入的第一个数
private String number2; //输入的第二个数
private String operator; //运算符号
private String result; //运算结果
//getter和setter方法
public String getNumber1() {
return number1;
}
public void setNumber1(String number1) {
this.number1 = number1;
}
public String getNumber2() {
return number2;
}
public void setNumber2(String number2) {
this.number2 = number2;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
创建inputNumber.jsp页面,提供表单让用户输入数字和运算符号:
html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Simple Calculator</title>
</head>
<body>
<h3>Simple Calculator</h3>
<form method="post" action="calculate">
Number 1: <input type="text" name="number1"><br><br>
Operator: <input type="text" name="operator"><br><br>
Number 2: <input type="text" name="number2"><br><br>
<input type="submit" value="Calculate">
</form>
</body>
</html>
创建servlet控制器 - CalculateServlet.java:
java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CalculateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
CalculationBean calculation = new CalculationBean();
String number1 = request.getParameter("number1");
String operator = request.getParameter("operator");
String number2 = request.getParameter("number2");
//判断输入是否为数字
if (isNumeric(number1) && isNumeric(number2)) {
calculation.setNumber1(number1);
calculation.setOperator(operator);
calculation.setNumber2(number2);
switch (operator) {
case "+":
calculation.setResult(Double.toString(Double.parseDouble(number1) + Double.parseDouble(number2)));
break;
case "-":
calculation.setResult(Double.toString(Double.parseDouble(number1) - Double.parseDouble(number2)));
break;
case "*":
calculation.setResult(Double.toString(Double.parseDouble(number1) * Double.parseDouble(number2)));
break;
case "/":
calculation.setResult(Double.toString(Double.parseDouble(number1) / Double.parseDouble(number2)));
break;
default:
calculation.setResult("Invalid