2. 컴퓨터 이야기/프로그래밍

웹 컨트롤 파라미터 관련 처리, 컨트롤 페이지쪽 자바스크립트와 처리하는쪽 코드

래빗 크리스 2009. 6. 4. 11:13

본, 게시글은 계속 업데이트 됩니다.

A.jsp 에서 설정된 웹 컨트롤들을 B.jsp 가 받아서 처리를 한다고 가정하고 설명합니다.

이곳은, A.jsp 처리 부분입니다. 웹 컨트롤들을 화면에서 처리하는 방법들을 다룹니다.
form 태그가 사용되겠지요. form 태그의 method 를 post 로 할 것이냐 get 으로 할 것이냐는 고민을 해야 합니다.
get 으로 하면 파라미터의 문자열 길이가 제한을 받기도 하고, 웹브라우저의 주소창에 파라미터가 노출됩니다.
물론 post 방식으로 하면 이러한 제한이 없습니다.
파일을 업로드 하거나 나모 액티브스퀘어와 같은 웹에디터를 사용한다면 enctype="multipart/form-data" 옵션을 사용합니다.
getElementById 는 Element 스펠링을 단수로 표현.
ID 는 하나만 가능하기 때문. 2개 이상 사용될 수도 있는데 name 과 연계되는 경우로 getElementsByName 에서 이용.

getElementsByName
 은 Element 스펠링을 복수로 표현.
대체로는 select 나 input 과 같은 컨트롤에 붙여지지만 일반 태그에도 붙이려면 id 와 함께 이용.

getElementsByTagName



getElementsByName 예제 #1
<div id="n" name="n">a</div>
<div id="n" name="n">b</div>
<div id="n" name="n">c</div>
<script>
  var array = document.getElementsByName('n');
  for(var i=0, s=array.length; i<s; i++){
    array.style.background = '#ABCDEF';
  }
</script>



이곳은 B.jsp 부분을 설명합니다.
form 태그는 A.jsp 에서 사용되고, A.jsp 가 B.jsp 를 호출한다고 할때 B.jsp 에 검출되는 값입니다.
form 태그의 enctype="multipart/form-data" 속성과는 상관없습니다.

<form name="frm" method="post"> 라고 가정하고 설명합니다.
form 태그는 중첩을 허용하지 않습니다. 중첩이 되면 오류가 발생한다는 사실 잊지 마세요.

A.jsp B.jsp 에서 request.getParameter 로 얻은 값
<input name="cb" type="checkBox">
체크된 경우 document.frm.cb.checked 는 true
체크되지 않은 경우 당연히 false
스크립트에서 체크 상태를 수정할 수 있지요
 ...checked = true; 또는 false; 를 사용하면 됩니다.
동일 이름의 체크박스가 여러개인 경우
document.frm.cb[0].checked 와 같이 배열 이용
체크된 경우  "on" 문자열,
체크되지 않은 경우 null.
CheckBox 타입의 input 에 value 를 설정하는 것은 옳지 않습니다. 체크박스의 선택여부에 상관없이 value 가 동일하게 나오기 때문입니다.
   
   

아래와 같은 메소드를 사용하여 A.jsp 에서 사용된 파라미터를 B.jsp 에서 추출할 수 있습니다.
String getParameter(String name) 하나의 파라미터에 해당하는 값을 추출합니다. 지정된 이름의 파라미터가 존재하지 않거나 값이 없는 경우 null을 리턴 합니다.

모든 파라미터를 추출하려면 getParameterNames 로 파라미터명을 체크하고, getParameterValues 로 해당 파라미터의 값을 추출합니다.
Enumeration getParameterNames() 모든 파라미터의 이름을 Enumeration으로 추출합니다.  
String[] getParameterValues(String name) 해당 이름값에 해당되는 매개변수의 모든 값을 String 배열로 반환합니다.