쉽게 풀어서 설명하자면 이번 정리의 목표는

사용자가 입력한 결과값들을 잘 받기 이다 !!

 

 

 

[getParameter계열 메소드가 null을 반환하거나 빈 문자열을 반환 하는 경우]
1. parameter를 전달하지 않거나 파라미터명이 틀린 경우 null반환
2.Text박스 계열인 경우 값을 입력 안하고 전송한 경우 빈 문자열(" ") 반환
3.선택 계열인 radio박스나 checkbox등인 경우 미 선택시에는 null반환(왜냐하면 파라미터가 전달이 안되니까!)

※name이 같은 form의 하위요소의 값을 받을때는 getParameterValues()   -> 이게 뭔말이냐면 name 은 1개인데  value 값이 여러 개일 때를 말함 ! 체크박스같은거 ! 값이 여러개 일 수 있지 !
단, type="radio"처럼 하나의 이름으로 하나의 값을 전달할때는 getParameter()로 받아도 된다.

 

자 우선 받은 HTML 문서 보고 확인(+ form 태그 이용한 값 전송 결과물까지 )

    <h1 class="display-4">
       <code>form</code>태그를 이용한 값 전송      	
    </h1>
    <form>  <!-- 따로 지정 없으니 get방식 -->
			<div class="form-group">
				<label class="lead font-weight-bold">이름</label>
				<input type="text" class="form-control"	name="name">  <!-- text박스는 입력값이 없어도 무조건 전송이 됨 !!-->
			</div>
			<div class="form-group">
				<label class="lead font-weight-bold">성별</label>
				<div class="form-check">
					<label class="form-check-label"> <input type="radio"
						class="form-check-input" name="gender" value="남자">남자
					</label>
				</div>
				<div class="form-check">
					<label class="form-check-label"> <input type="radio"
						class="form-check-input" name="gender" value="여자">여자
					</label>
				</div>
			</div>
			
			<div class="form-group">
				<label class="lead font-weight-bold">관심사항</label>
				<div class="form-check">
					<label class="form-check-label">
					<input type="checkbox"	class="form-check-input" name="inter" value="POL">정치
					</label>
				</div>
				<div class="form-check">
					<label class="form-check-label">
					<input type="checkbox"	class="form-check-input" name="inter" value="ECO">경제
					</label>
				</div>
				<div class="form-check">
					<label class="form-check-label">
					<input type="checkbox"	class="form-check-input" name="inter" value="ENT">연예
					</label>
				</div>
				<div class="form-check">
					<label class="form-check-label">
					<input type="checkbox"	class="form-check-input" name="inter" value="SPO">스포츠
					</label>
				</div>
			</div>			
			
			<button type="submit" class="btn btn-primary">확인</button>
	</form>
    
    //form 태그를 이용한 값 전송 결과 바로 뿌리기
	<h3><%= values  %></h3>

 

 

1. 사용자에게 입력 받아야지

<%
	//파라미터 받기
	String name = request.getParameter("name");
	String gender = request.getParameter("gender");
	String[] inter= request.getParameterValues("inter"); // 값이 여러개가 가능해서 getParameterValues
//  out.println(String.format("이름:%s,성별:%s,관심사항:%s",name,gender,inter));  관심사항은 배열이라 주소가 출력 됨..
	String values =" ";
	if(name != null && name.trim().length()!=0 && gender != null && inter != null ){
		values=String.format("이름:%s,성별:%s,관심사항:",name,gender);
	 	for(String code : inter) values += codeToValue(code)+ " "; //관심사항은 따로 구해 values에 누적 함!	 	
	}
%>

그리고 관심사항의 코드값은 직관적으로 알아보기 힘들어서 

코드값을 value로 변경 할 것임!

이건 맨~ 위 선언부에서 선언한다 !

<%!
    ///코드값을 value로 변경하는 메소드 
	private String codeToValue(String code){
		switch(code.toUpperCase()){
		case "POL": return "정치";
		case "ECO": return "경제";
		case "ENT": return "연예";
		default: return "스포츠";		
		}	
}

%>

 

 

1. a 태그방식으로 전송 값 얻기

	<h1 class="display-4">
       <code>a</code>태그를 이용한 값 전송        	
    </h1> <!-- a 태그는 무조건 get방식 --> 
    <a href="RequestForParameter.jsp?name=코스모&gender=남&inter=eco&inter=spo&inter=ent">GET</a>   
    <h1 class="display-4">모든 파라미터명 얻기 </h1>
        <!-- request 객체의 getParameterNames()메소드로 얻는다 
         	파라미터명 존재 여부 판단
         -->
	<ul class="list-unstyled">
<%
	Enumeration<String> names =request.getParameterNames();
		while(names.hasMoreElements()){
			//파라미터명 얻기
			String paramName = names.nextElement();
			//파라미터값 얻기
			//out.println("<li>"+request.getParameter(paramName)+"</li>");  이렇게 하면 관심사항 여러개 찍어도 하나만 넘어감
			//out.println("<li>"+request.getParameterValues(paramName)+"</li>"); 이건 주소가 나와서 안됨
			if(paramName.equals("inter")){
					 String[] paramValues =request.getParameterValues(paramName);
				//out.println("<li>"+String.format("%s : %s",paramName,Arrays.toString(paramValues))+"</li>");		
				//코드변환출력
				//방법1. 
				String vals="";
				for(String code:paramValues){
					vals += codeToValue(code)+" ";
		 		}
	    	 	 out.println("<li>"+String.format("%s : %s",paramName,vals)+"</li>"); 
					 
				//방법2. 스트림 사용해서 배열의 요소값들을 변환
				Stream<String> streams = Arrays.stream(paramValues);
				String vals = Arrays.toString(streams.map(x->codeToValue(x)).toArray());
				out.println("<li>"+String.format("%s:%s",paramName,vals)+"</li>"); 
	    	 }
			 else{
				String paramValue =request.getParameter(paramName);
				out.println("<li>"+String.format("%s : %s",paramName,paramValue)+"</li>");					
			}
		}
%>						
	</ul>

 

 

2.맵으로 모든 파라미터 얻기

getParameterMap() : 많은 파라미터가 있을 때 한꺼번에 받을 때 유리
      key는 파라미터명이 되고 
      value는 사용자가 입력하거나 선택한 값이 된다

   <h1 class="display-4"> 맵으로 모든 파라미터 얻기</h1>
   <ul class="list-unstyled">      
<%
    Map<String,String[]> params = request.getParameterMap();
       //파라미터명 얻기
     Set<String> paramNames = params.keySet();     //키들 가져와 담음		
     out.println("모든 파라미터명:"+paramNames.toString()); 		
       	for(String paramName:paramNames){   
       		String[] vals = params.get(paramName);   //키로 value값들을 꺼내와 배열에 담음
       			if(vals.length != 1 ){
%>
       		       <li><%=paramName %> : <%= Arrays.toString(vals) %></li>
<%      				
       		     }
       			else{  %>
       				<li><%=paramName %> : <%=vals[0] %></li>  //1개만 선택 했을 때
<%  
       		   }
       		} ///for    			     
%>                  
    </ul>

'학원 > JSP' 카테고리의 다른 글

11/22 48-1 [JSP] ResponseForHeader  (0) 2022.11.22
11/21 47-8 [JSP] RequestForExam ++추가  (0) 2022.11.22
11/21 47-6 [JSP] ScriptingExample  (0) 2022.11.21
11/21 47-5 [JSP] RequestForHeader  (0) 2022.11.21
11/21 47-4 [JSP] RequestForServerNClient  (0) 2022.11.21

+ Recent posts