javax.servlet.http.HttpSession
인터페이스는 서블릿 기반 웹 애플리케이션에서 클라이언트와 서버 간의 상태 정보를 유지하기 위한 세션 관리를 제공하는 인터페이스입니다.
HTTP 프로토콜은 기본적으로 상태를 유지하지 않는 비연결성(Connectionless) 프로토콜입니다. 따라서 웹 애플리케이션에서는 사용자의 상태 정보를 유지하기 위해 세션 기반의 상태 관리가 필요합니다.
HttpSession
인터페이스는 이를 위해 세션을 생성, 유지 및 제거하는 메서드를 제공합니다.
HttpSession
인터페이스의 일부 주요 메서드는 다음과 같습니다:
void setAttribute(String name, Object value)
: 지정된 이름으로 속성 값을 세션에 저장합니다.Object getAttribute(String name)
: 지정된 이름의 속성 값을 세션에서 반환합니다.void removeAttribute(String name)
: 지정된 이름의 속성 값을 세션에서 제거합니다.void invalidate()
: 세션을 무효화하고 관련된 모든 데이터를 제거합니다.long getCreationTime()
: 세션이 생성된 시간을 반환합니다.String getId()
: 세션의 고유 식별자(ID)를 반환합니다.boolean isNew()
: 세션이 새롭게 생성되었는지 여부를 반환합니다.void setMaxInactiveInterval(int interval)
: 세션의 비활성 시간 제한을 설정합니다.HttpSession
인터페이스를 사용하여 세션을 관리하면 클라이언트와 서버 간의 상태 정보를 유지할 수 있습니다. 이를 통해 로그인 정보, 장바구니, 선호 설정 등과 같은 사용자별 데이터를 유지하고 다양한 기능을 구현할 수 있습니다.
예를 들어, 다음은 로그인 시 사용자 정보를 HttpSession
에 저장하고, 세션을 통해 사용자를 식별하는 방법을 보여주는 예시입니다:
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 사용자 인증 처리
if (authenticated) {
// 사용자 인증 성공
// HttpSession을 사용하여 사용자 정보를 세션에 저장
HttpSession session = request.getSession();
session.setAttribute("username", username);
// 다른 페이지로 리다이렉트 또는 응답 반환
response.sendRedirect("/dashboard");
} else {
// 사용자 인증 실패
// 다시 로그인 페이지로 리다이렉트 또는 에러 메시지 반환
response.sendRedirect("/login?error");
}
}
}
위의 예시에서 doPost
메서드는 로그인 정보를 받아 사용자 인증을 처리합니다. 인증에 성공하면 HttpSession
을 사용하여 사용자 이름을 세션에 저장합니다. 이후 다른 페이지로 리다이렉트하거나 응답을 반환할 때 세션을 통해 사용자를 식별할 수 있습니다.
HttpSession
인터페이스를 사용하면 클라이언트와 서버 간의 상태 정보를 유지하고, 로그인, 장바구니, 선호 설정 등과 같은 기능을 구현할 수 있습니다.
세션은 웹 애플리케이션에서 클라이언트(웹 브라우저)와 서버 간의 상태 정보를 유지하기 위한 방법입니다.
웹은 기본적으로 상태를 기억하지 않는 프로토콜인 HTTP를 사용하기 때문에, 한 페이지에서 다음 페이지로 이동할 때마다 서버는 클라이언트를 구분하기 어렵습니다. 세션은 이러한 문제를 해결하기 위해 만들어진 개념입니다.
세션은 서버에 상태 정보를 저장하고, 클라이언트에게 고유한 식별자(ID)를 부여합니다. 클라이언트가 웹 애플리케이션에 접속하면, 서버는 세션 ID를 클라이언트에게 제공합니다. 그리고 이후 클라이언트가 서버에 요청을 보낼 때마다, 클라이언트가 제공한 세션 ID를 사용하여 해당 클라이언트의 상태 정보를 서버에서 찾아 사용할 수 있습니다.
세션은 로그인 정보, 장바구니, 사용자 설정 등과 같은 클라이언트와 관련된 상태 정보를 유지하는 데 사용됩니다. 예를 들어, 사용자가 로그인하면 서버는 세션을 생성하고 세션에 사용자 정보를 저장합니다. 이후에는 세션 ID를 통해 해당 사용자를 식별하고, 로그인 상태를 유지하거나 사용자에게 맞춤화된 내용을 표시하는 등의 작업을 수행할 수 있습니다.
세션은 웹 애플리케이션의 중요한 개념이며, 사용자 경험을 향상시키고 다양한 기능을 구현하는 데 활용됩니다. 세션은 서블릿 컨테이너(예: Apache Tomcat)에서 제공하는 세션 관리 기능을 사용하여 구현되며, 서버 측에 상태 정보를 저장합니다.
간단히 말하면, 세션은 웹 애플리케이션에서 클라이언트의 상태 정보를 유지하고 관리하는 방법입니다. 이를 통해 로그인 상태를 유지하거나 클라이언트에게 개인화된 기능을 제공할 수 있습니다.