Java에서 세션(session) 사용하는 방법.
▶ 세션(session)이란?
세션은 클라이언트와 서버 간의 연결을 유지하는 데 사용되는 메커니즘 중 하나입니다.
클라이언트가 서버에 연결하면 서버는 해당 클라이언트에 대한 고유한 세션을 생성하고 이를 유지합니다.
이를 통해 클라이언트의 상태를 유지하고 여러 요청 간에 정보를 공유할 수 있습니다.
추가적으로, 처음에 접하다 보면 세션과 쿠키의 차이를 많이들 혼동합니다.
세션(Session)과 쿠키(Cookie)의 차이를 정리해보고 넘어갑시다 !
세션과 쿠키는 웹 애플리케이션에서 사용자의 상태를 유지하는 데 사용되는 두 가지 주요 메커니즘입니다.
▷ 쿠키 (Cookie)
- 클라이언트의 로컬 브라우저에 저장.
- 클라이언트에서 서버로 요청할 때마다 쿠키는 자동으로 서버로 전송된다.
- 클라이언트 측에서 관리되므로 서버 측에서 쉽게 조작할 수 없다.
- 쿠키는 클라이언트에 저장되기 때문에 보안에 취약할 수 있다.
- 주로 사용자 로그인 상태 유지, 사용자 설정 등에 활용.
▷ 세션 (Session)
- 서버 측에서 관리되며, 세션 데이터는 서버에 저장된다.
- 클라이언트와 서버 간의 통신에는 세션 식별자가 사용되며, 이 식별자는 쿠키를 통해 클라이언트에게 전달된다.
- 세션은 서버 측에서 관리되기 때문에 보안에 더 강력하다.
클라이언트는 세션 데이터에 직접 접근할 수 없다.
- 주로 사용자 인증, 장바구니 정보 등에 활용.
이러한 차이점을 이해하면 쿠키와 세션을 올바르게 사용하여 웹 애플리케이션의 상태를 효율적으로 유지할 수 있습니다. 아래는 세션을 사용하는 방법에 대한 예시 코드를 정리했습니다 !
◈ 세션 생성 및 속성 추가
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SessionExample extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 세션 가져오기. 만약 세션이 없으면 새로 생성
HttpSession session = request.getSession();
// 세션에 사용자 이름 속성 설정
session.setAttribute("username", "kongda");
// 다른 속성 설정
session.setAttribute("age", 20);
}
}
◈ 세션 속성 읽기
// 세션에서 사용자 이름 속성 읽기
String username = (String) session.getAttribute("username");
// 세션에서 나이 속성 읽기
int age = (int) session.getAttribute("age");
◈ 세션 속성 제거
// 세션에서 사용자 이름 속성 제거
session.removeAttribute("username");
◈ 세션 만료 설정
// 세션 만료 시간 설정 (단위: 초)
session.setMaxInactiveInterval(60 * 30); //30분
// 세션 만료 시간 연장 (ex: 추가 10분)
session.setMaxInactiveInterval(session.getMaxInactiveInterval() + (60 * 10));
HttpSession 클래스의 주요 메서드
- getAttribute(String name) : 주어진 이름에 해당하는 세션 속성 값을 반환합니다.
- setAttribute(String name, Object value) : 주어진 이름으로 세션에 속성을 추가하거나 기존 속성 값을 대체합니다.
- removeAttribute(String name) : 주어진 이름에 해당하는 세션 속성을 제거합니다.
- getMaxInactiveInterval() : 세션의 최대 비활성 시간을 반환합니다.
- setMaxInactiveInterval(int interval) : 세션의 최대 비활성 시간을 설정합니다.
Java Session 사용 시 주의할 점
Java 웹 애플리케이션에서 세션을 사용하는 것은 사용자의 상태를 유지하고 데이터를 저장하는 데 유용합니다. 하지만 세션을 사용할 때 몇 가지 주의할 점이 있습니다. 이를 효율적으로 관리하기 위해 다음과 같은 주의사항을 고려해야 합니다.
- 세션에 저장되는 데이터의 크기에 제한이 있습니다. 너무 많은 데이터를 세션에 저장하면 서버 메모리 부하가 증가할 수 있으므로 세션에는 필요한 최소한의 데이터만 저장하는 것이 좋습니다.
- 클라이언트가 세션을 유지하는 동안 서버 측 자원이 사용됩니다. 따라서 세션의 만료 시간을 적절히 설정하여 사용자가 비활동 상태일 때 세션을 자동으로 삭제하거나 만료되도록 해야 합니다.
- 세션에는 민감한 정보가 포함될 수 있으므로 세션 식별자를 안전하게 관리해야 합니다.
세션 식별자를 포함한 쿠키는 보안을 위해 HTTPS를 통해 전송되어야 합니다.
- 동일한 세션에 대한 동시 요청이 발생할 수 있습니다. 이에 대한 적절한 동시성 제어가 필요할 수 있습니다.
- 세션 데이터에 대한 적절한 캐싱 전략을 사용하여 성능을 최적화해야 합니다. 불필요한 세션 데이터를 캐시에 저장하지 않도록 주의해야 합니다.
이러한 주의사항을 고려하여 세션을 적절하게 관리하면 안정적이고 효율적인 웹 애플리케이션을 개발할 수 있습니다.
'BE > JAVA' 카테고리의 다른 글
[JAVA] apache POI 사용한 엑셀 다운로드 기능 (0) | 2024.04.24 |
---|---|
[JAVA] startsWith() / endsWith() 함수 (0) | 2021.02.10 |
[JAVA] 문자열 치환(Replace)하기 (0) | 2020.10.19 |
[JAVA] jdk 1.8 다운로드 및 설치 _ 최신 홈페이지 버전 (0) | 2020.08.30 |
[JAVA] 상속(inheritance)의 개념 _ extends (0) | 2020.08.26 |
댓글