1. 개요

이 빠른 사용방법(예제)에서는 HttpServletRequest# getSession() 호출 과 HttpServletRequest# getSession(boolean) 호출의 차이점을 확인합니다 .

2. 차이점은 무엇입니까?

getSession()getSession(boolean) 메소드 는 매우 유사합니다. 하지만 약간의 차이가 있습니다. 차이점은 세션이 이미 존재하지 않는 경우 세션을 생성해야 하는지 여부입니다.

getSession()  호출  과  getSession(true)  호출 은 기능적으로 동일 합니다. 현재 세션을 검색하고 아직 존재하지 않는 경우 생성합니다.

하지만 getSession(false) 를 호출 하면 현재 세션을 검색하고 아직 세션이 없으면 null 을 반환합니다 . 무엇보다도 세션이 존재하는지 묻고 싶을 때 유용합니다.

3. 예시

이 예에서는 다음 시나리오를 고려하고 있습니다.

  • 사용자는 사용자 ID  를 입력하고 애플리케이션에 로그인합니다.
  • 그런 다음 사용자는 사용자 이름  과 나이 를 입력 하고 로그인한 사용자에 대해 이러한 세부 정보를 업데이트하려고 합니다.

HttpServletRequest#getSession()HttpServletRequest#getSession(boolean) 의 사용법을 이해하기 위해 사용자 값을 세션에 저장합니다 .

먼저 doGet() 메서드 에서 HttpServletRequest#getSession() 을 사용하는 서블릿을 생성해 보겠습니다 .

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    HttpSession session = request.getSession();
    session.setAttribute("userId", request.getParameter("userId"));
}

이 시점에서 서블릿은 기존 세션을 검색하거나 로그인한 사용자를 위해 새 세션을 만듭니다(존재하지 않는 경우).

다음으로 세션에서 userName 속성을 설정합니다.

각 사용자 ID에 대한 사용자 세부 정보를 업데이트하고 싶기 때문에 동일한 세션을 원하고 사용자 이름을 저장하기 위해 새 세션을 만들고 싶지 않습니다.

이제 false 값 으로 HttpServletRequest#getSession(boolean) 을 사용 합니다 .

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    HttpSession session = request.getSession(false);
    if (session != null) {
        session.setAttribute("userName", request.getParameter("userName"));
    }
}

그러면 userId 가 이전에 설정된 동일한 세션에서 userName 속성이 설정됩니다.

4. 결론

이 사용방법(예제)에서는 HttpServletRequest#getSession()HttpServletRequest#getSession(boolean) 메서드 의 차이점을 설명했습니다 .

전체 예제는 GitHub에서 사용할 수 있습니다 .

Generic footer banner