0.파일 구조
/src
├── Libraries
│ └── user
│ └── User.java
│ └── UserDAO.java
/src/main/webapp
├── META-INF
│ └── MANIFEST.MF
├── WEB-INF
│ └── web.xml
│ └── lib
├── css/
├── fonts/
├── js/
├── login.jsp
├── loginAction.jsp
├── join.jsp
├── joinAction.jsp
└── index.jsp
1.join.jsp
join.jsp
회원가입하는 페이지로, login.jsp 처럼 상단 이동 메뉴들을 이용할 수 있습니다.
join.jsp 파일 생성
①webapp에서 'New' - 'JSP File'
②File name을 join.jsp로 작성, 'Finish' 클릭

③코드 작성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width", initial-scale="1">
<link rel="stylesheet" href="css/bootstrap.css">
<title>JSP Board</title>
</head>
<body>
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
aria-expanded="false">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="main.jsp">JSP Board</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="main.jsp">Main</a>
<li><a href="bbs.jsp">Board</a>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle"
data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false">Access<span class="caret"></span></a>
<ul class="dropdown-menu">
<li class="active"><a href="login.jsp">Login</a></li>
<li><a href="join.jsp">Sign up</a></li>
</ul>
</li>
</ul>
</div>
</nav>
<div class="container">
<div class="col-lg-4"></div>
<div class="col-lg-4">
<div class="jumbotron" style="padding-top: 20px;">
<form method="post" action="joinAction.jsp">
<h3 style="text-align: center;">Sign up</h3>
<div class="form-group">
<input type="text" class="form-control" placeholder="ID" name="userID" maxlength="20">
</div>
<div class="form-group">
<input type="password" class="form-control" placeholder="Password" name="userPassword" maxlength="20">
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="name" name="userName" maxlength="20">
</div>
<div class="form-group" style="text-align: center;">
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="radio" name="userGender" autocomplete="off" value="male" checked>Male
</label>
<label class="btn btn-primary">
<input type="radio" name="userGender" autocomplete="off" value="female" checked>Female
</label>
</div>
</div>
<div class="form-group">
<input type="email" class="form-control" placeholder="email" name="userEmail" maxlength="20">
</div>
<input type="submit" class="btn btn-primary form-control" value="Signup">
</form>
</div>
</div>
<div class="col-lg-4"></div>
</div>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>
동작 확인
①하단에 'Tomcat v9.0 Server at localhost' 우클릭 - 'Start' 클릭
②http://localhost:8080/BBS/join.jsp 방문

2.회원가입 기능 추가
UserDAO.java 회원가입 기능 추가 구현
DAO: Database Access Object의 약자, 실질적으로 데이터베이스와 소통하는 부분을 담당합니다.
DAO를 통해 데이터베이스에 접근하여 INSERT 구문을 통해 회원가입 쿼리를 수행하고, 결과를 반환하는 코드를 추가할 것입니다.
①추가할 코드
public int join(User user) { // instance generated by "User" class in User.java
String SQL = "INSERT INTO USERT VALUES (?, ?, ?, ?, ?)";
try {
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, user.getUserID());
pstmt.setString(2, user.getUserPassword());
pstmt.setString(3, user.getUserName());
pstmt.setString(4, user.getUserGender());
pstmt.setString(5, user.getUserEmail());
return pstmt.executeUpdate(); // successed result is not equal -1
} catch(Exception e) {
e.printStackTrace();
}
return -1; // database error
}
②전체 UserDAO.java 코드
package user;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.DriverManager;
public class UserDAO {
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
public UserDAO() {
try {
String URL = "jdbc:oracle:thin:@localhost:1521:xe";
String USER = "userj";
String PASSWORD = "pass1word";
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
}
public int login(String userID, String userPassword) {
String SQL = "SELECT userPassword FROM USERT WHERE userID = ?";
try {
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
if (rs.next()) {
if(rs.getString(1).equals(userPassword)) {
return 1;
}
else
return 0;
}
return -1;
} catch (Exception e) {
e.printStackTrace();
}
return -2;
}
public int join(User user) { // instance generated by "User" class in User.java
String SQL = "INSERT INTO USERT VALUES (?, ?, ?, ?, ?)";
try {
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, user.getUserID());
pstmt.setString(2, user.getUserPassword());
pstmt.setString(3, user.getUserName());
pstmt.setString(4, user.getUserGender());
pstmt.setString(5, user.getUserEmail());
return pstmt.executeUpdate(); // successed result is not equal -1
} catch(Exception e) {
e.printStackTrace();
}
return -1; // database error
}
}
loginAction.jsp
ID와 비밀번호 값을 처리해주는 기능
①webapp 에서 'New' - 'jsp' - Filename에 'joinAction.jsp' 입력

②코드 작성
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="user.UserDAO" %>
<%@ page import="java.io.PrintWriter" %>
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="user" class="user.User" scope="page" />
<jsp:setProperty name="user" property="userID" />
<jsp:setProperty name="user" property="userPassword" />
<jsp:setProperty name="user" property="userName" />
<jsp:setProperty name="user" property="userGender" />
<jsp:setProperty name="user" property="userEmail" />
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="css/bootstrap.css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width", initial-scale=1.0">
<title>Searcher</title>
</head>
<body>
<%
// filtering that user input is null
if (user.getUserID() == null || user.getUserPassword() == null || user.getUserName() == null || user.getUserGender() == null || user.getUserEmail() == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('Please enter all your input.')");
script.println("history.back()");
script.println("</script>");
} else {
UserDAO userDAO = new UserDAO();
int result = userDAO.join(user);
if (result == -1) { // -1 result means "that ID already exists" or just Database Error.
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('This is a dupilcate ID')");
script.println("history.back()");
script.println("</script>");
}
else {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
}
%>
</body>
</html>
동작 확인
①signup.jsp 에서 회원가입 정보 기입

②main.jsp로 이동된 것을 확인

③최종적으로 데이터베이스 테이블에서 해당 데이터를 확인할 수 있으며, 로그인 기능도 잘 작동



'project > JSP+Oracle_DB+Apache_Tomcat' 카테고리의 다른 글
| [JSP/OracleDB/Tomcat/Eclipse]글쓰기 기능 (0) | 2025.03.09 |
|---|---|
| [JSP/OracleDB/Tomcat/Eclipse]게시판 기능 (0) | 2025.03.05 |
| [JSP/OracleDB/Tomcat/Eclipse]세션 관리 (0) | 2025.03.04 |
| [JSP/OracleDB/Tomcat/Eclipse]Login 기능 (0) | 2025.02.22 |
| [JSP/OracleDB/Tomcat/Eclipse]환경 설정과 여러가지 에러들 (5) | 2024.12.27 |