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 객체의 개념은 매우 중요합니다. 이 개념들을 잘 이해하면 보다 구조적이고 유지보수가 쉬운 웹 애플리케이션을 개발할 수 있습니다.
반응형
'1인칭 학습 시점_웹개발 > JSP' 카테고리의 다른 글
[JSP] 서블릿(Servlet) 개념 정리 – JSP 이전 웹 개발의 핵심 기술 (0) | 2024.08.29 |
---|---|
[JSP] JSP에서 HTTP 요청 처리 방식과 액션 태그 정리 (0) | 2024.08.22 |
[JSP] JSP 페이지 기본 구조 정리 (0) | 2024.08.21 |