<body>
<%
Cookie coo1=new Cookie("aa","bb");
Cookie coo2=new Cookie("cc","dd");
response.addCookie(coo1);
response.addCookie(coo2);
%>
</body>
서버가 클라이언트의 정보를 기억하려고 Cookie 객체를 클라이언트에게 보냅니다, 클라이언트에게 보낼때 데이터 타입은 반드시 문자여야 합니다
<%
Cookie[] array = request.getCookies();
if(array !=null){
for(Cookie coo:array){
out.print(coo.getName());
out.print(":");
out.print(coo.getValue());
}
}
%>
저장된 쿠키를 불러왔습니다, 기대 출력값은 aa:bb cc:dd 였는데 쿠키 아이디 문자열도 같이 출력됩니다
<%
Cookie[] array=request.getCookies();
String id="";
if(array!=null)
for(Cookie coo: array)
if(coo.getName().equals("id"))
id=coo.getValue();
%>
<form action="login.jsp">
ID : <input type="text" name="id" value="<%=id%>"><br/>
PW : <input type="text" name="pw"><br/>
<input type="reset" value="취소">
<input type="submit" value="로그인">
<input type="checkbox" name="box">id기억시키기
<%
String msg=request.getParameter("msg");
if(msg==null) msg="";
%>
<%=msg%>
</form>
쿠키에 저장된 값들을 불러와 array 에 담습니다, array 가 값이 있다면 for 문으로 돌려 키 값과 "id" 를 비교해서 맞다면, cookie 값을 id에 넣습니다. equals("id") 는 setAttribute() 로 이미 해줬다고 가정합니다. 이제 쿠키는 외장하드에 저장되었기 때문에 이 페이지에 접속하면 id 는 ID: 의 value 에 들어갑니다
<%
String id=request.getParameter("id");
String pw=request.getParameter("pw");
MemberDAO dao=MemberDAO.getInstance();
MemberBean bean=dao.selectMember(id);
String path="t1.jsp?conPage=success.jsp";
String s="";
if(bean==null){
s="존재하지 않는 ID";
path="t1.jsp?conPage=loginForm.jsp&msg=";
}
else{
if(bean.getPw().equals(pw)){
session.setAttribute("id",id);
if(request.getParameter("box")==null){
//쿠키삭제
Cookie[] array=request.getCookies();
if(array!=null){
for(Cookie coo: array){
if(coo.getName().equals("id")){
Cookie c=new Cookie("id","");
c.setMaxAge(0);
response.addCookie(c);
}
}
}
}else{
//쿠키생성
Cookie coo=new Cookie("id",id);
coo.setMaxAge(60*5);
response.addCookie(coo);
}
}else{
s="비번오류~";
path="t1.jsp?conPage=loginForm.jsp&msg=";
}
}
String eStr=URLEncoder.encode(s,"utf-8");
response.sendRedirect(path+eStr);
%>
로그인에 필요한 아이디 비밀번호를 db에 가서 있는 회원인지 찾습니다.
한 회원의 정보를 bean 객체에 담았습니다. null 이라면 존재 하지 않는 아이디 문자열을 s에 답습니다. 그리고 path 문자열에는 loginForm.jsp?msg= 를 담습니다. 문자열 s 를 인코딩해서 path 문자열과 붙여 클라이언트를 loginForm 으로 다시 돌려보냅니다.
만약 아이디, 비밀번호가 일치하다면, id 키 와 입력된 id 값을 session 에 저장해서 웹 브라우저가 공유되게 합니다. 만약 체크박스에 체크가되지 않았다면 쿠키삭제됩니다.
삭제 방법은 1. 체크박스가 null 인지 확인합니다 2. getCookies 로 쿠키의 값들을 객체 배열에 넣습니다. 객체 배열이 null 이 아니라면 for문을 돌려서 getName으로 id 비교하고 맞다면, new Cookie("id","")로 공백을 줍니다. 그리고 만든 객체서 setMaxAge(0) 을 해서 addCookie 에 담습니다
삭제방법은 쿠키를 얻어와서 , 객체가 null 이 아니라면 for문으로 뽑습니다. id 를 비교해서 session에 저장된 id 와 같다면 쿠키 객체 생성해서 id 키에 null 을 줍니다. 그리고 setMaxAge(0) 으로 쿠키를 삭제하고 addCookie 에 붙임니다.