각진 세상에 둥근 춤을 추자
[JSP] session 객체 본문
세션(session)이란 클라이언트가 서버에 접속해 있는 상태 혹은 단위를 말한다.
세션 테이블(session table)이란 클라이언트가 서버로 요청할 때 서버로 기록되는 클라이언트 정보 객체를 말한다.
서버는 각 클라이언트에 대한 고유식별번호(session ID)를 발급한다.
주로 회원인증 후 로그인 상태를 유지하는 처리에 사용된다.
예제를 통해 session 내장 객체에 대해 이해해 본다.
먼저, 클라이언트의 화면에 띄울 로그인 폼을 생성한다.
[6_session.jsp]
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>session 내장 객체</title>
</head>
<body>
<h3>session 내장 객체</h3>
<h4>세션 ID 확인</h4>
<%= session.getId() %>
<h4>로그인 처리</h4>
<form action="./user/loginProc.jsp" method="post">
<input type="text" name="id" placeholder="아이디 입력"/><br/>
<input type="password" name="pw" placeholder="비밀번호 입력"/><br/>
<input type="submit" value="로그인"/>
</form>
</body>
</html>
세션 ID는 각각 다른 브라우저로 접속했을 때 다른 것을 알 수 있다. (네이버 웨일, 사파리, 크롬)
위 로그인 폼에서 내용을 입력했을 때 로그인 처리를 위해 데이터를 loginProc.jsp파일로 전송한다.
[loginProc.jsp]
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 전송 데이터 수신
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
// 회원 DB에 회원이 맞는지 확인해야 함 (일단 생략)
if (pw.equals("1234")){
// 회원 맞음
//클라이언트 세션 정보 (id값을 세션에 기록)
session.setAttribute("sessid", id);
// 로그인 성공 페이지
response.sendRedirect("./loginSuccess.jsp");
}else {
// 회원 아님
// 로그인 실패 다시 원래 페이지
response.sendRedirect("../6_session.jsp");
}
%>
편의상 올바른 비밀번호를 '1234'로 설정한다.
로그인에 성공하면 로그인 성공 페이지인 loginSuccess.jsp 파일로 전송된다.
혹은 로그인에 실패하면 원래 페이지로 돌아간다.
[loginSuccess.jsp]
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%
String id = (String) session.getAttribute("sessid");
if(id == null){
response.sendRedirect("../6_session.jsp");
return; //처리종료
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginSuccess</title>
</head>
<body>
<h3>로그인 성공</h3>
<p>
<%=id %>님, 반갑습니다. <br/>
<a href="./logout.jsp">로그아웃</a>
</p>
</body>
</html>
[logout.jsp]
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 세션 종료
session.invalidate();
response.sendRedirect("../6_session.jsp");
%>
'JSP' 카테고리의 다른 글
[JSP] 액션 태그 - <jsp: forward> (0) | 2022.10.11 |
---|---|
[JSP] 액션 태그 - <jsp: include> (0) | 2022.10.11 |
[JSP] response 객체 (0) | 2022.10.06 |
[JSP] 내장 객체(Implicit Object) - request (0) | 2022.10.05 |
[JSP] 지시어(Directive) (0) | 2022.10.05 |