HTML,CSS+js

JSP에서 HttpSession의 기능

Nubbie 2023. 4. 12. 10:25

HttpSession 인터페이스

HttpSession 인터페이스는 둘 이상의 page request에서 사용자를 식별하거나, 웹 사이트를 방문하고 해당 사용자에 대한 정보를 저장하는 방법을 제공한다.

Servlet container는 HttpSession를 사용하여 HTTP client - HTTP server 간의 세션을 생성한다. 이 때, 세션은 한 명의 사용자에 해당한다. 서버는 Cookie, rewriting URL와 같은 방법으로 세션을 유지하면서 관리할 수 있다. 객체를 세션에 바인딩하여 사용자 정보를 유지할 수 있다.

관련 메서드

  • HttpSession's setAttribute("Key", Value)
    • "Key"를 사용하여 객체를 세션에 바인딩한다.
    • Value는 값으로 들어올 자료형을 예측할 수 없기에 Object형으로 업캐스팅하여 모두 받아낸다.
  • HttpSession's getAttribute("Key")
    • "Key"로 바인딩된 객체를 돌려주고, "Key"로 바인딩된 객체가 없다면 null를 돌려준다.
    • Value는 세션을 저장할 때 Object형으로 업캐스팅을 했으므로, 가져올 땐 원래대로 다운캐스팅 해야 한다.
  • HttpServletRequest's getSession(true)
    • 이미 세션이 있다면 그 세션을 돌려주고, 세션이 없으면 새로운 세션을 생성한다.
    • request.getSession()로 쓸 수 있다.
  • HttpServletRequest's getSession(false)
    • 이미 세션이 있다면 그 세션을 돌려주고, 세션이 없으면 null을 돌려준다.

예제 : 로그인,로그아웃 할 때 세션 사용하기

 

 

<로그인시>


HttpSession session = request.getSession();
session.setAttribute("loginedMemberId", memberRow.get("id"));
session.setAttribute("loginedMemberLoginId", memberRow.get("loginId"));

response.getWriter()
.append(String.format("<script>alert('%s님 환영합니다'); location.replace('../article/list');</script>",
memberRow.get("name")));


/////////////////////////////////////////////////////////////////

<로그아웃시>

HttpSession session = request.getSession();
session.removeAttribute("loginedMemberId");
session.removeAttribute("loginedMemberLoginId");

response.getWriter()
.append(String.format("<script>alert('로그아웃 되었습니다'); location.replace('../home/main');</script>"));

로그인 로그아웃 -> HttpSession기능 사용

remove,set,getAttribute 찾아보기

set -> 로그인 시
get -> 로그인 했나?
remove -> 로그아웃할 때 사용