..열심히 공부하세../JSP

[09] Session 이용한 로그인 체크

댄스댄스 2012. 2. 15. 01:15

 

[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>

###########################################################################