오늘은 JSP에서 많이 사용되는 pageContext, request, session, application 이 네 가지 객체에 대해 쉽게 설명해볼게요.
이 개념들을 이해하면, JSP에서 데이터를 어떻게 공유하고 유지할 수 있는지 알게 됩니다. 초보자도 쉽게 이해할 수 있도록 티스토리 블로그 운영을 예시로 들어 설명해볼게요! 😊
1. pageContext – 한 페이지에서만 유효한 데이터
📌 설명
pageContext는 현재 JSP 페이지에서만 데이터를 저장하고 사용할 때 씁니다. 즉, 페이지가 변경되면 값이 사라집니다.
📌 예시
티스토리에서 글을 작성할 때 "미리보기" 기능이 있죠? 미리보기 화면에서는 입력한 내용만 임시로 보여주면 되기 때문에, pageContext를 사용할 수 있어요.
📌 JSP 코드 예시
<%
pageContext.setAttribute("previewTitle", "이것은 미리보기 제목");
pageContext.setAttribute("previewContent", "이것은 미리보기 내용입니다.");
%>
<h2>미리보기 화면</h2>
<p>제목: <%= pageContext.getAttribute("previewTitle") %></p>
<p>내용: <%= pageContext.getAttribute("previewContent") %></p>
📌 설명
- 사용자가 입력한 제목과 내용을 미리보기 페이지에서만 표시하는 코드예요.
- 다른 페이지로 이동하면 값이 사라집니다.
2. request – 한 번의 요청(Request) 동안 유지되는 데이터
📌 설명
request 객체는 한 번의 요청 동안 데이터를 저장하고 공유할 수 있어요.
페이지가 이동하더라도 같은 요청 내에서는 값을 유지할 수 있죠.
📌 예시
티스토리에서 로그인 처리를 생각해보세요!
- 사용자가 로그인하면, 서버는 request 객체를 사용해 아이디와 비밀번호를 확인하고, 결과를 다음 페이지로 전달할 수 있어요.
- 단, request는 한 번의 요청 동안만 유지되므로, 새로고침하거나 다른 페이지로 완전히 이동하면 값이 사라져요.
📌 JSP 코드 예시
🔹 로그인 처리 페이지 (login.jsp)
<%
String userId = request.getParameter("userId");
String password = request.getParameter("password");
if("admin".equals(userId) && "1234".equals(password)) {
request.setAttribute("loginMessage", "로그인 성공!");
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
} else {
request.setAttribute("loginMessage", "로그인 실패! 아이디와 비밀번호를 확인하세요.");
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
rd.forward(request, response);
}
%>
🔹 로그인 결과 페이지 (welcome.jsp)
<h2>로그인 결과</h2>
<p><%= request.getAttribute("loginMessage") %></p>
📌 설명
- request.setAttribute("loginMessage", "로그인 성공!");
→ 로그인 성공 여부를 request에 저장하고, welcome.jsp로 전달 - 새로고침하면 데이터가 사라짐 (왜냐하면 새로운 요청이 발생하기 때문!)
3. session – 브라우저가 열려 있는 동안 유지되는 데이터
📌 설명
session 객체는 한 번 로그인하면 브라우저가 닫힐 때까지 유지되는 데이터를 저장할 때 사용해요.
로그인 상태 유지, 장바구니 기능 등에 많이 사용됩니다.
📌 예시
티스토리에서 "자동 로그인" 기능을 사용하면, 한 번 로그인한 후에는 계속 로그인 상태를 유지하죠?
이때 session 객체를 사용하면 편리합니다.
📌 JSP 코드 예시
🔹 로그인 성공 시 (login.jsp)
<%
String userId = request.getParameter("userId");
if(userId != null) {
session.setAttribute("loggedInUser", userId);
response.sendRedirect("dashboard.jsp");
}
%>
🔹 대시보드 페이지 (dashboard.jsp)
<%
String user = (String) session.getAttribute("loggedInUser");
if(user == null) {
response.sendRedirect("login.jsp");
}
%>
<h2>환영합니다, <%= user %>님!</h2>
📌 설명
- 사용자가 로그인하면 session.setAttribute("loggedInUser", userId);로 세션에 저장
- 다른 페이지로 이동해도 session을 통해 로그인 상태를 유지 가능
- 브라우저를 닫으면 세션 데이터가 삭제됨
4. application – 웹 애플리케이션 전역에서 유지되는 데이터
📌 설명
application 객체는 서버가 실행되는 동안 모든 사용자에게 공유되는 데이터를 저장할 때 사용해요.
즉, 하나의 데이터를 모든 사용자가 공유할 수 있어요.
📌 예시
티스토리에서 블로그 방문자 수(트래픽)를 집계할 때 사용할 수 있어요.
모든 사용자의 방문 횟수를 application 객체에 저장하면, 전체 방문자 수를 유지할 수 있습니다.
📌 JSP 코드 예시
🔹 방문자 수 증가 코드 (visit.jsp)
<%
Integer visitCount = (Integer) application.getAttribute("visitCount");
if (visitCount == null) {
visitCount = 1; // 첫 방문
} else {
visitCount++; // 방문자 증가
}
application.setAttribute("visitCount", visitCount);
%>
<h2>현재 블로그 총 방문자 수: <%= visitCount %>명</h2>
📌 설명
- application 객체를 사용하여 전체 블로그 방문자 수를 저장
- 모든 사용자가 공유하는 값이므로, 누군가 방문하면 모든 사용자에게 값이 증가됨
- 서버가 재시작되면 데이터가 초기화됨
정리: 언제 어떤 객체를 써야 할까?
JSP | 범위 | 사용 예시 |
pageContext | 현재 JSP 페이지에서만 유지 | 티스토리 글 미리보기 기능 |
request | 하나의 요청(Request) 동안 유지 | 로그인 처리 결과 전달 |
session | 브라우저가 열려 있는 동안 유지 | 로그인 상태 유지 |
application | 서버가 실행되는 동안 유지 | 블로그 방문자 수 집계 |
마무리하며
오늘은 JSP의 pageContext, request, session, application을 쉽게 이해할 수 있도록 티스토리 블로그 운영 예시를 들어 설명해봤어요. 😊
이제 여러분도 JSP에서 데이터를 공유할 때, 어떤 객체를 사용해야 할지 감이 오셨을 거예요!
다음에도 더 유익한 웹 개발 정보를 가지고 올게요. 궁금한 점은 댓글로 남겨주세요~
'JSP' 카테고리의 다른 글
Spring MVC에서 @RequestParam과 @ModelAttribute의 차이점 (0) | 2025.02.19 |
---|---|
JSP에서 에러 페이지 설정하는 두 가지 방법 (0) | 2025.02.18 |
서버, 웹서버, 웹 컨테이너, WAS, HTTP 프로토콜, 포트 개념 정리 (0) | 2025.02.18 |
JSP에서 변수 선언하는 방법과 차이점 (0) | 2025.02.13 |
JSP(JavaServer Pages)란? (0) | 2025.02.12 |