본문 바로가기

java,jsp,spring/JSP

JSP 예제 - 사용자 관리(1단계)

사용자 관리의 프로세스

1단계 : 로그인 > 회원가입 > 회원가입 처리 > DB처리

2단계 : 로그인 > 회원인증 > DB 처리 > 메인

3단계 : 메인 > 회원수정 > 회원수정 처리 > DB 처리 // 메인 > 로그아웃

 

1. 로그인 폼

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<table border="1" align="center">
		<form method="post" action="loginOk.jsp">
			<tr height="30">
				<td width="100">사용자 ID</td>
				<td width="100"><input type="text" name="id" /></td>
			</tr>
			<tr height="30">
				<td width="100">비밀번호</td>
				<td width="100"><input type="password" name="pw" /></td>
			</tr>
			<tr height="30">
				<td colspan="2" align="center">
					<input type="submit" value="로그인" />
					&nbsp;&nbsp;&nbsp;&nbsp;
					<!-- <input type="submit" value="회원가입" formaction="register.jsp" /> --> 
					<!-- html5부터 가능하다고 함, 낮은 버전에서는 작동 안함 --> 
					<input type="button" value="회원가입" onclick="javascript:window.location='register.jsp'" />
				</td>		
			</tr>
		</form>
	</table>
</body>
</html>

- form 태그를 이용하여 사용자가 입력한 아이디와 비밀번호를 회원인증 파일로 전송

2. 회원 가입

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="script.js" charset="UTF-8"></script>
</head>
<body>
	<table border="1" align="center">
		<form method="post" action="registerOk.jsp" name="reg_frm">
			<tr height="50" align="center">
				<td colspan="2">
					<h1>회원 가입 신청</h1>
					'*'표시 항목은 필수 입력 항목입니다.
				</td>
			</tr>
			<tr height="30">
				<td width="80">User ID</td>
				<td><input type="text" id="userId" name="mem_uid" size="20">*</td>
			</tr>
			<tr height="30">
				<td width="80">암   호</td>
				<td><input type="password" id="userPw" name="mem_pwd" size="20">*</td>
			</tr>
			<tr height="30">
				<td width="80">암호 확인</td>
				<td><input type="password" id="pwCheck" name="pw_check" size="20">*</td>
			</tr>
			<tr height="30">
				<td width="80">이   름</td>
				<td><input type="text" id="userName" name="mem_name" size="20">*</td>
			</tr>
			<tr height="30">
				<td width="80">E-mail</td>
				<td><input type="text" id="userMail" name="mem_email" size="30">*</td>
			</tr>
			<tr height="30">
				<td width="80">주   소</td>
				<td><input type="text" id="userAddr" name="mem_addr" size="40"></td>
			</tr>
			<tr align="center">
				<td colspan="2">
					<input type="button" onclick="check_ok()" value="등록" />
					&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="reset" value="다시입력" />
					&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="button" value="가입안함" onclick="javascript:window.location='login.jsp'" />
				</td>
			</tr>
		</form>
	</table>
</body>
</html>

- 회원가입 내용은  registerOK 파일로 넘기고, 자바스크립트를 활용해 필수 입력 항목을 입력하지 않으면 회원가입을 할 수 없게 했음

3. 자바 스크립트

function check_ok(){
	var id = document.getElementById("userId").value;
	if(!id){
		alert("아이디를 써주세요");
		reg_frm.mem_id.focus(); // id칸에 포커스 됨
		return;
	}
	if(id.length<4){
		alert("아이디는 4글자 이상이어야 합니다.");
		reg_frm.mem_id.focus();
		return;
	}
	var pw = document.getElementById("userPw").value;
	if(!pw){
		alert("패스워드는 반드시 입력해야 합니다.");
		reg_frm.mem_pw.focus();
		return;
	}
	var pwCheck = document.getElementById("pwCheck").value;
	if(pw!=pwCheck){
		alert("패스워드가 일치하지 않습니다.");
		reg_frm.mem_pw.focus();
		return;
	}
	var name = document.getElementById("userName").value;
	if(!name){
		alert("이름을 써주세요.");
		reg_frm.mem_name.focus();
		return;
	}
	var mail = document.getElementById("userMail").value;
	if(!mail){
		alert("Email을 써주세요.");
		reg_frm.mem_mail.focus();
		return;
	}
	document.reg_frm.submit(); // submit을 실행하는 것이므로 form태그의 action 주소로 이동
}

4. 자바 빈 (memberBean)

package magic.member;

import java.sql.Timestamp;

public class MemberBean {
	private String mem_uid;
	private String mem_pwd;
	private String mem_name;
	private String mem_email;
	private Timestamp mem_regdate;
	private String mem_addr;
	
	public String getMem_uid() {
		return mem_uid;
	}
	public void setMem_uid(String mem_uid) {
		this.mem_uid = mem_uid;
	}
	public String getMem_pwd() {
		return mem_pwd;
	}
	public void setMem_pwd(String mem_pwd) {
		this.mem_pwd = mem_pwd;
	}
	public String getMem_name() {
		return mem_name;
	}
	public void setMem_name(String mem_name) {
		this.mem_name = mem_name;
	}
	public String getMem_email() {
		return mem_email;
	}
	public void setMem_email(String mem_email) {
		this.mem_email = mem_email;
	}
	public Timestamp getMem_regdate() {
		return mem_regdate;
	}
	public void setMem_regdate(Timestamp mem_regdate) {
		this.mem_regdate = mem_regdate;
	}
	public String getMem_addr() {
		return mem_addr;
	}
	public void setMem_addr(String mem_addr) {
		this.mem_addr = mem_addr;
	}
	
}

- 회원가입 시 사용되는 변수들을 모아둔 자바빈 파일

5. 자바 빈 (MemberDBBean)

package magic.member;

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

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

public class MemberDBBean {
	private static MemberDBBean instance = new MemberDBBean();
	public static MemberDBBean getInstance() {
		return instance;
	}
	public Connection getConnection() throws Exception{
		Context ctx = new InitialContext();
		DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/oracle");
		return ds.getConnection();
	}
	public int insertMember(MemberBean member) throws Exception{
	// String insertQuery = "INSERT INTO memberT VALUES (?,?,?,?,?,?)";
		String insertQuery = "INSERT INTO memberT VALUES (?,?,?,?,sysdate,?)";
    // 방법 2. 쿼리문에 sysdate 입력
		int re = -1;
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
			conn = getConnection();;
			pstmt = conn.prepareStatement(insertQuery);
			pstmt.setString(1, member.getMem_uid());
			pstmt.setString(2, member.getMem_pwd());
			pstmt.setString(3, member.getMem_name());
			pstmt.setString(4, member.getMem_email());
			//pstmt.setTimestamp(5, member.getMem_regdate());
			pstmt.setString(5, member.getMem_addr());
			//pstmt.setString(6, member.getMem_addr());
			// 등록시간이 직접 입력 되었기 때문에 인덱스 번호 줄여야함
			pstmt.executeUpdate();
			
			re = 1;
		} catch(SQLException ex){
			System.out.print("추가 실패<br>");
			ex.printStackTrace();
		} finally {
			try{
				if(pstmt != null) {
					pstmt.close();
				}
				if(conn != null) {
					conn.close();
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		return re;
	}
    	public int confirmID(String id) throws Exception{
		String selectQuery = "SELECT mem_uid FROM memberT WHERE mem_uid = ?";
		int re = -1;
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			conn = getConnection();
			pstmt = conn.prepareStatement(selectQuery);
			pstmt.setString(1, id);
			rs = pstmt.executeQuery();

			if (rs.next()) {
				re = 1;
			} else {
				re = -1;
			}

		} catch(SQLException ex){
			System.out.print("조회 실패<br>");
			ex.printStackTrace();
		} finally {
			try{
				if(rs != null) {
					rs.close();
				}
				if(pstmt != null) {
					pstmt.close();
				}
				if(conn != null) {
					conn.close();
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}

		return re;
	}
}

- insertMember() : 회원 가입 시 회원가입 일자를 메소드에서 자동으로 입력하기 위해서 쿼리문 등록일자 자리에 sysdate를 넣어둠

  그에 맞게 인덱스 번호를 입력

- confirmID() : 회원가입 처리 시 아이디 중복 확인 메소드

6. 회원가입 처리

<%@page import="magic.member.MemberDBBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean class="magic.member.MemberBean" id="mb"></jsp:useBean>
<jsp:setProperty property="*" name="mb" />
<%
	/* 	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); */
	// mb.setMem_regdate(new Timestamp(System.currentTimeMillis()));
	MemberDBBean manager = MemberDBBean.getInstance();
	
	if(manager.confirmID(mb.getMem_uid())==1){
%>
	<script>
		alert("중복된 아이디가 존재합니다.");
		history.back();
	</script>
<%
	} else {
		int re = manager.insertMember(mb);
		if(re==1){
%>
		<script>
			alert("회원가입을 축하드립니다.\n회원으로 로그인 해주세요.");
			document.location.href= "login.jsp";
		</script>
<%
		} else {
%>
		<script>
			alert("회원가입에 실패했습니다.");
			history.back();
		</script>
<%
		}
	}
%>

- 회원가입 페이지에서 넘겨받은 정보를 MemberBean 에 set 및 MemberDBBean 객체를 생성해 confirmID메소드를 실행하여 아이디가 중복인지 아닌지 확인

'java,jsp,spring > JSP' 카테고리의 다른 글

JSP 예제 - 사용자 관리(3단계)  (0) 2022.09.03
JSP 예제 - 사용자 관리(2단계)  (0) 2022.09.03
DBCP 기법  (0) 2022.08.26
JSP JDBC  (0) 2022.08.24
JSP 예외 처리, 자바 빈  (0) 2022.08.17