본문 바로가기
CLASS/SERVLET

#4-2 / 동의 체크박스 Map 배열로 받기

by hingu 2024. 5. 31.

결과출력 예시 : {agree1=Y,agree2=N ..}

 

- map배열 : https://dev-eunse.tistory.com/78

⚡ 체크박스 확인 => map으로 받기
<body>
<form action="./test6.do" method="post" id="frm">
    <input type="hidden" value="" name="ckck">
    <label><input type="checkbox" name="agree_all" id="agree_all" onclick="check_all()">전체선택</label>
    <label><input type="checkbox" name="agree" value="agree0_N" onclick="ch_check()">(필수)개인회원 정보 동의함</label>
    <label><input type="checkbox" name="agree" value="agree1_N" onclick="ch_check()">(필수)이용약관 동의함</label>
    <label><input type="checkbox" name="agree" value="agree2_N" onclick="ch_check()">(선택)청소년 보호정책 동의함</label>
    <label><input type="checkbox" name="agree" value="agree3_N" onclick="ch_check()">(선택)제3자 정보 수집 동의</label>
    <br><br><input type="button" value="동의확인" onclick="agree_go()">
</form>
</body>
<script type="text/javascript">
	var ck = 0;
	var all_ck = false;
	
	function check_all(){
		var f;

		if(all_ck == false){
			for(f=0; f<frm.agree.length; f++){
				frm.agree[f].checked = true;
				frm.agree[f].value = "agree"+ f +"_Y";
			}
			all_ck = true;
		}else{
			for(f=0; f<frm.agree.length; f++){
				frm.agree[f].checked = false;
				frm.agree[f].value = "agree"+ f +"_N";
			}
			all_ck = false;
		}
	}
	
	function ch_check(){
		ck = 0;
		var f;
		for(f=0; f<frm.agree.length; f++){
			if(frm.agree[f].checked == true){
				frm.agree[f].value = "agree"+ f +"_Y";
				ck++;	
			}else{
				frm.agree[f].value = "agree"+ f +"_N";
			}
		}
		
		if(ck == 4){
			document.getElementById("agree_all").checked = true;
		}else{
			document.getElementById("agree_all").checked = false;
		}
	}
	
	function agree_go(){
		if(frm.agree[0].checked == false || frm.agree[1].checked == false){
			alert("필수 체크사항을 확인해주세요");
		}else{
			frm.submit();	
		}
	}
</script>

 

public class test6 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	Map<String, String> agdata = null;
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		this.agdata = new HashMap<String, String>();
		
		//동일한 네임값을 사용할때 가져오는 방식
		  //주의 : 프론트와 네임값을 반드시 사전에 맞춰놓아야함!
		String agck[] = request.getParameterValues("agree");
		
		int w=0;
		while(w<agck.length) {
			String key = agck[w].split("_")[0];
			String val = agck[w].split("_")[1];
			
			this.agdata.put(key,val);
			w++;
		}
		System.out.println(agdata);
	}
}

 

▶ 동일한 네임값을 사용할때 가져오는 방식 확인 (주의 : 프론트와 네임값을 반드시 사전에 맞춰놓아야함! )

String agck[] = request.getParameterValues("agree");