Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
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
Archives
Today
Total
관리 메뉴

ki-sd 님의 블로그

[2026-05-20] JSP 내장 객체 제어, 웹 페이지 모듈화 및 데이터 흐름 관리 본문

WebStudy

[2026-05-20] JSP 내장 객체 제어, 웹 페이지 모듈화 및 데이터 흐름 관리

ki-sd 2026. 5. 21. 19:49

오늘은 JSP의 주요 내장 객체를 활용해 서버와 클라이언트 간의 상태를 관리하고, 페이지 레이아웃을 효율적으로 조립하는 모듈화 기법을 학습했다. 데이터베이스 연동과 파일 입출력을 포함한 전반적인 웹 애플리케이션의 흐름을 정리했다.

 

1. JSP 내장 객체를 이용한 응답 및 상태 관리

  • response 객체: HTTP 응답을 제어하며, addCookie()를 통해 클라이언트에 상태 정보를 전달하거나 sendRedirect()로 브라우저의 페이지 이동을 지시한다.
  • application 객체: ServletContext를 통해 서버 전역 자원을 관리한다. getInitParameter()로 설정 값을 읽거나 getRealPath("/")로 서버 내 실제 파일 경로를 확인하는 용도로 사용했다.
  • out 객체: 생성된 HTML이 브라우저로 전송되기 전 대기하는 출력 버퍼를 제어한다. 버퍼의 크기(getBufferSize)와 잔여 공간(getRemaining)을 확인하여 서버 사이드 렌더링 과정을 이해했다.
  • 쿠키(Cookie) 활용: 최근 본 상품 기능 등을 구현하기 위해 식별자(no)를 쿠키에 담아 저장하고, 중간 처리 페이지(detail_before.jsp)를 거쳐 상세 페이지로 이동하는 로직을 통해 데이터 처리와 뷰 렌더링을 분리했다.

2. IO 스트림을 이용한 파일 다운로드 서버 내부의 파일을 클라이언트로 전송하기 위해 스트림 제어 기법을 적용했다.

  • response.setHeader("Content-Disposition", ...) 설정을 통해 응답 형식을 파일 다운로드로 지정했다.
  • FileInputStream과 BufferedOutputStream을 활용해 데이터를 바이트 단위로 클라이언트에 전송했다. 이때 JSP의 기본 출력 버퍼와 스트림 간의 충돌을 피하기 위해 out.clear()와 pageContext.pushBody()를 사용하여 버퍼를 비워주는 예외 처리 과정을 학습했다.

3. JSP 레이아웃 모듈화 (정적 vs 동적 첨부)

  • 정적 포함 (<%@ include %>): 여러 영역(header.jsp, footer.jsp, aside.jsp, section.jsp)으로 분리된 컴포넌트 파일을 하나의 파일로 조립하는 기법이다. 파일 여러 개를 컴파일 시점에 하나로 합쳐 효율성을 높인다.
  • 동적 포함 (<jsp:include> / pageContext.include): 실행 시점에 다른 JSP 페이지의 결과를 포함한다. 독립적으로 컴파일되며 request 객체를 공유할 수 있다는 점이 정적 방식과의 차이점이다.
  • 페이지 이동 (<jsp:forward> / pageContext.forward): 브라우저의 URL 변경 없이 서버 내부에서 페이지만 전환한다. request 객체가 유지되므로 다음 페이지로 데이터를 안전하게 전달할 수 있다.

4. 데이터 연동 및 인터페이스 구성

  • FoodDAO를 통해 DB에서 데이터를 페이징 처리하여 가져오고, Bootstrap 그리드 시스템을 활용하여 텍스트 오버플로우가 적용된 반응형 카드 UI를 렌더링했다.
  • 검색 및 상세보기 기능 구현 시, URL Query String을 통해 식별자를 전달하고 이를 서버 단에서 수신하여 적절한 DB 쿼리를 실행하는 흐름을 확인했다.