prototype.js

자바스크립트 라이브러리로 jQuery가 나오기전에 많이 사용했던 라이브러리이다

( jQuery 함께 사용하면 충돌이 발생하므로 주의한다) 

 


아이디 중복 체크 예제

prototype.js사용방법

prototype.js를 프로젝트의 WebContent에 복사한 후, 스크립트 소스파일을 추가해준다

<script language="JavaScript" src="prototype.js"> </script>

=> $()을 사용하기 위함. 

document.getElementById("id값")
//동일
$("id값")

 

$()함수를 사용하기 위해 태그에 id를 부여하여 구분할 수 있도록 한다

(id 속성값은 중복될 수 없음)

 

<td>아이디</td>
<td> <input type="text" name="mem_id" id="mem_id" size="15">
<input type="button" value="ID중복확인" onClick="idCheck(this.form.mem_id.value"></td>
<td id="id_check">아이디를 적어주세요</td>

 

요청을 보내는 jsp파일에서 form 태그 내에서 입력받은 id값을

idCheck 자바스크립트 함수로 전달한다. 

 

 

check.js ( Ajax 구현 ) 

var xhr;

function getXHR(){
   if(window.XMLHttpRequest){
      xhr = new XMLHttpRequest(); //(a)
   }
}

function idCheck(id){
   if(id==""){
	   var mem_id=$("id_check") //(b)
	   $("id_check").innerHTML="<font color='red'>아이디는 필수사항입니다</font>"
	   $("mem_id").focus()
	   return false
   }
   getXHR();
   var url ="IdCheck.jsp?"+getParams()
   xhr.onreadystatechange=resultPro;
   xhr.open("Get",url,true)
   xhr.send(null)
}

function getParams(){
   var mem_id = $("mem_id").value
   return "mem_id="+mem_id+"&timestamp="+new Date().getTime(); //(c)
}

function resultPro(){
	if(xhr.readyState==4){
		if(xhr.status==200){
			var result=xhr.responseText;
			alert(result); //(d)
			$("id_check").innerHTML=result;
		}
	}
}

 

*(a)
함수내부에 var로 선언된 변수는 지역변수로, var를 쓰지 않으면 전역변수로 인식된다.
그러므로 위에 선언한 xhrObject가 함수 내부에서 생성된것임을 알 수 있다. 



*(b)
var mem_id= document.getElementById("id_check")와 동일하다. 


*(c)
자주오는 요청은 서버캐시에 저장된다.
서버캐시에 요청 문장을 저장하지 않는 방법으로는 매번 요청 url을 다르게 보내는 방법이 있다. 


*(d)
result의 값은 IdCheck.jsp 자체이다.

 

 

xhr객체를 send()로 요청하면 IdCheck.jsp로 파라미터값이 넘어간다.

IdCheck.jsp에서 아이디가 db에 존재하는지 여부를 확인한 후, 그에따라 다른 결과를 출력한다. 

응답이 check.js로 도착하면 resultPro 콜백메소드가 실행된다.

xhr.responseText는 IdCheck.jsp이고, (alert를 통해 확인가능)

그 출력 결과는 처음 form태그 내에 있던 $("id_check").innerHTML에 출력된다. 

 

 

 

IdCheck.jsp - xhtml을 지원하는 jsp

* xhtml을 지원하는 jsp 생성

 

<!--jsp파일-->
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="hewon.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<%
	//check.js => IdCheck.jsp?mem_id='xxx'&timestamp='xxx'
	response.setContentType("text/xml;charset=utf-8");
	String result="";
	String mem_id=request.getParameter("mem_id");

	/*DB에 존재하는 ID와 비교하여 존재한다면 ck=true, 
    존재하지 않는다면 ck=false 반환하는 코드*/
    
	if(ck){
		result="<font color='red'><b>이미 존재하는 아이디입니다.</b></font>";
	}else{
		result="<font color='blue'><b>사용이 가능한 아이디입니다.</b></font>";
	}
	out.println(result);
%>
</body>
</html>

 

+ Recent posts