实现这个 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 对象,并显示运算结果。
啊,哪里不会啊,这不是很简单吗?