javaweb计算器

简单的计算器
设计一个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