jsp18

제로·2022년 12월 8일
0

JSP

목록 보기
17/30

쿠키 만들기(한글처리)

  1. 설정
    import="java.net.URLEncoder"
    URLEncoder.encode("쿠키의 key/value값","utf-8")
  2. 쿠키값 가져오기
    import="java.net.URLDecoder"
    URLDecoder.decode("쿠키의 key/value값","utf-8")
# 쿠키 만들기
<%
	String key = URLEncoder.encode("이름","utf-8");
	String val = URLEncoder.encode("홍길동","utf-8");
	Cookie c1 = new Cookie(key,val);
	response.addCookie(c1);
%>    
# 쿠키 가져오기
<%
	Cookie[] cookies = request.getCookies();
    for(Cookie ck:cookies){
%>
	<%=URLDecoder.decode(ck.getName(),"utf-8")%>
    <%=URLDecoder.decode(ck.getValue(),"utf-8")%>
<%}%>    

(한글)쿠키 리스트(생성/삭제)


## a10_CookieList.jsp
<%@ import="java.net.URLDecoder" %>
<h2>현재 쿠키 리스트</h2>
	<form method="post" action="a11_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];
            // 한글로 decoding
			String key = URLDecoder.decode(c.getName(),"UTF-8");
			String val = URLDecoder.decode(c.getValue(),"UTF-8");
			
		
		%> 
		<tr><td><input type="checkbox" name="cidx" 
					value="<%=idx%>"/></td>
			<td><input type="text" name="ckey" 
					value="<%=key.equals("JSESSIONID")?"":key%>"/></td>
			<td><input type="text" name="cval" 
					value="<%=key.equals("JSESSIONID")?"":val%>"/></td></tr>
		<%
		}
		%>
	</table>
	<input type="hidden" name="proc"/>
	</form>
	<input type="button" value="쿠키추가/변경" onclick="go('add')"/>
	<%--쿠키값의 key가 같으면 변경이 되고, 다르면 추가 --%>
	<input type="button" value="쿠키삭제" onclick="go('del')"/> 
</body>

<script>
function go(proc){	
	// check를 해야 다음 페이지에 전송되게 처리
	var ckDoms = document.querySelectorAll("[name=cidx]");
	var isCheck = false
	for(var idx=0;idx<ckDoms.length;idx++){
		if(ckDoms[idx].checked)
		isCheck = true;
	}
	if(!isCheck){
		alert("선택된 쿠키값이 없네요\n체크박스를 선택해주세요")
		return;
	}
	document.querySelector("[name=proc]").value=proc;
	// DOM 객체의 아래와 같이 요소객체로 배열을 설정하는 경우도 있다.
	document.forms[0].submit();
}


## a11_proc.jsp
<%@ import="java.net.URLEncoder"  %>
<%
	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){
			int idx = Integer.parseInt(cidxS);
            // 쿠키값 encoding
			String key = URLEncoder.encode(ckey[idx],"UTF-8");
			String val = URLEncoder.encode(cval[idx],"UTF-8");
			// 입력값이 없을 때 check한 것에 대한 에러 방지
			if(!key.equals("")&&!val.equals("")){
				// 쿠키를 만들어서 수정과 등록은 같은 프로세스로 처리되고
				// 삭제만 setMaxAge를 0으로 추가처리한다.
				Cookie c = new Cookie(key,val);
				if(proc.equals("del")){
					c.setMaxAge(0);
				}
				response.addCookie(c);
			}
		}
	}
	// 서버단에서 페이지 이동 코드로 서버로 이동처리..
	response.sendRedirect("a10_CookieList.jsp");

%>
profile
아자아자 화이팅

0개의 댓글