JSP

[JSP] 25. JSP와 HTML을 사용해 계산기 만들기

Song hyun 2024. 7. 4. 11:48
728x90
반응형

[JSP] 25. JSP와 HTML을 사용해 계산기 만들기

 

1. HTML로 폼 만들기

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div class="container">
		<h1>간단한 계산기</h1>
		<form action="calculate.jsp" method="POST">
			<label for="num1">첫번째 숫자를 입력하세요.</label>
			<input type="number" id="num1" name="num1" required="required">
			
			<label for="num2">두번째 숫자를 입력하세요.</label>
			<input type="number" id="num2" name="num2" required="required">
			
			<input type="submit" value="계산 요청하기">
		</form>
	</div>
</body>
</html>

 

 

2. CSS로 폼 꾸미기

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
	body{
		display: flex;
		height: 100vh;
		justify-content: center;
		align-items: center;
		margin: 0;
		background-color: #f0f0f0;
	}
	.container{
		background-color:white;
		padding: 20px;
		border-radius: 8px;
		box-shadow: 0 0 10px rgba(0,0,0,0.1);
		width: 300px;
	}
	form {
		display: flex;
		flex-direction:column;
	}
	label{
		margin-bottom:5px;
		font-weight:bold;
	} 
	input[type="number"]{
		margin-bottom:15px;
		padding:10px;
		border: 1px solid #ccc;
		border-radius:4px;
	}
	input[type="submit"]{
		padding:10px;
		background-color: #45a049;
		color: white;
		cursor: pointer;
		border-radius:4px;
		border: none;
	}
	input[type="submit"]:hover{
		background-color: #FFBF00;
	}
	
</style>
</head>
<body>
	<div class="container">
		<h1>간단한 계산기</h1>
		<form action="calculate.jsp" method="POST">
			<label for="num1">첫번째 숫자를 입력하세요.</label>
			<input type="number" id="num1" name="num1" required="required">
			
			<label for="num2">두번째 숫자를 입력하세요.</label>
			<input type="number" id="num2" name="num2" required="required">
			
			<input type="submit" value="계산 요청하기">
		</form>
	</div>
</body>
</html>

 

 

3. JSP로 작동시키기

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
	body{
		display: flex;
		height: 100vh;
		justify-content: center;
		align-items: center;
		margin: 0;
		background-color: #f0f0f0;
	}
	.container{
		background-color:white;
		padding: 20px;
		border-radius: 8px;
		box-shadow: 0 0 10px rgba(0,0,0,0.1);
		width: 300px;
	}
	form {
		display: flex;
		flex-direction:column;
	}
	label{
		margin-bottom:5px;
		font-weight:bold;
	} 
	input[type="number"]{
		margin-bottom:15px;
		padding:10px;
		border: 1px solid #ccc;
		border-radius:4px;
	}
	input[type="submit"]{
		padding:10px;
		background-color: #45a049;
		color: white;
		cursor: pointer;
		border-radius:4px;
		border: none;
	}
	input[type="submit"]:hover{
		background-color: #FFBF00;
	}
	
</style>
</head>
<body>
	<div class="container">
		<h1>간단한 계산기</h1>
		<form action="calculate.jsp" method="POST">
			<label for="num1">첫번째 숫자를 입력하세요</label>
			<input type="number" id="num1" name="num1" required="required">
			
			<label for="num2">두번째 숫자를 입력하세요:</label>
			<input type="number" id="num2" name="num2" required="required">
			
			<input type="submit" value="계산 요청하기">
		</form>
	</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산 결과</title>
</head>
<body>
	<h1>계산 결과</h1>
	<%-- JSP 주석 입니다! --%>
	<%
		// -> 스크립트릿 / 코드 실행 영역
		// 폼에서 데이터 추출
		String num1=request.getParameter("num1");
		String num2=request.getParameter("num2");
		int int1=Integer.parseInt(num1);
		int int2=Integer.parseInt(num2);
		
		int plus=int1+int2;
		int minus=int1-int2;
		int times=int1*int2;
		int div=int1/int2;
		
		// 방어적 코드 작성
		if(num1==null || num2==null || num1.trim().isEmpty() || num2.trim().isEmpty()){
			out.println("<p>앗, 숫자를 입력하지 않았습니다! 다시 입력해주세요. </p>");
		} else{
			out.println("<p> 더하기 : "+int1+" + "+int2+" = "+plus+"</p>");
			out.println("<p> 빼기 : "+int1+" - "+int2+" = "+minus+"</p>");
			out.println("<p> 곱하기 : "+int1+" * "+int2+" = "+times+"</p>");
			out.println("<p> 나누기 : "+int1+" % "+int2+" = "+div+"</p>");
		}
		
		// 계산의 결과를 스트림을 통해 내려주기
		
	%>
	<a href="caculator.html">Back</a>
</body>
</html>

 

 

*방어적 코드

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            display: flex;
            height: 100vh;
            justify-content: center;
            align-items: center;
            margin: 0;
            background-color: #f0f0f0;
        }
        .container{
            width: 300px;
            background-color: #fff;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        form{
            display: flex;
            flex-direction: column;
        }
        label{
            margin-bottom: 10px;
        }

        input[type="number"] {
            height: 30px;
            border: 1px solid #bababa;
            border-radius: 5px;
            margin-bottom: 20px;
        }
        input[type="submit"] {
                height: 40px;
                border-radius: 5px;
                border: 0;
                background-color: #45a049;
                color: #fff;
        }
        input[type="submit"]:hover{
            background-color: #1c5a1f;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>간단한 계산기</h1>
        <form action="calculate.jsp" method="post">
            <label for = "num1">첫번째 숫자를 입력하세요</label>
            <input type="number" id="num1" name="num1" required="required" value="10">
            
            <label for = "num2">첫번째 숫자를 입력하세요</label>
            <input type="number" id="num2" name="num2" required="required" value="20">
            <input type="submit" value="계산 요청하기">
        </form>
    </div>
</body>
</html>
728x90
반응형