본문 바로가기
1인칭 학습 시점_웹개발/JSP

[JSP] JSP에서의 요청 처리 흐름과 스코프 개념 정리

by awesong 2024. 8. 26.
728x90
반응형

JSP 다양한 방식으로 클라이언트의 요청을 처리하고 응답합니다. 특히 forward, sendRedirect, 그리고 스코프(scope) 개념은 애플리케이션의 흐름을 이해하는 매우 중요합니다. 또한, 데이터를 효과적으로 다루기 위해 DTO 객체도 함께 사용됩니다.

 

1. forward sendRedirect 차이점

forward

  • 서버 내부에서 페이지를 전환합니다.
  • 클라이언트는 다른 페이지로 전환되었는지 없습니다 (URL 바뀌지 않음).
  • 요청과 응답 객체가 그대로 유지됩니다.
  • 주로 데이터 전달 처리 결과 페이지로 이동할 사용합니다.
<jsp:forward page="result.jsp" />

 

sendRedirect

  • 서버가 클라이언트에게 새로운 URL 요청하라고 응답합니다.
  • 클라이언트가 직접 새로운 페이지로 요청을 다시 보냅니다 (URL 변경).
  • 새로운 요청이기 때문에 이전 요청의 데이터는 유지되지 않습니다.
  • 주로 외부 페이지로 이동하거나 새로고침 효과가 필요할 사용합니다.
response.sendRedirect("result.jsp");
비교 항목 forward sendRedirect
작동 방식 서버 내부 이동 클라이언트에게 요청 유도
URL 변경 변경되지 않음 변경됨
데이터 전달 가능 (request 유지) 불가능 ( 요청)
사용 용도 내부 페이지 이동 외부 페이지 이동, 요청 필요

 

2. JSP에서의 애플리케이션 객체

애플리케이션 객체는 JSP에서 애플리케이션 전체에서 공유되는 저장소입니다. ServletContext 객체로도 불리며, JSP 모든 페이지, 서블릿에서 접근 가능합니다.

 

사용 이유

  • 전역 데이터 관리: 애플리케이션 단위의 설정값 저장
  • 다중 페이지 공유: 로그인 사용자 목록 여러 페이지에서 필요할 경우
  • 상태 관리: 애플리케이션의 전체 상태를 저장
application.setAttribute("siteName", "MyBlog");

 

3. JSP 스코프(Scope) 정리

스코프란 데이터를 저장했을 , 어디까지 접근 가능한지와 언제까지 유지되는지를 의미합니다.

스코프 유효 범위 생명 주기 예시 코드
page 현재 JSP 페이지 내부 페이지 실행 pageContext.setAttribute("key", "value")
request 번의 요청 동안 요청 처리 request.setAttribute("key", "value")
session 사용자 세션 동안 세션 종료 session.setAttribute("key", "value")
application 애플리케이션 전체 서버 종료 application.setAttribute("key", "value")

 

4. DTO (Data Transfer Object)

DTO 데이터만 담고 있는 순수한 객체입니다. 보통 데이터 전송, DB 데이터 조회 결과를 담아 이동시키는 사용됩니다. JSP/Servlet 환경에서는 MVC 모델에서 Model 해당하며, VO(Value Object)로도 불립니다.

 

특징

  • 로직이 없는 순수한 데이터 저장용 클래스
  • 자바빈(JavaBean) 규약에 따라 작성 (getter, setter 필수)
  • 여러 계층 데이터 전달 역할 수행

예시

public class MemberDTO {
    private String name;
    private int age;
   
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

 

5. 마무리

JSP 개발 forward sendRedirect 정확한 차이, 데이터 공유를 위한 스코프(scope), 그리고 데이터를 안전하고 효율적으로 전달하기 위한 DTO 객체의 개념은 매우 중요합니다. 개념들을 이해하면 보다 구조적이고 유지보수가 쉬운 애플리케이션을 개발할 있습니다.

반응형