HTTP 프로토콜은 클라이언트의 요청(Request)과 응답(Response)이 이루어지고 나면 더 이상 연결상태를 '지속'하지 않는다. 때문에 클라이언트와 서버의 연결 정보를 계속 유지할 방법이 필요한데 쿠키(Cookie)와 세션(Session)이 이 역할을 수행한다.
세션(Session)과 쿠키(Cookie)은 웹 개발에서 사용되는 중요한 개념으로, 사용자와 웹 서버 간의 상태 관리, 인증, 데이터 저장 등 다양한 기능을 제공한다.
쿠키는 클라이언트 측에서 사용되는 작은 데이터 조각이며, 클라이언트 컴퓨터에 저장된다.
주로 사용자 인증 유지, 사용자 환경 설정 저장, 장바구니 정보 유지 등의 목적으로 사용된다.
쿠키는 이름-값 쌍으로 이루어져 있으며, 이름과 값은 문자열로 저장된다.
쿠키는 웹 서버에서 생성하여 클라이언트에게 전달하고, 클라이언트는 이후 웹 서버에 요청을 보낼 때 해당 쿠키를 함께 전송한다.
쿠키는 브라우저에서 관리되며 만료 기한을 설정하여 장기적으로 유지할 수 있다.
세션은 서버 측에서 사용자 상태를 관리하는 방법이다.
각 클라이언트에 대한 고유한 세션 ID가 생성되고, 이 ID를 사용하여 사용자의 상태 정보를 서버에 저장한다.
주로 사용자 인증 및 상태 유지, 장바구니 정보 저장, 웹 애플리케이션 내에서 데이터 공유 등의 목적으로 사용한다.
세션은 서버 측에서 관리되며, 클라이언트와 상호작용할 때 고유한 세션 ID를 사용하여 데이터에 액세스한다.
세션은 일반적으로 브라우저 세션과 관련이 없으며, 클라이언트가 브라우저를 닫거나 로그아웃할 때 종료한다.
세션과 쿠키는 모두 웹 애플리케이션의 상태 관리에 사용되지만, 각각의 장단점과 사용 사례가 있으며, 웹 애플리케이션의 요구 사항과 보안 고려 사항에 따라 선택됩니다.세션과 쿠키를 적절하게 조합하여 웹 애플리케이션을 개발하면 사용자 경험을 향상시키고 데이터를 효과적으로 관리할 수 있다.
<%
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;
}
}
%>
만약 로그인이 된다면? 쿠키를 가져와 키값과 아이디로 저장한다.
<%
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일 이후에 들어온다면 삭제되게 되고, 아이디를 저장해 준다.
게시판은 후술하겠지만 로그인한 사람만 게시판을 이용할 수 있게 만들어 줘 보자.
<%
if (isLogin == false) {%>
<script type="text/javascript">
alert("로그인 해 주세요")
location.href="list.jsp"
</script>
<%
}
로그인 하지 않았다면 글 쓰기 환경에 접근하지 못한다ㅣ/
<tr>
<td width="15%" align="center">이름</td>
<td><input type="text" name="writer" value="<%=id%>" tabindex="1" readOnly></td>
</tr>
그리고 id 값을 readOnly 로 무조건 받아오게 해 주면 끝.
왜냐하면 쿠키값이 저장되어 있기 때문이다.