[JSP] jsp 홈페이지 만들기 (5) : 세션과 쿠키를 이용한 로그인 저장하기

·2023년 11월 1일
0

jsp

목록 보기
6/18

3. 세션과 쿠키를 이용한 로그인 저장하기

(1) 세션과 쿠키

HTTP 프로토콜은 클라이언트의 요청(Request)과 응답(Response)이 이루어지고 나면 더 이상 연결상태를 '지속'하지 않는다. 때문에 클라이언트와 서버의 연결 정보를 계속 유지할 방법이 필요한데 쿠키(Cookie)와 세션(Session)이 이 역할을 수행한다.

세션(Session)과 쿠키(Cookie)은 웹 개발에서 사용되는 중요한 개념으로, 사용자와 웹 서버 간의 상태 관리, 인증, 데이터 저장 등 다양한 기능을 제공한다.


쿠키는 클라이언트 측에서 사용되는 작은 데이터 조각이며, 클라이언트 컴퓨터에 저장된다.
주로 사용자 인증 유지, 사용자 환경 설정 저장, 장바구니 정보 유지 등의 목적으로 사용된다.
쿠키는 이름-값 쌍으로 이루어져 있으며, 이름과 값은 문자열로 저장된다.
쿠키는 웹 서버에서 생성하여 클라이언트에게 전달하고, 클라이언트는 이후 웹 서버에 요청을 보낼 때 해당 쿠키를 함께 전송한다.
쿠키는 브라우저에서 관리되며 만료 기한을 설정하여 장기적으로 유지할 수 있다.

📎 세션 (Session):

세션은 서버 측에서 사용자 상태를 관리하는 방법이다.
각 클라이언트에 대한 고유한 세션 ID가 생성되고, 이 ID를 사용하여 사용자의 상태 정보를 서버에 저장한다.
주로 사용자 인증 및 상태 유지, 장바구니 정보 저장, 웹 애플리케이션 내에서 데이터 공유 등의 목적으로 사용한다.
세션은 서버 측에서 관리되며, 클라이언트와 상호작용할 때 고유한 세션 ID를 사용하여 데이터에 액세스한다.
세션은 일반적으로 브라우저 세션과 관련이 없으며, 클라이언트가 브라우저를 닫거나 로그아웃할 때 종료한다.
세션과 쿠키는 모두 웹 애플리케이션의 상태 관리에 사용되지만, 각각의 장단점과 사용 사례가 있으며, 웹 애플리케이션의 요구 사항과 보안 고려 사항에 따라 선택됩니다.세션과 쿠키를 적절하게 조합하여 웹 애플리케이션을 개발하면 사용자 경험을 향상시키고 데이터를 효과적으로 관리할 수 있다.

(2) 쿠키로 로그인 기록 만들기

📎 login.jsp : 쿠키 생성 후 이름 부여해 주기

<%
	Cookie[] cks = request.getCookies();
	String value = null;
	if (cks == null && cks.length == 0){
		for(Cookie ck : cks){
			String name = ck.getName();
			if (name.equals("saveId")){
				value = ck.getValue();
			}
			break;
		}
	}
%>

만약 로그인이 된다면? 쿠키를 가져와 키값과 아이디로 저장한다.

📎 login_ok.jsp : 쿠키 저장

<%
	if (loginOk.getId() == null || loginOk.getId().trim().equals("")){
		response.sendRedirect("login.jsp");
		return;
	}

	String saveId = request.getParameter("saveId");

	int res = loginOk.LoginOK();
	String msg = null, url = null;
	switch(res){
	case LoginOkBean.OK :
		Cookie ck = new Cookie("saveId", loginOk.getId());
		if (saveId != null){
			ck.setMaxAge(7*24*60*60);
		}else {
			ck.setMaxAge(0);
		}
		response.addCookie(ck);		
		loginMember.setId(loginOk.getId());
		loginMember.memberSetting();
		msg = loginMember.getName() + "님이 로그인 하셨습니다.";
		url = request.getContextPath() + "/index.jsp";
		session.setAttribute("mbId", loginOk.getId());
		break;

쿠키를 저장해서 7일동안 유지해 준다.
만약 7일 이후에 들어온다면 삭제되게 되고, 아이디를 저장해 준다.

게시판은 후술하겠지만 로그인한 사람만 게시판을 이용할 수 있게 만들어 줘 보자.

(3) 쿠키 불러오기

📎 writeForm.jsp

<%
	if (isLogin == false) {%>
		<script type="text/javascript">
			alert("로그인 해 주세요")
			location.href="list.jsp"
		</script>
<%		
	}

로그인 하지 않았다면 글 쓰기 환경에 접근하지 못한다ㅣ/

📎 writeForm.jsp

			<tr>	
				<td width="15%" align="center">이름</td>
				<td><input type="text" name="writer" value="<%=id%>" tabindex="1" readOnly></td>
			</tr>

그리고 id 값을 readOnly 로 무조건 받아오게 해 주면 끝.
왜냐하면 쿠키값이 저장되어 있기 때문이다.

profile
자바 백엔드 개발자 개인 위키

0개의 댓글

관련 채용 정보