<5. Session을 이용한 상태정보 유지하기>
참고: [boostcourse full-stack] http://www.edwith.org/boostcourse-web
- /guess로 요청을 하면 컴퓨터가 1부터 100 사이의 임의의 값 중의 하나를 맞추는 메시지 출력 (해당 값은 세션에 저장)
- 사용자는 1부터 100 사이의 값을 입력
- 입력한 값이 세션 값보다 작으면, 입력한 값이 작다고 출력
- 입력한 값이 세션 값보다 크면, 입력한 값이 크다고 출력
- 입력한 값이 세션 값과 같다면 몇 번째에 맞췄다고 출력
GuessNumberController
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package kr.or.connect.guestbook.controller; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class GuessNumberController { //guess라고 요청했을 때 수행 @GetMapping("/guess") public String guess(@RequestParam(name="number", required=false) Integer number, HttpSession session, ModelMap model) { String message = null; // get방식으로 /guess 를 요청하는데 파라미터 number가 없을 경우에는 session에 count를 0으로 randomNumber엔 1부터 100사이의 값을 저장합니다. if(number == null) { session.setAttribute("count", 0); session.setAttribute("randomNumber", (int)(Math.random() * 100) + 1); // 1 ~ 100사이의 random값(int로 형변환) message = "내가 생각한 숫자를 맞춰보세요."; }else { // number파라미터가 있을 경우 세션에서 값을 읽어들인 후, number와 세션에 저장된 값을 비교합니다. // 값을 비교해서 작거나 크다면 카운트를 1증가시켜주고 // 값이 같다면 세션 정보를 삭제합니다. // 각 상황에 맞는 메시지를 message변수에 저장을 한 후 jsp에게 전달하기 위해서 ModelMap의 addAttribute메소드를 통해 전달하게 됩니다. int count = (Integer)session.getAttribute("count"); int randomNumber = (Integer)session.getAttribute("randomNumber"); if(number < randomNumber) { message = "입력한 값은 내가 생각하고 있는 숫자보다 작습니다."; session.setAttribute("count", ++count); }else if(number > randomNumber) { message = "입력한 값은 내가 생각하고 있는 숫자보다 큽니다."; session.setAttribute("count", ++count); }else { message = "OK " + ++count + " 번째 맞췄습니다. 내가 생각한 숫자는 " + number + " 입니다."; session.removeAttribute("count"); session.removeAttribute("randomNumber"); } } model.addAttribute("message", message); return "guess"; } } | cs |
guess.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!-- jstl 사용 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>숫자 맞추기 게임</title> </head> <body> <h1> 숫자 맞추기 게임.</h1> <hr> <h3>${message }</h3> <c:if test="${sessionScope.count != null}"> <form method="get" action="guess"> 1부터 100사이의 숫자로 맞춰주세요.<br> <input type="text" name="number"><br> <input type="submit" value="확인"> </form> </c:if> <a href="guess">게임 다시 시작하기.</a> </body> </html> | cs |
'BoostCource > Back-end' 카테고리의 다른 글
#03. BE - Spring MVC의 구성요소 (0) | 2019.02.06 |
---|---|
#05. BE - Spring MVC에서 Session 사용하기 (0) | 2018.11.21 |
#05. BE - Session (0) | 2018.11.19 |
#05. BE - 쿠키를 이용한 상태정보 유지하기 (0) | 2018.11.19 |
#05. BE - 쿠키 (0) | 2018.11.16 |