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 |