드디어 기대하던 로그인 기능을 배우고 연습하였다.
- 브라우저 별 하나의 사용자 개념이다 (크롬과 엣지는 다른 사용자이고 같은 크롬도 브라우저별로 다른 사용자이다)
- 웹서버는 사용자가 처음 접근하면 세션ID값을 부여하여 관리한다
- 웹서버는 부여한 세션ID값을 이용하여 동일한 사용자인지 구분한다(로그인 되면 마이페이지 등 로그인정보에 맞는 메뉴사용가능)
- 일정시간(디폴트 30분) 동안 연결이 없으면 웹서버는 세션ID를 삭제한다
출처: https://cafe.naver.com/jjdev
// 세션ID확인
session.getId();
// 세션갱제갱신 (이전 세션 종료)
session.invalidate();
- page: 페이지 내에서만 사용 가능하고 페이지를 벗어나면 저장데이터(변수) 소멸
- session: 개별(브라우저 사용자) 클라이언트가 접근하는 모든 페이지에서 사용가능하고 일정 시간동안 접속 정보가 없으면 소멸
- application: 톰캣과 같은 WAS프로그램내에 모든 사용자가 접근가능(공유)하며 WAS가 종료되면 소멸
출처: https://cafe.naver.com/jjdev
// 페이지 변수는 다른페이지에서 호출할 수 없다 -> 컴파일 에러
String name = "page local variable : apple";
// 페이지 속성 변수는 다른페이지에서 호출은 가능하지만 null값이 호출된다.
pageContext.setAttribute("x", "pageContext:apple");
// 세션에 저장된 내용은 다른 페이지에서도 호출 가능
session.setAttribute("y", "session:banana");
// db에 폼에서 입력한 id(기본키)와 pw가 일치하는 행이 있으면 -> 로그인 성공, 없으면 -> 실패
// select * from member where id=? and pw=?
final String tableId = "admin";
final String tablePw = "1234";
if(tableId.equals(id) && tablePw.equals(pw)) {
System.out.println("loginAction 로그인 성공");
// 로그인 성공 정보(사용자 ID만)를 세션에 저장
session.setAttribute("loginId", id);
response.sendRedirect(request.getContextPath()+"/home.jsp");
} else {
System.out.println("loginAction 로그인 실패");
String msg = URLEncoder.encode("ID와PW 다시입력", "utf-8");
response.sendRedirect(request.getContextPath()+"/loginForm.jsp?msg="+msg);
}
// 로그인
session.setAttribute("id", "admin");
// 로그아웃
session.invalidate();
// 로그인 상태에서만 사용가능
if(session.getAttribute("id") != null){
}