Servlet에서 데이터 저장 공간 개념 정리
: Servlet에서는 데이터를 저장할 수 있는 세 가지 주요 저장소가 있다.
1. 서버(Server) 저장 공간
1-1. Session (세션)
- 서버에서 클라이언트별로 데이터를 저장하는 공간
- session.setAttribute(key, value)로 데이터 저장
- session.getAttribute(key)로 데이터 가져오기
- 특정 시간 동안 유지 (setMaxInactiveInterval(초 단위) 설정 가능)
- 로그인 정보 등 사용자별 데이터 저장에 적합
1-2. Cache (캐시)
- 서버에서 임시 데이터를 저장하는 공간
- 자주 사용되는 데이터를 빠르게 불러오기 위해 사용됨
- 보통 애플리케이션 전체에서 공유됨
2. 클라이언트(Client) 저장 공간
2-1. Cookie (쿠키)
- 클라이언트(웹 브라우저)에 저장되는 데이터
- name=value 형태로 저장
- 서버가 클라이언트에게 쿠키를 저장하라고 명령하면, 클라이언트가 브라우저에 저장
- 로그인 유지, 방문 기록 저장 등에 사용됨
코드 설명
1. HelloServlet.java (Servlet 어노테이션 기반)
package com.mulcam.edu.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
// XML 설정 없이 @WebServlet 어노테이션을 사용하여 서블릿 매핑
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doProc(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doProc(req, resp);
}
public void doProc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Hello World");
// Session을 사용하여 데이터 저장
HttpSession session = req.getSession(); // 세션 생성 또는 기존 세션 가져오기
session.setMaxInactiveInterval(2 * 60 * 60); // 세션 유지 시간 설정 (2시간)
// 365 * 24 * 60 * 60
// 세션에 데이터 저장
session.setAttribute("name", "이몽룡");
// 세션에서 데이터 가져오기
String name = (String) session.getAttribute("name");
System.out.println(name);
// DTO 객체도 세션에 저장 가능
// session.setAttribute("human", new HumanDto("성춘향", 15));
// HumanDto human = (HumanDto) session.getAttribute("human");
// System.out.println(human.getName());
}
}
설명:
어노테이션 기반 (@WebServlet("/hello"))
- web.xml을 따로 설정하지 않고 서블릿을 등록
- http://localhost:9000/sample5/hello로 접근 가능
세션(Session) 사용
- session.setAttribute("name", "이몽룡"); → 세션에 값 저장
- session.getAttribute("name"); → 세션에서 값 가져오기
- 세션 만료 시간 2시간 설정
2. index.html (클라이언트에서 Servlet로 이동)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- HelloServlet 이동 -->
<a href="hello">hello Servlet 이동</a>
</body>
</html>
설명:
: 브라우저에서 "hello" 서블릿으로 이동하는 링크 제공
: 사용자가 클릭하면 http://localhost:9000/sample5/hello로 이동하여 Servlet 실행
전체 흐름 정리
1. 클라이언트 (index.html)에서 /hello로 이동
2. HelloServlet 실행
- "Hello World"를 콘솔에 출력
- 세션 생성 및 데이터 저장 (name = 이몽룡)
- 저장된 값을 가져와 콘솔에 출력
3. 클라이언트는 화면 변화를 감지하지 못하지만, 서버에서 세션에 데이터가 저장됨
실행 결과 (web에서 클릭 시 콘솔에 값을 출력)
'back > Servlet' 카테고리의 다른 글
Servlet) DTO 활용 HTML 응답을 Servlet에서 직접 생성하기 (0) | 2025.02.28 |
---|---|
Servlet) GET / POST 요청을 하나의 메서드에서 처리하는 방법 (0) | 2025.02.27 |
Servlet) HTML 응답을 Servlet에서 직접 생성하기 (0) | 2025.02.27 |
Servlet) 간편하게 자동 Servlet xml 파일 생성하기 & 예제 (0) | 2025.02.27 |
Servlet) 개념 간단한 예제 & GET / POST 방식 정리 (0) | 2025.02.27 |