회원가입 버튼을 누를 경우 실행 되는 가입 기능을 구현해 보겠습니다.
DAO클래스는 실제로 데이터베이스에 접근해서 정보를 넣거나 가져오는 접근 객체입니다.
package user;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDAO {
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
public UserDAO() {
try {
String dbURL = "jdbc:mysql://localhost:3306/BBS";
String dbID = "root";
String dbPassword = "root";
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
public int login(String userID, String userPassword) {
String SQL = "SELECT userPassword FROM USER 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) { // 한명의 사용자정보를 입력받는 인스턴스 생성
String SQL = "INSERT INTO VALUES (?, ?, ?, ?, ?)"; // DB에 정보 삽입
try {
pstmt = conn.prepareStatement(SQL); // 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());
} catch(Exception e) {
e.printStackTrace(); // -1이 아닌 경우는 성공적인 회원가입
}
return -1; // 데이터베이스 오류
}
}
joinAction.jsp를 생성합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID") != null){
userID = (String) session.getAttribute("userID");
}
if (userID != null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('이미 로그인이 되어있습니다.')");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
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('입력이 안 된 사항이 있습니다.')"); // 사용자에게 반환 메세지
script.println("history.back()"); // 뒤로가기
script.println("</script>");
} else{
UserDAO userDAO = new UserDAO(); // 데이터접근 객체생성
int result = userDAO.join(user); // 사용자정보를 담은 join메서드 수행
if(result == -1) { // primary key 중복으로 데이터 베이스의 오류
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('이미 존재하는 아이디입니다.')");
script.println("history.back()");
script.println("</script>");
}
else {
session.setAttribute("userID", user.getUserID());
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'main.jsp'"); // 회원가입 성공시 메인으로 접근
script.println("</script>");
}
}
%>
</body>
</html>
확인페이지 추가 필요
'개인프로젝트' 카테고리의 다른 글
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 8.메인페이지 세션관리 (0) | 2024.01.20 |
---|---|
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 7.접속한 회원 세션 관리하기 (0) | 2024.01.20 |
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 5.회원가입 페이지 작성하기 (0) | 2024.01.20 |
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 4.로그인 기능 구현하기 (0) | 2024.01.19 |
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 3.회원 데이터베이스 구축 (0) | 2024.01.19 |