想做个简易计算器一直做不出来

img


设计一个web应用,有两个JSP页面ipputNumber jsp
和showResult.jsp、 一个javabean和一个servlet。 JSP
页面inputNumberjsp负 责提供表单,输入两个数和运算符号提交给servlet控制器;javabean负责存储运算数、运算符号和运算结果;servlet控制器负责
运算,将结果存储在javabean中,并负责请求JSP页面showResultjsp显示javabean中的数据。注意要对输入的数据合法性进行判断

实现这个 web 应用。

首先,我们需要创建一个 JavaBean 类来存储运算数、运算符号和运算结果。下面是一个简单的 JavaBean 模板:

java

public class Calculator {
    private double operand1;
    private double operand2;
    private char operator;
    private double result;

    public Calculator() {}
    
    // getter and setter methods for all fields

    public void calculate() {
        switch (operator) {
            case '+':
                result = operand1 + operand2;
                break;
            case '-':
                result = operand1 - operand2;
                break;
            case '*':
                result = operand1 * operand2;
                break;
            case '/':
                if (operand2 == 0) {
                    result = Double.NaN; // Indicate division by zero
                } else {
                    result = operand1 / operand2;
                }
                break;
            default:
                result = Double.NaN; // Indicate invalid operator
                break;
        }
    }
}
然后,我们需要创建一个 JSP 页面来显示表单,让用户输入两个数和运算符号,并将数据提交给 Servlet 控制器。下面是一个简单的 inputNumber.jsp 页面:

jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Calculator</title>
</head>
<body>
    <h1>Calculator</h1>
    <form action="CalculateServlet" method="post">
        Operand 1: <input type="number" name="operand1" required><br>
        Operand 2: <input type="number" name="operand2" required><br>
        Operator: <select name="operator" required>
            <option value="+">+</option>
            <option value="-">-</option>
            <option value="*">*</option>
            <option value="/">/</option>
        </select><br>
        <input type="submit" value="Calculate">
    </form>
</body>
</html>
在这个表单中,我们使用了 HTML 的 input 元素和 select 元素来让用户输入两个数和运算符号,并使用了 required 属性来确保用户必须输入这些值。

接下来,我们需要创建一个 Servlet 控制器来处理用户提交的表单数据并进行运算。下面是一个简单的 CalculateServlet 类:

java
@WebServlet("/CalculateServlet")
public class CalculateServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        double operand1 = Double.parseDouble(request.getParameter("operand1"));
        double operand2 = Double.parseDouble(request.getParameter("operand2"));
        char operator = request.getParameter("operator").charAt(0);
        
        Calculator calculator = new Calculator();
        calculator.setOperand1(operand1);
        calculator.setOperand2(operand2);
        calculator.setOperator(operator);
        calculator.calculate();
        
        HttpSession session = request.getSession();
        session.setAttribute("calculator", calculator);
        
        response.sendRedirect("showResult.jsp");
    }
}
在这个 Servlet 中,我们首先从 HTTP 请求中获取用户提交的参数值,然后创建一个 Calculator 对象并将参数值设置到它的相应字段中。接着,我们调用 Calculator 对象的 calculate() 方法计算结果,并将该对象存储在 HttpSession 中,然后重定向到 showResult.jsp 页面。

最后,我们需要创建一个 JSP 页面来显示 Calculator 对象中存储的结果。下面是一个简单的 showResult.jsp 页面:

jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Calculator Result</title>
</head>
<body>
    <h1>Calculator Result</h1>
    <%
        Calculator calculator = (Calculator) session.getAttribute("calculator");
        if (calculator != null) {
            out.println(String.format("%.2f %c %.2f = %.2f", calculator.getOperand1(), calculator.getOperator(), calculator.getOperand2(), calculator.getResult()));
        } else {
            out.println("No result available.");
        }
    %>
    <p><a href="inputNumber.jsp">Go back</a></p>
</body>
</html>


在这个 JSP 页面中,我们使用了 JavaBean 中的 getter 方法来获取 Calculator 对象中存储的结果,并使用了 String.format() 方法将结果格式化为带两位小数的字符串。如果 HttpSession 中没有存储 Calculator 对象,我们会显示一个“无结果可用”的消息。

最后,在这个 JSP 页面的底部,我们添加了一个链接,让用户可以返回到输入表单页面。

这样,我们就完成了一个简单的基于 Servlet 和 JSP 的计算器应用。当用户在输入表单中键入数据并提交表单时,Servlet 控制器会读取输入数据并计算结果,然后将结果存储在 HttpSession 中,并重定向到显示结果的 JSP 页面。在 JSP 页面中,我们从 HttpSession 中读取 Calculator 对象,并显示运算结果。

啊,哪里不会啊,这不是很简单吗?