본문 바로가기

Programming/[2022.09.~] 쇼핑몰 웹 제작

JSP/Oracle 프로젝트 일지 - 1일차(22.09.15.)

 

더보기

내가 맡은 역할 : 사용자 관리 (로그인/회원가입 및 마이페이지 등)

Today's goal : 로그인/회원가입 페이지 만들기 

- login.jsp, login_ok.jsp  join.jsp , join_ok.jsp 

- userT 테이블

- UserBean.java , UserDAO.java 

 

 

1. Oracle DB 사용자 테이블 구조 생성 [ sql developer 에서 아래 쿼리 수행 ]

CREATE TABLE userT
(u_id VARCHAR2(20) PRIMARY KEY
,u_name VARCHAR2(20)
,u_nickname VARCHAR2(20)
,u_pwd VARCHAR2(12)
,u_email VARCHAR2(50)
,u_birth VARCHAR2(8)
,u_date DATE
,u_ip VARCHAR2(15)
);

commit;

 

2. UserBean.java 

회원의 정보를 저장하는 자바 빈 파일.

 → 테이블의 컬럼명과 맞게 Bean을 생성한다.

package user;

public class UserBean {
	//직접 접근하지 못하도록 private로 필드 선언
	private String u_id;
	private String u_name;
	private String u_nickname;
	private String u_pwd;
	private String u_email;
	private String u_birth; //생년월일8자리(varchar2(8))
	private String u_date; //회원가입날짜
	private String u_ip;
	
	//여기서 Alt + Shift + S 후 R 로 getter/setter 설정

	public String getU_id() {
		return u_id;
	}
	public void setU_id(String u_id) {
		this.u_id = u_id;
	}
	public String getU_name() {
		return u_name;
	}
	public void setU_name(String u_name) {
		this.u_name = u_name;
	}
	public String getU_nickname() {
		return u_nickname;
	}
	public void setU_nickname(String u_nickname) {
		this.u_nickname = u_nickname;
	}
	public String getU_pwd() {
		return u_pwd;
	}
	public void setU_pwd(String u_pwd) {
		this.u_pwd = u_pwd;
	}
	public String getU_email() {
		return u_email;
	}
	public void setU_email(String u_email) {
		this.u_email = u_email;
	}
	public String getU_birth() {
		return u_birth;
	}
	public void setU_birth(String u_birth) {
		this.u_birth = u_birth;
	}
	public String getU_date() {
		return u_date;
	}
	public void setU_date(String u_date) {
		this.u_date = u_date;
	}
	public String getU_ip() {
		return u_ip;
	}
	public void setU_ip(String u_ip) {
		this.u_ip = u_ip;
	}
	
	
}

 

3.UserDAO.java (~ ing 코딩중)

데이터 베이스에 접근하기 위한 객체. 데이터 조회/추가/수정/검색 등을 정의.

(이전 수업의 MemberDBBean.java 와 유사한 기능)

 

package user;

import java.sql.Connection;
import java.sql.PreparedStatement;

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

public class UserDAO {  //Database Access Object 데이터 접근을 위한 객체
	
	/////싱글톤 패턴 처리 부분 시작///////
	private UserDAO() {	
	} //생성자를 private로 설정 
	private static UserDAO instance = new UserDAO();//자신만 인스턴스 생성가능(다른클래스x) => 성능 저하 방지
	public static UserDAO getInstance(){
		return instance; //한번의 객체 생성으로 다양하게 활용
	}
	//////싱글톤 패턴 처리 끝/////////////
	
	
	
	//커넥션을 얻어오는 메서드
	public Connection getConnection() throws Exception {
		Connection conn = null; 
		Context ctx = new InitialContext();
		DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/oracle");
		conn = ds.getConnection();
		return conn;
	}
	
	//ID와 PW를 받아와서 DB와 일치하면 1, 아니면 -1을 반환하는 메서드
	public int userCheck(String id, String pwd) throws Exception {
		int re = -1; //DB와 일치하는 회원이 없다고 가정하고 시작
		String sql = "select u_pwd from userT where u_id=?";
		Connection conn= null;
		PreparedStatement pstmt = null;
		
		
		
		return re; //-1 또는 1
	}

 

 

4. login.jsp

로그인 폼. 서버와 DB 연동하여 로그인 되는지 까지만 확인 완료, 디자인적인 수정이 필요.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> Desert Store </title>
<style type="text/css">
	.log_buttons { margin-top:20px; }
</style>
</head>
<body>
		<table align="center">
		<form method="post" action="login_ok.jsp.">
			<tr height="30">
				<td width="100">사용자 ID</td>
				<td width="100">
					<input type="text" name="in_uid" placeholder="아이디">
				</td>
			</tr>
			<tr height="30">
				<td width="100">비밀번호</td>
				<td width="100">
					<input type="password" name="in_upwd" placeholder="비밀번호">
				</td>
			</tr>
			<tr height="30">
				<td colspan="2" align="center">    
				   <input type="submit" value="로 그 인">
				      	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				</td>
			</tr>
		</form>
	</table>
	<div class="log_buttons" align="center">
					<input type="button" value="회원가입"  
				   		onclick="javascript:window.location='join.jsp'">
					<input type="button" value="ID찾기" 
				   		onclick="javascript:window.location='findid.jsp'">
					<input type="button" value="비밀번호 찾기" 
				   		onclick="javascript:window.location='findpw.jsp'">
	</div>

</body>
</html>

 

5.login_ok.jsp

login.jsp에서 입력받은 id, pw 값으로 로그인 결과를 처리하는 페이지

<%@page import="user.UserBean"%>
<%@page import="user.UserDAO"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String id = request.getParameter("u_id");
	String pwd = request.getParameter("u_pwd");
	UserDAO manager = UserDAO.getInstance();
	int check = manager.userCheck(id, pwd);
	UserBean mb = manager.getUser(id);
	
	if(mb == null){ //일치하는 정보가 없을 경우
%>
	<script>
		alert("회원 정보를 찾을 수 없습니다.");
		history.go(-1);
	</script>
<%
	}else{
		String name = mb.getU_name();
		
		if(check == 1){
			session.setAttribute("uid", id);
			session.setAttribute("name", name);
			session.setAttribute("Member", "yes");
			response.sendRedirect("main.jsp");
		}else if(check == 0){
%>
	<script>
				alert("비밀번호가 맞지 않습니다.");
				history.go(-1);
	</script>
<%
		}else{
%>
	<script>
				alert("아이디가 올바르지 않습니다.");
				history.go(-1);
	</script>
<%
		}
	}
%>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

</body>
</html>