음.. html, css, java, servlet, jsp, oracle까지 연동되는 홈페이지 제작 함.
일단 기능은
- 회원가입
-로그인 페이지(로그인 구현 x)
-회원정보 조회(id, pw, nick)
목차
- 로그인 페이지랑 계정 조회는 다음 글에서..
1. 테이블 설계
DROP SEQUENCE SEQ_MEMBER;
CREATE SEQUENCE SEQ_MEMBER NOCACHE NOCYCLE;
DROP TABLE MEMBER CASCADE CONSTRAINTS;
CREATE TABLE MEMBER(
NO NUMBER DEFAULT SEQ_MEMBER.NEXTVAL CONSTRAINT MEMBER_PK PRIMARY KEY
,ID VARCHAR2(100) CONSTRAINT MEMBER_ID_NN NOT NULL CONSTRAINT MEMBER_ID_UQ UNIQUE
,PW VARCHAR2(100) CONSTRAINT MEMBER_PW_NN NOT NULL
,NICK VARCHAR2(100) CONSTRAINT MEMBER_NICK_NN NOT NULL CONSTRAINT MEMBER_NICK_UQ UNIQUE
,CREATED_AT TIMESTAMP DEFAULT SYSDATE
,UPDATED_AT TIMESTAMP DEFAULT SYSDATE
,QUIT_YN CHAR(1) DEFAULT 'N' CONSTRAINT MEMBER_QUIT_YN_CK CHECK( QUIT_YN IN ('Y','N') )
);
SELECT * FROM MEMBER;
계정에 따라 no 값을 PK로 주고
id, nick는 중복될 수 없게 설정
no값을 위한 시퀀스 생성
계정생성일시 -> 시스템 시간으로 디폴트
수정 일시 -> 초기값 시스템 시간 -> 수정시마다 업데이트(구현 안됨)
계정탈퇴 -> 논리 삭제(구현 안됨)
2. 회원가입 페이지



userId / userPw / userNick를 입력 후 회원가입을 진행하면 404 - 찾을 수 없음으로 나오는걸 볼 수 있는데
아직 로그인 페이지를 만들지 않은 상태라 정상인 접근이고
주소창에 app/member/login 경로로 잘 접근한 것이 보임.
-> login페이지 만들면 해결됨
로그인 페이지 접근 정상 작동하고 sql developer에서 테이블 확인했을때 입력한 데이터가 잘 들어가면 성공!

lib 에 ojdbc.jar파일 추가 잘 해주고
기본적인 JDBCTemplate, Dao, Vo class 생성 해줘야함
jsp페이지를 위한 views 폴더 하위에 join.jsp 생성 -> 실제 보여지는 회원가입 페이지
error를 위한 페이지는 아직 생성 안함. (추가 예정-> WEB-INF/common/errMsg.jsp)
아래는 각 파일 별 코드
JDBCTemplate
package com.kh.app.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCTemplate {
public static Connection getConn() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@//127.0.0.1:1521/xe";
String user = "C##KH";
String password = "1234";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url , user , password);
conn.setAutoCommit(false);
return conn;
}
public static void commit(Connection conn) {
try {
if(conn != null && !conn.isClosed()) {
conn.commit();
}//if
}catch(Exception e) {
e.printStackTrace();
}//try
}//method
public static void rollback(Connection conn) {
try {
if(conn != null && !conn.isClosed()) {
conn.rollback();
}//if
}catch(Exception e) {
e.printStackTrace();
}//try
}//method
public static void close(Connection conn) {
try {
if(conn != null && !conn.isClosed()){
conn.close();
}//if
} catch (Exception e) {
e.printStackTrace();
}//try
}//method
public static void close(Statement stmt) {
try {
if(stmt != null && !stmt.isClosed()){
stmt.close();
}//if
} catch (Exception e) {
e.printStackTrace();
}//try
}//method
public static void close(ResultSet rs) {
try {
if(rs != null && !rs.isClosed()){
rs.close();
}//if
} catch (Exception e) {
e.printStackTrace();
}//try
}//method
}//class
MemberDao
package com.kh.app.member;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.kh.app.db.JDBCTemplate;
public class MemberDao {
public int join(Connection conn, MemberVo vo) throws Exception {
String sql = """
INSERT INTO MEMBER(
NO
, ID
, PW
, NICK
) VALUES(
SEQ_MEMBER.NEXTVAL
, ?
, ?
, ?
)
""";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, vo.getId());
pstmt.setString(2, vo.getPw());
pstmt.setString(3, vo.getNick());
int result = pstmt.executeUpdate();
JDBCTemplate.close(pstmt);
return result;
}//method
}//class
MemberJoinController
package com.kh.app.member;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/member/join")
public class MemberJoinController extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/WEB-INF/views/member/join.jsp").forward(req, resp);
}//method
// view
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
String id = req.getParameter("userId");
String pw = req.getParameter("userPw");
String nick = req.getParameter("userNick");
MemberVo vo = new MemberVo();
vo.setId(id);
vo.setPw(pw);
vo.setNick(nick);
int result = new MemberService().join(vo);
if(result == 1) {
resp.sendRedirect("/app/member/login");
}else {
throw new Exception("[ERROR-M001] 회원가입 에러 ");
}//if
}catch(Exception e) {
e.printStackTrace();
req.setAttribute("errMsg", "회원 가입 중 에러");
req.getRequestDispatcher("/WEB-INF/views/common/error.jsp").forward(req, resp);
}
}//method
}//class
MemberService
package com.kh.app.member;
import java.sql.Connection;
import com.kh.app.db.JDBCTemplate;
public class MemberService {
// join
public int join(MemberVo vo) throws Exception {
Connection conn = JDBCTemplate.getConn();
int result = new MemberDao().join(conn, vo);
if(result == 1) {
JDBCTemplate.commit(conn);
}else {
JDBCTemplate.rollback(conn);
}
JDBCTemplate.close(conn);
return result;
}//method
}//class
MemberVo
package com.kh.app.member;
public class MemberVo {
private String no;
private String id;
private String pw;
private String nick;
private String createdAt;
private String updatedAt;
private String delYn;
@Override
public String toString() {
return "MemberVo [no=" + no + ", id=" + id + ", pw=" + pw + ", nick=" + nick + ", createdAt=" + createdAt
+ ", updatedAt=" + updatedAt + ", delYn=" + delYn + "]";
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getCreatedAt() {
return createdAt;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public String getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(String updatedAt) {
this.updatedAt = updatedAt;
}
public String getDelYn() {
return delYn;
}
public void setDelYn(String delYn) {
this.delYn = delYn;
}
public MemberVo(String no, String id, String pw, String nick, String createdAt, String updatedAt, String delYn) {
super();
this.no = no;
this.id = id;
this.pw = pw;
this.nick = nick;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
this.delYn = delYn;
}
public MemberVo() {
super();
// TODO Auto-generated constructor stub
}
}//class
join.jsp
<%@ 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>
<h1>회원가입</h1>
<form action="/app/member/join" method="post">
<input type="text" name="userId" placeholder="아이디">
<br>
<input type="password" name="userPw" placeholder="패스워드">
<br>
<input type="text" name="userNick" placeholder="닉네임">
<br>
<input type="submit" value="회원가입">
</form>
</body>
</html>
'KDT > servlet(jsp)' 카테고리의 다른 글
| [JSP]회원가입 및 조회 기능이 있는 간단한 홈페이지 제작 3편 (로그인/로그아웃 편) (0) | 2026.01.28 |
|---|---|
| [JSP]회원가입 및 조회 기능이 있는 간단한 홈페이지 제작 2편 (계정조회 기능 편) (0) | 2026.01.27 |