На сервере не отображается ответ при калькуляции
После запуска программы( тестовый образец калькулятора) не выводится результат. Строка Result: ${requestScope.result} - не меняется, хотя вместо ${requestScope.result} должен выводиться результат. В это же время - консоль в intellij idea ответ выводит. То есть, при нажатии кнопки "calculate" на сервере изменений нет, а консоль выводит правильный ответ. При делении на ноль - сервер выводит прописанное в методе сообщение "You cannot divide by zero". В чем может быть проблема? Мой Сервлет:
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/calculate")
public class CalculatorServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
RequestDispatcher dispatcher = req.getRequestDispatcher("calculatorServlet.jsp");
dispatcher.forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
resp.setContentType("text/html");
PrintWriter writer;
writer = resp.getWriter();
String operation = req.getParameter("operation");
double firstOperand = Double.parseDouble(req.getParameter("firstOperand"));
double secondOperand = Double.parseDouble(req.getParameter("secondOperand"));
double result;
switch (operation) {
case "add":
result = firstOperand + secondOperand;
break;
case "subtraction":
result = firstOperand - secondOperand;
break;
case "multiply":
result = firstOperand * secondOperand;
break;
case "divide":
if (secondOperand != 0) {
result = firstOperand / secondOperand;
} else {
writer.println("You cannot divide by zero");
return;
}
break;
default:
writer.println("I don't know its operation!");
return;
}
req.setAttribute("result", result);
RequestDispatcher dispatcher = req.getRequestDispatcher("/calculatorServlet.jsp");
dispatcher.forward(req, resp);
System.out.println("Result: " + result);
}
}
мой jsp:
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<html>
<head>
<title>Calculate Page</title>
</head>
<body>
<h1>Calculate Page</h1>
<form action="calculate" method="post">
<label for="firstOperand">Enter number 1: </label>
<input type="text" id="firstOperand" name="firstOperand" required>
<label for="operation">Choose operation: </label>
<select id="operation" name="operation">
<option value="add">Addition</option>
<option value="subtraction">Subtraction</option>
<option value="multiply">Multiplication</option>
<option value="divide">Division</option>
</select>
<label for="secondOperand">Enter number 2: </label>
<input type="text" id="secondOperand" name="secondOperand" required>
<button type="submit">Calculate</button>
</form>
<div>
<c:if test="${not empty requestScope.result}">
<p>Result: ${requestScope.result}</p>
</c:if>
</div>
</body>
</html>
