JSP实现简单网页计算器
使用JSP实现一个简单的网页计算器,可以帮助我们更好地理解JSP的工作原理,以及前端与后端的交互。我们将创建一个基本的计算器,支持加、减、乘、除四种运算。
创建一个HTML页面,包含两个文本框用于输入数字,几个按钮表示运算符,以及一个文本框显示计算结果。
HTML
<form action="CalculatorServlet" method="post">
<input type="text" name="num1" placeholder="请输入第一个数字">
<input type="text" name="num2" placeholder="请输入第二个数字">
<button type="submit" name="operator" value="+">+</button>
<button type="submit" name="operator" value="-">-</button>
<button type="submit" name="operator" value="*">*</button>
<button type="submit" name="operator" va lue="/">/</button>
<input type="text" name="result" readonly>
</form>
创建一个Servlet,负责接收HTML表单提交的数据,进行计算,并将结果返回给浏览器。
Java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http. HttpServletResponse;
import java.io.IOException;
@WebServlet("/CalculatorServlet")
public class CalculatorServlet extends HttpS ervlet {
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 ");
double num1 = Double.parseDouble(num1Str);
double num2 = Double.parseDouble(num2Str);
double result = 0;
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num 2 == 0) {
// 处理除数为0的情况
request.setAttribute("error", "除数不能为0");
} else {
result = num1 / num2;
}
break;
}
request.setAttribute("result", result);
request.getRequestDispatcher("result.jsp").forward(request, response);
}
}
创建一个JSP页面,用于显示计算结果。
HTML
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>计算结果</title>
</head>
<body>
计算结果:${result}
<% if (request.getAttribute("error") != null) { %>
<p style="color: red;">${error}</p>
<% } %>
</body>
</html>
这个简单的计算器示例演示了JSP如何与Servlet交互,实现动态网页功能。通过不断扩展和完善,可以构建出更加复杂的Web应用程序。
想进一步了解哪个方面呢?
我可以为你提供更详细的解答。