웹 개발 기초/Jsp, Servlet
Jsp session
chanwoo23
2025. 4. 8. 17:01
🟦 세션(Session)이란?
사용자(브라우저)와 서버 사이의 "상태(state)"를 유지하기 위해 서버에서 관리하는 저장소입니다.
즉, 서버가 사용자를 구분해서 로그인 정보, 장바구니 등 중요한 상태 데이터를 기억하기 위해 사용됩니다.
✅ 세션은 왜 필요한가?
- HTTP는 Stateless → 요청을 주고받을 때 누가 누구인지 모름
- 사용자가 로그인했는지, 어떤 글을 썼는지 서버가 기억할 수 없으면 불편
- 그래서 서버가 사용자를 구분해서 기억하기 위한 공간이 바로 Session
🔁 세션의 동작 원리
- 클라이언트가 서버에 처음 접속하면,
- 서버는 세션 객체를 생성하고 고유 ID(JSESSIONID)를 발급함
- 서버는 이 ID를 쿠키를 통해 클라이언트에게 전달
- 이후 클라이언트가 요청할 때마다 이 ID를 함께 전송
- 서버는 이 ID로 해당 사용자의 세션 정보를 조회
✅ 요약: 세션은 서버에, ID는 클라이언트에 (JSESSIONID 쿠키로)
✅ 자바에서 세션 사용법
🔹 1. 세션에 값 저장
java
HttpSession session = request.getSession(); session.setAttribute("userId", "kim123");
🔹 2. 세션에서 값 꺼내기
java
HttpSession session = request.getSession(); String id = (String) session.getAttribute("userId");
🔹 3. 세션 무효화 (로그아웃 등)
java
session.invalidate(); // 세션 전부 제거
✅ 세션 사용 예제
java
@WebServlet("/login") public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id"); String pw = request.getParameter("pw"); if ("kim".equals(id) && "1234".equals(pw)) { HttpSession session = request.getSession(); session.setAttribute("userId", id); // 세션에 로그인 정보 저장 response.sendRedirect("main.jsp"); } else { response.sendRedirect("login.jsp?error=1"); } } }
✅ 세션의 특징
항목설명
저장 위치 | 서버 (메모리) |
식별 방식 | JSESSIONID (클라이언트가 가지고 있음) |
유효 시간 | 기본 30분 (설정 가능) |
정보 보안 | 쿠키보다 훨씬 안전 (서버에 저장됨) |
용도 | 로그인 유지, 장바구니, 권한 확인 등 |
삭제 방법 | session.invalidate() |
🆚 쿠키 vs 세션 비교
항목쿠키(Cookie)세션(Session)
저장 위치 | 클라이언트 (브라우저) | 서버 (메모리) |
저장 형태 | key-value | key-value |
보안 | 낮음 (변조 가능) | 높음 (서버 내부) |
유지 조건 | 만료시간까지 | 유효시간 또는 브라우저 종료 전까지 |
민감 정보 저장 | ❌ 위험함 | ✅ 상대적으로 안전 |
식별 방법 | 클라이언트가 직접 값 전달 | 서버가 JSESSIONID로 식별 |
✅ 세션 유지 시간 설정 방법
xml
<!-- web.xml --> <session-config> <session-timeout>30</session-timeout> <!-- 단위: 분 --> </session-config>
⚠️ 세션 주의사항
- 서버 메모리를 사용하므로 너무 많은 정보 저장 금지
- 세션 유지 시간 설정 중요 (보안, 성능 모두 영향)
- 클러스터링 환경(서버 여러 개)에서는 세션 동기화가 필요
✅ 마무리 요약
키워드설명
세션이란 | 서버가 사용자의 상태를 기억하는 저장 공간 |
식별방식 | JSESSIONID라는 쿠키를 통해 연결 |
저장/조회 | setAttribute(), getAttribute() |
보안 | 쿠키보다 안전 (서버에만 저장됨) |
용도 | 로그인 상태 유지, 장바구니 등 |