JSP
[JSP] 홀 짝 게임
Puft
2025. 1. 23. 11:47
이번 시간에는 Servlet과 JSP를 활용해서
홀 짝 게임이 동작하는 페이지를 만들어보려고 합니다.
먼저 기능부터 구현해 보겠습니다.
기능 역할을 하는 클래스를 하나 생성하겠습니다.
int win = 0;
int t = 0;
int lose = 0;
먼저 전적을 넣을 변수를 만들어줍니다.
public class HJEngine {
private static final HJEngine hje = new HJEngine();
public static HJEngine getHje() {
return hje;
}
클래스 객체를 클래스 내에서 final로 생성해서
getter로만 해당 클래스를 가져올 수 있게
싱글톤 패턴으로 구현하였습니다.
public void getHJ(HttpServletRequest request) {
String result = "";
Random r = new Random();
int number = r.nextInt(100) + 1;
request.setAttribute("number", number);
if( number % 2 == 0) {
result = "j";
}else {
result = "h";
}
request.setAttribute("number", number);
if (result.equals(request.getParameter("choice")) ) {
request.setAttribute("r", "승");
win++;
t++;
}else {
request.setAttribute("r", "패");
lose++;
t++;
}
request.setAttribute("t",t + "전");
request.setAttribute("w",win + "승");
request.setAttribute("l",lose + "패");
}
홀짝 기능을 구현하는 함수입니다.
랜덤한 정수를 하나 생성해서
홀인지 짝인지에 따라서 result변수에
h또는 j를 넣고
equals기능을 써서
choice로 넘어온 사용자의 선택과
비교해서 같으면 win카운트롤 올리고
다르면 lose 카운트를 올립니다.
그리고 해당 카운트를
Attribute로 지정해
JSP에서 접근할 수 있게 해줍니다.
public void reset(HttpServletRequest request) {
t = 0;
win = 0;
lose = 0;
request.setAttribute("r", "전적 초기화 완료!");
}
초기화하는 함수입니다.
변수들을 0으로 초기화하면 됩니다.
다음은 Controller역할을 하는 Servlet 코드에 대해서 살펴보겠습니다.
import java.io.IOException;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Controller")
public class Controller extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Random r = new Random();
HJEngine hje = HJEngine.getHje();
hje.getHJ(request);
request.getRequestDispatcher("View.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HJEngine hje = HJEngine.getHje();
hje.reset(request);
request.getRequestDispatcher("View.jsp").forward(request, response);
}
}
GET요청을 받으면 기능을 하는 클래스 객체를 하나 생성하고
해당 함수의 홀짝 함수를 실행합니다.
그리고 JSP로 포워딩을 합니다.
POST 요청을 받으면
객체 생성후 리셋함수를 실행하고
JSP로 포워딩합니다.
마지막으로 View부분의 JSP코드입니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<link rel = "stylesheet" href = "View.css">
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class = "page">
<h1 class = "title">홀짝게임</h1>
<form action = "Controller" method = "post">
<button class = "reset">Reset</button>
</form>
<a href = "Controller?choice=h"><button>홀</button></a>
<a href = "Controller?choice=j"><button>짝</button></a>
<div class = "text-section">
<div class = "number">
${number }
</div>
<br>
결과 : ${r } <hr>
전적 : ${t } ${w } ${l }
</div>
</div>
</body>
</html>
리셋버튼을 누르면 Form의 Action기능을 사용해서 POST요청을 받고
홀 또는 짝 버튼을 누르면 파미터로 choice에 값을 넣어서 GET요청을 합니다
결과는 EL코드를 써서 출력합니다.
최종 페이지입니다.