프로그래밍 언어/자바 웹

ID 중복 여부 확인하기

· 코딩마이데이

1. sec02.ex01 패키지를 만들고 MemberDAO, MemberServlet를 만듭니다. 그리고 ajax3.html을 추가합니다. 

실습 파일 위치

 

2. MemberServlet 클래스를 다음과 같이 작성합니다. 클라이언트에서 Ajax로 전송된 ID를 받아서 MemberDAO의 overlappedID() 메서드로 전달합니다. 그리고 그 결과를 이용해 클라이언트에게 다른 메시지를 전달합니다.

package sec02.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MemberServlet
 */
@WebServlet("/mem")
public class MemberServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)	throws ServletException, IOException {
		doHandler(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandler(request, response);
	}

	private void doHandler(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		PrintWriter writer = response.getWriter();

		String id = (String) request.getParameter("id");
		System.out.println("id = " + id);
		MemberDAO memberDAO = new MemberDAO();
		boolean overlappedID = memberDAO.overlappedID(id);

		if (overlappedID == true) {
			writer.print("not_usable");
		} else {
			writer.print("usable");
		}
	}
}

 

3. MemberDAO을 다음과 같이 작성합니다. 서블릿에서 전달된 ID로 SQL문의 조건식에 설절한 후 ID에 대한 회원 정보를 조회하여 그 결과를 true 또는 false로 반환합니다.

package sec02.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	private Connection con;
	private PreparedStatement pstmt;
	private DataSource dataFactory;

	public MemberDAO() {
		try {
			Context ctx = new InitialContext();
			Context envContext = (Context) ctx.lookup("java:/comp/env");
			dataFactory = (DataSource) envContext.lookup("jdbc/oracle");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public boolean overlappedID(String id){
		boolean result = false;
		try {
			con = dataFactory.getConnection();
			String query = "select decode(count(*),1,'true','false') as result from t_member";
			query += " where id=?";
			System.out.println("prepareStatememt: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, id);
			ResultSet rs = pstmt.executeQuery();
			rs.next();
			result =Boolean.parseBoolean(rs.getString("result"));
			pstmt.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return result;
	}
}

 

4. ajax3.html을 다음과 같이 작성합니다. ID 중복 체크하기를 클릭하면 텍스트 박스에 입력한 ID를 val() 메서드로 가져와 ajax를 이용해서 서브릿으로 전송합니다. 그러면 서블릿에서 결과를 전달받아 화면에 출력합니다.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>아이디 중복 체크</title>
<script  src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
 function fn_process(){
    var _id=$("#t_id").val();
    if(_id==''){
   	 alert("ID를 입력하세요");
   	 return;
    }
    $.ajax({
       type:"post",
       async:true,  
       url:"http://localhost:8080/pro16/mem",
       dataType:"text",
       data: {id:_id},
       success:function (data,textStatus){
    	   //alert(data);
    	   
          if(data=='usable'){
       	   $('#message').text("사용할 수 있는 ID입니다.");
       	   $('#btnDuplicate').prop("disabled", true);
          }else{
       	   $('#message').text("사용할 수 없는 ID입니다.");
          }
       },
       error:function(data,textStatus){
          alert("에러가 발생했습니다.");ㅣ
       },
       complete:function(data,textStatus){
          //alert("작업을완료 했습니다");
       }
    });  //end ajax	 
 }		
</script>
</head>
<body>
   <input  type="text" id="t_id"/>
   <input type="button" id="btnDuplicate" value="ID 중복체크하기" onClick="fn_process()" /><br><br>
   <div id="message"></div>
</body>
</html>

 

5. http://localhost:8080/pro16/test03/ajax3.html로 요청하여 ID를 입력합니다. SQL Developer로 회원 정보를 조회한 후 테이블에 등록된 ID와 등록되지 않은 ID를 각각 입력하여 결과를 확인합니다.

 

'프로그래밍 언어 > 자바 웹' 카테고리의 다른 글

JSON의 자료형 사용 실습  (0) 2026.05.30
제이쿼리에서 JSON 사용하기  (0) 2026.05.27
XML 데이터 연동하기  (0) 2026.05.21
제이쿼라 Ajax 사용하기  (0) 2026.05.18
제이쿼리 Ajax 사용법  (0) 2026.05.15