[09] Session 이용한 로그인 체크
[Session을 이용한 로그인 상태 체크]
1. Session 객체
- javax.servlet.http.HttpSession Interface의 구현 객체
- 사용자가 로그인하면 계속적으로 유지되는 아이디와 비밀번호등은 session변수 처리한다.
- 서버상에서 세션의 유지시간은 초단위로 지정한다.
session.setMaxInactiveInterval(300)
만약 사용자가 JSP페이지를 열어놓고 이벤트를 발생시키지 않으면 session은 삭제된다.
설정된 session timeout 시간 출력 <%= session.getMaxInactiveInterval() %>
- 서버상에 있는 사용자와 관련된 모든 세션 변수값 삭제 (로그아웃에 사용)
session.invalidate();
- Session ID라는 세션변수는 서블릿컨테이너(톰캣등)가 부여하는 것
session.getId()
- session 변수 생성
session.setAttribute("세션변수명", 값);
- session 변수값 가져오기
String s_uid = (String)session.getAttribute("세션변수명");
- session변수만 삭제
session.removeAttribute("세션변수명");
- 모든 세션 변수 삭제
session.invalidate();
[실습]
파일명 : loginForm.jsp
##################################################################
<%@ page contentType="text/html; charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>loginForm.jsp</title>
<script type="text/javascript">
<!--
function BlankCheck(frm){
/*
정규 표현식
/^\s*: 시작 문자가 탭, 공백, 개행인 경우
| : OR 문자는 두 정규 표현식에서의 선택을 허용
\s* : 문자가 탭, 공백, 개행인 경우
$/g : 패턴을 문장의 끝에 적용
\s*$/g: 문장의 끝에 있는 공백
*/
// alert('>>' + ' test test '.replace(/^\s*|\s*$/g,'') + '<<'); return false;
// 이름 앞뒤의 공백 제거
// trim()함수가 없음으로 정규 표현식으로 공백 제거
var str; // 임시 문자열 저장 변수
str = frm.uid.value.replace(/^\s*|\s*$/g, '');
if (str.length == 0){
alert("성적을 확인하려면 로그인 하시기 바랍니다.");
frm.uid.value="";
frm.uid.focus();
return;
}
frm.submit();
}
//-->
</script>
</head>
<body>
<center>
<br>
<img src="./images/sunflower1.jpg"><br><br>
성적을 확인하려면 로그인 하시기 바랍니다.<br><br>
<form method="post" action="loginProc.jsp">
아이디 <input type="password" name="uid">
<input type="button" value="로그인" onclick="BlankCheck(this.form)">
</form>
<br><br>
서버가 임의로 부여한 세션아이디<br>
<%= session.getId() %>
</center>
</body>
</html>
############################################################################
파일명 : loginProc.jsp
###########################################################################
<%@ page contentType="text/html; charset=utf-8"%>
<%
String uid = request.getParameter("uid");
if (uid.equals("itwill") == true){
session.setAttribute("s_uid", uid); // 인증아이디 세션변수에 저장
response.sendRedirect("./sungjukList.jsp"); // 성적리스트 페이지 이동
}else{
response.sendRedirect("./loginForm.jsp"); // 로그인 페이지 이동
}
%>
###########################################################################
파일명 : auth.jsp
###########################################################################
<%@ page contentType="text/html; charset=utf-8"%>
<%
String s_uid = (String)session.getAttribute("s_uid");
if (s_uid == null){
s_uid = "";
}
if (s_uid.equals("")){
// 정상적인 로그인이 안된경우
response.sendRedirect("./loginForm.jsp");
return; // 더이상 jsp 페이지 처리 안함.
}
%>
###########################################################################
파일명 : logout.jsp
###########################################################################
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>logout.jsp</title>
</head>
<body>
<%
//모든 세션변수값 전부 삭제
session.invalidate();
//idKey session변수만 삭제
//session.removeAttribute("idKey");
%>
<script language="javascript">
alert("로그아웃 되었습니다.");
location.href = './loginForm.jsp';
</script>
</body>
</html>
###########################################################################