IT/Programming / / 2023. 4. 19. 10:13

JSP 회원가입 및 로그인 - 5. 회원등록시 ID 중복 체크하기

반응형

Dynamic Web Project : 10-member

[클라이언트]

Folder : member

JSP File : WebContent/member/writeForm.jsp(수정)

WebContent/member/checkId.jsp

 

Folder : script

javascript File : WebContent/script/memberScript.js(수정)

 

Package : member.bean

Class File : src/member.bean/MemberDTO.java(수정없이 그대로 사용) ( DTO : Data Transfer Objecr)

 

Package : member.dao

Class File : src/member.dao/MemberDAO.java(수정) (DAO : Data Access Object)

 

 

<실행 결과>

<작업순서>

 
1. 10-member/WebContent/script/memberScript.js
function checkWrite(){
	if(document.writeForm.name.value == ""){
		alert("이름을 입력하세요 ");
		document.writeForm.name.focus();
	}else if(document.writeForm.id.value == ""){
		alert("아이디를 입력하세요 ");
	}else if(document.writeForm.pwd.value == ""){
		alert("비밀번호를 입력하세요 ");
	}else if(document.writeForm.pwd.value != document.writeForm.repwd.value){
		alert("비밀번호가 맞지 않습니다.");
	}else {
		document.writeForm.submit();
	}
	
}


function checkLogin(){
	if(document.loginForm.id.value ==""){
		alert("아이디를 입력하세요");
		document.loginForm.id.focus();
	}else if(document.loginForm.pwd.value == ""){
		alert("비밀번호를 입력하세요");
		
	}else{
		document.loginForm.submit();
	}
}
	
	
function checkId(){
	var sId = document.writeForm.id.value;
	if(sId ==""){
		alert("먼저 아이디를 입력하세요");
	}else {
		window.open("checkId.jsp?id=" + sId, "","width = 350 height=100 left=500 top=200")
	}
}
 

 

 

2. 10-member/WebContent/member/writeForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page info ="copyright by MIS" %>
<% request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>

<script type="text/javascript"
	src="../script/memberScript.js">
</script>
</head>
<body>
<form name = "writeForm" method ="post" action="write.jsp"  >
<table border="1">
	<tr>
		<td width ="70" align="center">이름</td>
		<td><input type="text" name="name" placeholder="이름 입력"></td>
	</tr>
	<tr>
		<td width ="70" align="center">아이디</td>
		<td>
			<input type="text" name="id">
/////////////////////////////////////////////////////////////////////////
			<input type="button" value="중복체크" onclick="checkId()">
/////////////////////////////////////////////////////////////////////////
		</td>
	</tr>
	<tr>
		<td width ="70" align="center">비밀번호</td>
		<td><input type="password" name="pwd" size = "30"></td>
	</tr>
	<tr>
		<td width ="70" align="center">재확인</td>
		<td><input type="password" name="repwd" size = "30"></td>
	</tr>
	<tr>
		<td width="70" align="center">성별</td>
		<td>
			<input type ="radio" name="gender" value="0" checked>남
			<input type ="radio" name="gender" value="1">여
		</td>
	</tr>
	<tr>
		<td width="70" align="center">이메일</td>
		<td>
			<input type ="text" name = "email1">@
			<select name ="email2" style ="width:100px;">
				<option value="naver.com">naver.com
				<option value="gmail.com">gmail.com
				<option value="hanmail.com">hanmail.com
				<option value="nate.com">nate.com
			</select>
		</td>
	</tr>
		
	<tr>
		<td width="70" align="center">핸드폰</td>
		<td>
			<select name="tel1" style="width:70px;">
				<option value ="010">010
				<option value ="011">011
				<option value ="019">019
		</select>-
		<input type="text" name="tel2" size="10">-
		<input type="text" name="tel3" size="10">
		</td>
	</tr>
	
	<tr>
		<td width="70" align="center">주소</td>
		<td>
			<input type="text" name="addr" size="50"><br>
		</td>
	</tr>
	
	<tr>
		<td colspan="2" align="center">
			<input type="button" value="회원가입" onclick="javascript:checkWrite()">
			<input type="reset" value="다시 작성">
		</td>
	</tr>
</table>
</form>
</body>
</html>
 

 

3. 10-member/src/member.dao/MemberDAO.java
package member.dao;

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

import member.bean.MemberDTO;

public class MemberDAO {
	private String diver = "oracle.jdbc.driver.OracleDriver";
	private String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private String username = "jspexam2";
	private String password = "m1234";
	
	private Connection conn;
	private PreparedStatement pstmt;
	private ResultSet rs;
	
	public MemberDAO(){
		try{
			Class.forName(diver);
			
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	public Connection getConnection(){
		try {
			conn = DriverManager.getConnection(url,username,password);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return conn;
	}
	
	public int write(MemberDTO memberDTO){
		int su = 0;
		conn = getConnection();
		String sql =
				"insert into member values (?,?,?,?,?,?,?,?,?,?,sysdate)";
		
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memberDTO.getName());
			pstmt.setString(2, memberDTO.getId());
			pstmt.setString(3, memberDTO.getPwd());
			pstmt.setString(4, memberDTO.getGender());
			pstmt.setString(5, memberDTO.getEmail1());
			pstmt.setString(6, memberDTO.getEmail2());
			pstmt.setString(7, memberDTO.getTel1());
			pstmt.setString(8, memberDTO.getTel2());
			pstmt.setString(9, memberDTO.getTel3());
			pstmt.setString(10, memberDTO.getAddr());
			su = pstmt.executeUpdate();
			
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		} finally{
			try {
				if(pstmt != null) pstmt.close();
				if(conn != null) conn.close();
				
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
		return su;
	}
	
	
	public String login(String id, String pwd){
		String name="null";
		conn = getConnection();
		String sql = "select * from member where id=? and pwd=?";
		
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, id);
			pstmt.setString(2, pwd);
			rs = pstmt.executeQuery();
			
			if(rs.next()){
				name = rs.getString("name"); //rs.getString(1);
			}
			
		} catch(SQLException e){
			e.printStackTrace();
		}
		finally {
			// TODO: handle finally clause
			try{
				if(rs != null) rs.close();
				if(pstmt != null) pstmt.close();
				if(conn != null) conn.close();
				
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		return name;
	}
	
	///////////////////////////////////////////////////
	public boolean isExistId(String id){
		boolean exist = false;
		conn = getConnection();
		String sql = "select * from member where id=?";
		
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, id);
			rs = pstmt.executeQuery();
			
			if(rs.next()){
				exist = true;
			}
			
		} catch(SQLException e){
			e.printStackTrace();
		}
		finally {
			// TODO: handle finally clause
			try{
				if(rs != null) rs.close();
				if(pstmt != null) pstmt.close();
				if(conn != null) conn.close();
				
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		return exist;
	}
	///////////////////////////////////////////////////////////
}
 

 

4. 10-member/WebContent/member/checkId.jsp
<%@page import="member.dao.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page info ="copyright by MIS" %>
<% request.setCharacterEncoding("utf-8"); %>
<%
//데이터
String id = request.getParameter("id");

//DB
MemberDAO memberDAO = new MemberDAO();
boolean exist = memberDAO.isExistId(id);

%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>중복방지</title>
<script type="text/javascript">
	function checkIdClose(){
		opener.writeForm.id.value = '<%=id%>';
		window.close();
		opener.writeForm.pwd.focus();
	}
</script>


</head>
<body>
<form name="" method="post" action="chechId.jsp">
<%if(exist){ %>
<%=id %>는 사용중입니다.<br><br>
아이디 <input type="text" name="id">
<input type="submit" value="중복체크">
<%}else{ %>
<%=id %>는 사용 가능합니다.<br><br>
<input type="button" value="사용" onclick="checkIdClose()">
<%} %>



</form>


</body>
</html>
 

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유