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>