쿠키

서울IT코드정리 /kyChoi·2021년 11월 7일
0

JSP 정리❤

목록 보기
17/22

쿠키는 생성방법과 삭제방법을 알면됩니다,

언제 생성, 삭제를 해야 하는지는 checkbox가 클릭 되어졌을때 결정나겠죠. checkbox 는 on으로 날라옵니다

<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 에 붙임니다.

profile
건물주가 되는 그날까지

0개의 댓글