사용자 관리의 프로세스
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="로그인" />
<!-- <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="등록" />
<input type="reset" value="다시입력" />
<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 |