728x90
커뮤니티 사이트를 운영하려면 먼저 회원관리가 필요하겠죠?
때문에 회원가입을 할 수 있는 페이지를 먼저 만들어 보겠습니다.
그전에 앞서 sql을 사용할 수 있는 DB에 회원 테이블을 만들어줍니다.
저는 회원번호(midx), 아이디, 비밀번호, 이메일, 회원 가입일, 포인트, 삭제 여부(delyn), 관리자 권한을 회원 테이블 칼럼으로 설정했습니다.
회원가입 페이지에서 기본적인 로직은 먼저 빈 input값이 없는지 확인합니다.
이후 비밀번호 두 값이 일치하는지 확인합니다. 아이디 중복확인의 경우 가입자 본인이 클릭해야 작동되는데
누르지 않고 생성버튼을 누르더라도 생성 버튼을 눌렀을 때 중복확인 기능이 먼저 작동해서
중복된 아이디가 DB에 있을 경우 회원가입 처리가 되지 않고 경고창을 띄웁니다.
<script type="text/javascript">
// 두 비밀번호 입력값이 일치하는지 확인 후 데이터 전송
function check() {
if(document.fm.PWD.value != document.fm.PWDCheck.value){
alert("비밀번호가 일치하지 않습니다.");
document.fm.PWDCheck.focus();
return;
}
document.fm.action = "<%=request.getContextPath()%>/member/memberJoinAction.do";
document.fm.method = "post";
}
// DB에 중복 된 아이디가 있는지 확인하는 함수
// if 절은 없어도 됨 input에 required를 적어놨기 때문에
function checkedID(){
if(document.fm.ID.value == ""){
alert("아이디를 입력하세요.");
document.fm.ID.focus();
return;
}
document.fm.action = "<%=request.getContextPath()%>/member/idCheckAction.do";
document.fm.method = "post";
document.fm.submit();
}
</script>
<!-- main content -->
<section id="home">
<h1 id="homeTitle"> 회 원 가 입 </h1>
<form name=fm>
<table >
<tr>
<td>아이디 :</td>
<td>
<input type="text" name="ID" required>
<button type="button" class="check" onclick="checkedID()"> 중복확인 </button>
</td>
</tr>
<tr>
<td>이름 :</td>
<td><input type="text" name="name" required></td>
</tr>
<tr>
<td>비밀번호 :</td>
<td><input type="password" name="PWD" required></td>
</tr>
<tr>
<td>비밀번호 확인 :</td>
<td><input type="password" name="PWDCheck" required></td>
</tr>
<tr>
<td>이메일 :</td>
<td><input type="email" name="email" required></td>
</tr>
<tr>
<td colspan="2" class="tdJoin">
<button type="submit" id="join-btn" onclick="check()"><span>생성</span></button>
</td>
</tr>
</table>
</form>
</section>
중복 확인을 누를경우 checkedID() 함수가 작동되고 멤버 컨트롤러 idCheckAction.do로 파라미터가 넘어옵니다.
//servlet MemberController로 id중복확인
//DB에 회원가입하려는 ID와 같은 ID가 있는지 확인한다.
String ID = request.getParameter("ID");
MemberDAO md = new MemberDAO(); // 메서드 집합 class
boolean bl = md.checkedID(ID); // 중복확인 메서드
PrintWriter out = response.getWriter();
if(bl) {
out.println("<script>alert('중복된 아이디가 있습니다.');location.href=
'"+request.getContextPath()+"/member/memberJoin.do'</script>");
}else{
out.println("<script>alert('사용해도 되는 아이디입니다.');location.href=
'"+request.getContextPath()+"/member/memberJoin.do'</script>");
}
// MemberDAO class의 id중복확인 메서드
// private Connection conn;
// private PreparedStatement pstmt; 미리 전역번수로 설정한 변수들
public boolean checkedID(String ID) {
ResultSet rs = null;
//입력받은 ID와 같은 ID가 DB에 있는지 조건절로 확인한다.
String sql = "select id from member where id = ?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, ID);
rs = pstmt.executeQuery();
if(rs.next()) {
return true;
}
}catch(Exception e) {
e.printStackTrace();
}
try {
rs.close();
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
생성 버튼을 눌렀을 경우 로직
//MemberController
//DB에 회원정보를 추가한다.
String ID = request.getParameter("ID");
String PWD = request.getParameter("PWD");
String name = request.getParameter("name");
String email = request.getParameter("email");
MemberDAO md = new MemberDAO();
boolean bl = md.checkedID(ID); //id 중복확인을 누르지않고 회원가입을 하는 경우가 있으므로
PrintWriter out = response.getWriter();
if(bl){
out.println("<script>alert('중복된 아이디입니다.');location.href=
'"+request.getContextPath()+"/member/memberJoin.do'</script>");
}else {
// 중복된 아이디가 없는 경우 미리 생성된 DB테이블에 값을 넣는 메서드
int value = md.insertMember(ID, PWD, name, email);
if(value==1){
response.sendRedirect(pj+"/main/index.do");
}else{
response.sendRedirect(pj+"/member/memberJoin.do");
}
//MemberDAO class의 회원가입 메서드
//DB에 member로 테이블을 만들어 뒀다.
public int insertMember(String ID,String PWD,String name,String email){
int value=0;
String sql="insert into member(midx,ID,PWD,name,email,point)"
+ "values(midx.nextval,?,?,?,?,?)";
try{
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, ID);
pstmt.setString(2, PWD);
pstmt.setString(3, name);
pstmt.setString(4, email);
pstmt.setInt(5, 0);
value = pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}
return value;
}
728x90
'노트' 카테고리의 다른 글
토이 프로젝트 주식 커뮤니티 만들기(8) - JSP 글쓰기 (0) | 2022.06.14 |
---|---|
토이 프로젝트 주식 커뮤니티 만들기(7) - JSP 로그인 페이지/ 아이디 찾기/ 비밀번호 찾기 (0) | 2022.06.07 |
토이 프로젝트 주식 커뮤니티 만들기(5) - 초기화면 생성/JSP 드롭다운 버튼 (0) | 2022.06.03 |
jQuery 여러 메서드 (0) | 2022.05.19 |
jQuery 필터링 메서드 (1) | 2022.05.18 |