Clean Code that Works.

사용할 자바 스크립트 파일.
ajax.js = 최범균님의 Ajax 프로그래밍에 있는 파일(ajax 연결 관련 및 이벤트 처리).
log.js = 로그 출력용 파일.

시나리오
text영역에 keyup 이벤트가 발생 했을 경우
text.value를 얻어 와서 ajax를 통해 실행 후 데이터베이스에 id 값이 있는지 없는지 비교.
window.onload = function() {
    var id = document.getElementById("id");
    // 특정 요소에 keyup 리스너를 등록
    ajax.Event.addListener(id, "keyup", idHandler, false);
}
// keyup이벤트가 발생하면 아래 메서드가 실행된다.
function idHandler(event) {
    //log(document.regist.id.value);
    var params = "id=" + document.regist.id.value;
    new ajax.xhr.Request("registIdCheck.action", params, viewInfo, "GET");
}
//idHandler에서 실행된 결과를 idCheck란 id를 가진 요소에 출력해준다.
function viewInfo(req) {
    if(req.readyState == 4) {
        if(req.status == 200) {
            var idCheck = document.getElementById("idCheck");
            idCheck.innerHTML = req.responseText;
        }
    }
}

스트럿츠2 + iBatis를 해서 개발중.

iBatis 소스
<select id="selectCheckUserId" parameterClass="string" resultClass="string">
        SELECT id FROM member WHERE id = #id#
</select>
이렇게 해서 sqlMap.queryForObjec("selectCheckUserId", param);
실행하게되면 반환 값으로 select 한 id 값을 얻어 올 수 있다.

struts2 소스
@Override
    public String execute() throws Exception {
        if (registerService.selectCheckUserId(id) == true)
            return SUCCESS;
        return INPUT;
    }

반환 값이 없으면 null 이 return 되기 때문에 이를 가지고 반환 값이 없으면 success를
반환값이 있으면 input을 리턴해서

<action name="registIdCheck" class="net.DBLab.www.register.action.RegistIdCheck">
            <result name="success">../html/register/idCheckOK.jsp</result>
            <result name="input">../html/register/idCheck.jsp</result>
</action>
각각 result에 매핑된 경로 대로 이동해서 값을 출력한다.
idCheckOK는 아이디를 사용 할 수 있습니다.
idCheck는 아이디를 사용할 수 없습니다를 각각 출력한다.

사용자 삽입 이미지

사용할 수 없을 경우

사용자 삽입 이미지

사용할 수 있을 경우