jsp17

제로·2022년 12월 7일
0

JSP

목록 보기
16/30

Cookie

  1. 웹 프로그래밍에 있어서 서버와 클라이언트간의 처리된 정보를 임시 저장하는 경우가 종종 발생한다. 이 때, 이 정보를 서버에 보관하여 사용하는 것을 session이라고 하고, 클라이언트에 저장하는 것을 cookie라고 한다.
  2. 쿠키의 생성 시점
    • 쿠키는 클라이언트의 요청에 의해 서버에서 객체를 생성하여 (key, value) response 객체에 쿠키를 추가하여 클라이언트로 보내진다. 클라이언트에서는 브라우저에서 지정한 경로에 쿠키를 저장한다.
  3. 쿠키의 활용
    1) 쿠키가 클라이언트에 저장된 이후, 요청 객체 request를 사용하면 다시 서버에 보내지고 쿠키값을 key/value 형식으로 호출하여 사용할 수 있다.
    2) 동일한 key로 value값만 변경하여 addCookie를 하면 최종 value값이 key에 할당된다.
  4. 쿠키의 소멸
    • 서버에서 쿠키마다 key명으로 유효시간을 설정하여 클라이언트로 보낸다. 해당 시간이 지나면 소멸된다.
    • 삭제할 쿠키를 참조변수로 가져와서 setMaxAge(0)으로 설정하여 response.addCookie(참조변수)로 클라이언트로 보내면 해당 쿠키값이 삭제된다.

쿠키의 구성

  1. 쿠키는 이름, 값, 유효시간, 도메인, 경로로 구성된다.
  2. 쿠키 이름은 아크시 코드의 알파벳과 숫자만 포함할 수 있따
  3. 콤마, 세미콜론, 공백 등의 문자는 포함할 수 없다
  4. $로 시작할 수 없다.

쿠키의 생성

  1. 쿠키의 생성
    Cookie c1 = new Cookie("쿠키의 이름", "쿠키의 값")
  2. 쿠키의 전달
    response.addCookie(c1);
  3. 쿠키 읽기
    쿠키는 요청객체(request)와 getCookie()메서드로 클라이언트에서 서버로 전달된다.
    쿠키는 배열로 전달되어 각 데이터를 key, value 형식으로 확인할 수 있다.
    Cookie[] cks = request.getCookies();
    for(Cookie c : cks){
    c.getName(); c.getValue;
    }
<%
## a05_CookieList.jsp
<h2>현재 쿠키 리스트</h2>
 <form method="post" action="a09_proc.jsp"> 
 <table id="tb">
 	<tr><th>선택</th><th>쿠키의 키</th><th>쿠키의 값</th></tr>
 	<%
 		Cookie cks[] = request.getCookies();
 		for(int idx=0;idx<cks.length;idx++){
 			Cookie c = cks[idx];
 			//if(!c.getName().equals("JSESSIONID")){ // 쿠키의 default 값
 	%>
 	<tr><td><input type="checkbox" name="cidx" value="<%=idx%>"></td>
 		<td><input type="text" name="ckey" value="<%=c.getName()%>"></td>
 		<td><input type="text" name="cval" value="<%=c.getValue()%>"></td></tr>
 	<%
 		//}
 	}
 	%>
 </table>
 	<input type="hidden" name="proc">
 </form>
 
 	<h2>쿠키 등록</h2>
 	<form method="post" action="a09_proc.jsp">
 		<input type="hidden" name="proc" value="add">
 		<input type="hidden" name="cidx" value="0">
 		쿠기의 key:<input type="text" name="ckey">
 		쿠키의 value:<input type="text" name="cval">
 	</form>	
 	<input type="button" value="쿠키생성" onclick="go('add')">
 	<input type="button" value="쿠키변경" onclick="go('upt')">	
 	<input type="button" value="쿠키삭제" onclick="go('del')">	
</body>

<script type="text/javascript">
function go(proc){
	if(proc=='add'){
		document.forms[1].submit();
	}else{
		document.querySelector("[name=proc]").value = proc;
		document.forms[0].submit();

	}
}
</script>

##a09_proc.jsp
<%
	String proc = request.getParameter("proc");
	String[] cidx = request.getParameterValues("cidx");
	String[] ckey = request.getParameterValues("ckey");
	String[] cval = request.getParameterValues("cval");
 		if(proc!=null){
 			for(String cidxS:cidx){
 				// checkbox로 선택되어진 key/value
 				int idx = Integer.parseInt(cidxS);
 				String key = ckey[idx];
 				String val = cval[idx];
 				if(proc.equals("add")||proc.equals("upt")){
 					Cookie c = new Cookie(key,val);
 					response.addCookie(c);
 				}
 				if(proc.equals("del")){
 					for(Cookie c : request.getCookies()){
 	 					if(c.getName().equals(key)){
 	 						c.setMaxAge(0);
 	 						response.addCookie(c);
 	 					}
 	 				}
 				}	
 			}
 		}
 		response.sendRedirect("a05_CookieList.jsp");
 %>
</body>
%>

profile
아자아자 화이팅

0개의 댓글