더보기
내가 맡은 역할 : 사용자 관리 (로그인/회원가입 및 마이페이지 등)
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="로 그 인">
</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>
'Programming > [2022.09.~] 쇼핑몰 웹 제작' 카테고리의 다른 글
13일차 - 프로젝트 완성 (미구현 있음) (0) | 2022.10.11 |
---|---|
JSP/Oracle 프로젝트 일지 - 5일차(22.09.21.) (0) | 2022.09.22 |
JSP/Oracle 프로젝트 일지 - 3일차(22.09.19.) (0) | 2022.09.20 |