アイデンティティー再検査


会員登録時に、ユーザーからIDを入力し、重複チェックコードを作成しようとします.

main.jsp

<ul class="actions vertical">
	<li><h5>회원가입</h5></li>
		<form action="JoinCon.do" method="post">
			<li><input id="Join_email" type="text" name="email" placeholder="Email을 입력하세요">
			<button type="button" id="check" onclick="emailCheck()">중복체크</button>
			<p id="result"></p></li>
			<li><input type="password" name="pw" placeholder="PW를 입력하세요"></li>
			<li><input type="text" name="tel" placeholder="전화번호를 입력하세요"></li>
			<li><input type="text" name="address" placeholder="집주소를 입력하세요"></li>
			<li><input type="submit" value="JoinUs" class="button fit"></li>
		</form>
</ul>
<script src="assets/js/main.js"></script>
<script type="text/javascript">
	function emailCheck(){
		$.ajax({
			url : "check.do",	
			type : "get",
			data : {
				"email" : $("input[id=Join_email]").val()
				// "email" : $("#Join_email").val()  -> 가독성이 더 좋음.
			},
			success : function(res){
				// rs.next() -> true : 중복이 있다. / false : 중복이 없다.
				// 기본적으로 out객체로 응답받는 데이터는 text/html 구조임.
				// boolean false 로 받아온 객체는 String "false"로 받아짐.
				if(res == "true") {
					$("#result").html("중복된 ID입니다. ").css("color", "red");
				}else {
					$("#result").html("사용가능한 ID입니다. ").css("color", "green");
				}			
			},
			error : function(){
				alert("요청실패") 
			}
		});
	}
</script>

controller(servlet)

String uri = request.getRequestURI();
System.out.println(uri);
String path = request.getContextPath();
System.out.println(path);
String command = uri.substring(path.length()+1);
System.out.println("요청기능 : " + command);

if(command.equals("check.do")) {
			
	// 1. 파라미터 수집
	String email = request.getParameter("email");
			
	// 2. DAO 객체 생성
	memberDAO dao = new memberDAO();
			
	// 3. DAO객체의 메서드 사용
	boolean check = dao.emailCheck(email);
			
	// 4. printWriter객체 생성
	PrintWriter out = response.getWriter();
			
	// 5. 응답
	out.print(check);
}

DAO


package com.message.DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.http.HttpSession;

import com.message.DTO.memberDTO;

public class memberDAO {
	Connection conn = null;
	PreparedStatement psmt = null;
	private boolean check;
	
	public void getConn() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

			String url = "jdbc:oracle:thin:@000.0.0.0:0000";
			String dbid = "00";
			String dbpw = "00";
			
			conn = DriverManager.getConnection(url, dbid, dbpw);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
    
    public void close() {
		try {
			if(rs != null){
	            rs.close();
	        }
			if(psmt!=null) {
				psmt.close();
			}
			if(conn!=null) {
				conn.close();
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
    
    public boolean emailCheck(String email) {
		try {
			getConn();
			
			String sql = "select * from member_message where email = ?";
			
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, email);
			
			rs = psmt.executeQuery();
		
			check = rs.next();	
			
		}catch(Exception e) {
			//ClassNotFoundException, SQLException
			e.printStackTrace();
			
		}finally {
			close();
		}
		return check;
	}