728x90
반응형
숫자계산 프로그램
요구사항
1) 사용자 인터페이스
2) 설명 : 메뉴 기반의 텍스트 사용자 인터페이스 제공
3) 사례 : "1. 더하기 2. 빼기 3. 곱하기 4. 나누기"
4) 핵심 : 사용자가 쉽게 각 기능을 선택
예외 처리
1) 설명 : 파일 입출력 및 잘못된 입력에 대한 예외 처리
2) 사례 : 파일이 없을 경우, 잘못된 수량 입력
3) 핵심 : 안정적인 프로그램 동작 보장
Calculate.jsp
0.00MB
Calculation.java
0.00MB
Calculate.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<style>
#container{
text-align: center;
border: 3px solid skyblue;
width: 500px;
height: 200px;
margin: 0 auto;
font-weight: bolder;
color: skyblue;
}
</style>
<body>
<div id="container">
<h2>계산기 서블릿</h2>
<br>
<form method="post" action="/JSP/calc">
<input type="text" name="n1" size="10"><select name="op">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select> <input type="text" name="n2" size="10">
<input type="submit" value="실행">
</form>
</div>
</body>
</html>
Calculation.jsp
package common;
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;
/**
* Servlet implementation class Calculation
*/
@WebServlet("/calc")
public class Calculation extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Calculation() {
super();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String number1 = request.getParameter("n1");
String number2 = request.getParameter("n2");
String operator = request.getParameter("op");
double result = 0;
boolean valid = true;
double num1 = 0;
double num2 = 0;
try {
num1 = Double.parseDouble(number1);
num2 = Double.parseDouble(number2);
} catch (NumberFormatException e) {
valid = false;
result = Double.NaN;
}
if (valid) {
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 != 0) {
result = num1 / num2;
} else {
valid = false;
result = Double.NaN;
}
break;
default:
valid = false;
result = Double.NaN;
}
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<style>");
out.println("body { text-align: center; border: 3px solid skyblue; width: 300px; height: 150px; margin: 0 auto; }");
out.println("h2 { color: skyblue; }");
out.println("p { font-size: 20px; }");
out.println("a { color: blue; text-decoration: none; }");
out.println("</style>");
out.println("<html><body>");
out.println("<h2>Calculation Result</h2>");
if (valid) {
out.println("<p>" + number1 + " " + operator + " " + number2 + " = " + result + "</p>");
} else {
out.println("<p>Invalid input or operation.</p>");
}
out.println("<a href=\"javascript:history.back()\">Go back</a>");
out.println("</body></html>");
}
}
728x90
반응형
'JSP' 카테고리의 다른 글
JSP EL (Expression Language)_2024-09-02 (0) | 2024.09.02 |
---|---|
JSP(상품재고조회 프로그램)_2024-08-30 (2) | 2024.09.02 |
JSP(회원 정보 관리 프로그램)_2024-08-29 (0) | 2024.08.30 |
JSP(Oracle_DB업로드)_2024 (0) | 2024.08.28 |
JSP(화면설계 사용자 인터페이스 구현 UI 디자인)_2024-08-27 (0) | 2024.08.27 |