본문 바로가기
☕ Java 웹 프로그래밍/Servlet & JSP

[Servlet&JSP] 8일차 | 상태 유지를 필요로 하는 경우와 구현의 어려움

by 일단연 2023. 5. 28.

* 본 글은 [뉴렉처]의 Servlet&JSP 프로그래밍 강의를 듣고 정리한 글입니다.

 

2020 Servlet&JSP 프로그래밍

 

www.youtube.com

 

 상태 유지를 필요로 하는 경우와 구현의 어려움 

  • 웹 서버 프로그램은 애플리케이션이 조각나있음 > Servlet
  • 전역변수 같은 개념을 갖고 있지 않은 조각난 서블릿 사이에서 전역변수처럼 값을 유지해야만 하는 게 필요하게 됨

  • 입력 박스를 여러 개 둬서 값을 한 번에 입력받는 경우보단, 아래처럼 입력 박스 하나에 값을 여러 번 입력받는 경우가 보편적

  • 첫 번째 값을 전송하고 ‘+‘ 버튼을 누르면 첫 번째 값은 저장됨
  • 두 번째 값을 입력하고 ‘계산’ 버튼을 눌러 계산
  • 어떤 버튼을 누르면 서블릿이 잠깐 올라왔다 내려가고 메모리에서 사라짐(죽음)
    • 해당 서블릿이 갖고 있는 변수들이 다 의미 없어짐
  • 사라지기 전에 전송한 값을 어딘가에 저장해놔야 함
  • ‘계산’ 버튼을 눌렀을 때 다시 깨어난 서블릿이 이전에 저장해놓은 값을 가지고 계산
  • 서블릿들 간에 값을 공유할 수 있는 타임캡슐 같은 것들이 필요

 

상태 유지를 위한 5가지 방법

  • 서블릿들이 살았다 죽었다 하면서 이번 생에서 어딘가에 담아놓은 내용을 다음 생에 쓰게 되는데, 그 값들을 담아놓을 수 있는 공간 (서블릿이 죽어도 값들은 사라지지 않는)
    • application
    • session
    • cookie
  • 나중에 살펴볼 것들
    • hidden input
    • querystring

 

application, session, cookie 사용하기

  • calc2.html
    • calc.html을 복사+붙여넣기 해서 calc2.html 생성
    • <form>의 action 값을 calc2로 변경
    • 입력박스를 하나로 줄이기 + <label> 태그 수정
    • 버튼 추가하기: +, -, =
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기 웹 프로그램</title>
</head>
<body>
  <form action="calc2" method="post">
    <div>
      <p>계산할 값을 입력하세요.</p>
    </div>
    <div>
      <label>입력 : </label>
      <input type="text" name="v"/>
    </div>
    <div>
      <input type="submit" name="operator" value="+">
      <input type="submit" name="operator" value="-">
      <input type="submit" name="operator" value="=">
		</div>
  </form>
</body>
</html>
  • Clac2.java
    • Calc.java를 복사+붙여넣기 해서 Calc2.java 생성
    • 매핑주소를 /calc2로 수정: @WebServlet("/calc2")
    • > 다음 글로 이어짐