JSP

[JSP] request를 이용한 상품 구매 내역

NamGH 2023. 9. 25. 17:12
예제 : request를 이용한 상품 구매 내역
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<style type="text/css">
span{
	float:left;
	display:block;
	width:150px;
	color:red;
}

</style>

<script src = "../js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
	$(function (){
		$('INPUT[name = id]').focus();
	}) ;
	
	function check(){
		if($('INPUT[name = id]').val() == ""){
			alert('아이디를 입력하세요');
			$('INPUT[name = id]').focus();
			return false;
		}
		
		if($('INPUT[name = pw]').val() == ""){
			alert('비번을 입력하세요');
			$('INPUT[name = pw]').focus();
			return false;
		}
		
		if($('INPUT[name = product]:checked').length < 1){
			alert('구매상품을 선택하세요');
			$('INPUT[name = product]').focus();
			return false;
		}
		
		if($('SELECT[name = time]:checked').val == ""){
			alert('배송시간을 선택하세요');
			$('SELECT[name = time]').focus();
			return false;
		}
		
		if($('INPUT[name = approve]:checked').length < 1){
			alert('결제방법을 선택하세요');
			$('INPUT[name = approve]').focus();
			return false;
		}
	}
</script>


<body>
<h2> 상품 구매 내역 </h2>
<FORM name="myform" METHOD="post" ACTION="Ex05_result남경현.jsp">

 <span>아이디 :</span> <INPUT TYPE="text" NAME="id"><br>
 <span>비번 :</span> <INPUT TYPE="text" NAME="pw"><br>
  <p> 
  
 
<span>구매상품:</span>
	<input type="checkbox" name="product" value="식품">식품
	<input type="checkbox" name="product" value="의류">의류
	<input type="checkbox" name="product" value="도서">도서
	<input type="checkbox" name="product" value="가구">가구
<p>

<span>배송시간 :</span> 
 	<SELECT NAME="time">
 		<OPTION VALUE="선택">선택</OPTION>
		<OPTION VALUE="9시~11시">9시~11시</OPTION>
		<OPTION VALUE="11시~1시">11시~1시</OPTION>
		<OPTION VALUE="1시~5시">1시~5시</OPTION>
		<OPTION VALUE="5시~9시">5시~9시</OPTION>
	</SELECT>
<p>

<span>결제방법:</span>
카드 <INPUT TYPE="radio" NAME="approve" VALUE="카드">
핸드폰 <INPUT TYPE="radio" NAME="approve" VALUE="핸드폰">
<p>
<span>결제 동의합니다. </span>  
<INPUT TYPE="checkbox" NAME="agree" id="agree"> <!-- value없으면 on이넘어옴 -->
<p>

<INPUT TYPE="submit" value="보내기" onclick="return check()">
</FORM>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import = "java.util.*"%>
    
<%
request.setCharacterEncoding("UTF-8");
%>
<!-- request객체에는 요청 정보가 담긴다 -->
<style>
	table{
		text-align: center;
		width: 300;
		height: 100;
	}
</style>

<%
Enumeration<String> names = request.getParameterNames();
%>

<table border = "1" style="margin-top: 100px">
<% 
String str = null;
boolean flag = false;
while(names.hasMoreElements()){ 
	str = names.nextElement();
	if(str.equals("agree")){
		flag = true;
	}
	String[] values = request.getParameterValues(str);
	for(int i = 0; i < values.length; i++){
		out.print("<tr><td>" + str + "</td><td>");
		if(values[i].equals("on")){
			out.print("동의함");
		}else{
			out.print(values[i] + " ");
		}
	}
	out.print("</td></tr>");
}
if(flag == false){
	out.print("<tr>");
	out.print("<td>agree</td>");
	out.print("<td>동의안함</td>");
	out.print("</tr>");
}
%>   
</table>
실행결과

 

코드설명
유효성 검사를 한후 names의 객체를 한개한개씩 즉 id pw를 가져오고 정보를 많이 가져올수가 있으니깐 getParameter대신 getParameterValues를사용해 배열을 이용하고 동의안함이라는 정보를 가져오기 위해 flag에 false라는 초기값에 false로 넣어 agree에 체크를 안했을때 flag false가 되기때문에 false일때의 조건문이 실행되게 한다