JAVA/JSP

[JSP] session정리 및 로그인(간단) 구현

solutionmaster 2023. 5. 16. 23:49

session : 서버에 저장되는 데이터이다.

*  활용 비교(세션vs쿠키)

- 세션 : 로그인이나 보안상 중요한 작업에 활용
- 쿠키 : ....활용?

* 생성 : 클라이언트가 접속하면 자동으로  생성, 
고유한 ID를 발생 >> 클라이언트에 전송 >> 세션ID로 접속

* 특징 
- 각 클라이언트에게 고유한 ID
- 세션 ID로 클라이언트를 구분해서 클라이언트의 요구에 맞게 서비스 제공
- 보안면에서 쿠키보다 우수
- 사용자가 많아 질수록 서버에 메모리를 많이 차지하게 된다. 

* 메소드
- getId()
- getCreationTime() : 세션 생성 시간(밀리초)
- getLastAccessedTime() : 마지막 접근시간
- getMaxInterval(long) : 유효시간
- invalidate() : 세션삭제
- getAttribute(), setAttribute()

* 자동생성
 - session="true"


<로그인 구현>

 

1. 입력폼

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="jsp6_2.jsp">
        아이디  : <input type="text" name="id"><br>
        비밀번호  : <input type="password" name="pw"><br><br><br>
        <input type="submit" value="로그인">
    </form>
</body>
</html>

 

2. 로그인 검사, 로그인 시 페이지 전환, 로그인 실패시 다시 로그인 화면으로 전환

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        request.setCharacterEncoding("utf-8"); 
        String id = request.getParameter("id");
        String pw = request.getParameter("pw");

        if(id.equals("admin") && pw.equals("1234")){
            session.setAttribute("LOGIN", id);
            /* out.print("로그인 완료 환영합니다."); */
            response.sendRedirect("jsp6_1.jsp");  //로그인 후 메인페이지 이동

        } else {
            out.print("로그인 실패");
            out.print("<a href='jsp6_1.jsp'>로그인창 다시가기</a>");
        }
    %>
    <a href="jsp6_3.jsp">메인페이지로 이동</a>

</body>
</html>

 

3. 로그인 상태창, 로그아웃 링크

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        String id =  (String)session.getAttribute("LOGIN");
        boolean isLogin = false;

        if(id != null) isLogin = true;
        if(isLogin) out.print("<h3>"+id+"님은 로그인 상태입니다.</h3>");
            else out.print("<h3>로그아웃 상태입니다.</h3>");

    %>
    <a href="jsp6_4.jsp">로그아웃</a>
</body>
</html>

 

4. 로그아웃 로직, 로그아웃 확인

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

    <h3>로그아웃되었습니다.</h3>
     <%
        session.invalidate();
        response.sendRedirect("jsp6_1.jsp");
    %>
    <a href="jsp2_2.jsp">세션확인</a>
</body>
</html>