[JSP] 로그인 기능 구현

박은지·2022년 3월 6일
0

UserDAO.java

user Package 안에 UserDAO Class를 생성한다.

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;
	
	
	// ----------- MySQL 접속 ----------- //
	// 생성자
	public UserDAO() {
		// try-catch 예외처리
		try {
			// localhost:3306 는 MySQL 서버 자체를 의미하고, BBS는 데이터베이스
			String dbURL = "jdbc:mysql://localhost:3306/BBS";
			String dbID = "root";
			String dbPassword = "root";
			
			// mysql Driver 찾기
			// Driver : mysql에 접속할 수 있도록 매개체 역할을 하는 하나의 라이브러리
			Class.forName("com.mysql.jdbc.Driver");
			
			// dbURL에 dbID, dbPassword로 접속
			// 접속이 완료되면 conn 객체 안에 접속된 정보가 담기게 되는 것!
			conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
			
		} catch (Exception e) {
			e.printStackTrace(); // 어떤 오류인지 출력
		}
	}
	
	
	// ----------- 로그인 ----------- //
	// 이 로그인 기능이 호출되는 페이지가 바로 loginAction.jsp
	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; // '데이터베이스 오류'
	}

}

loginAction.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    
<%@ 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" />

<!DOCTYPE html>
<html>
<!-- HEAD -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<!-- BODY -->
<body>
	<%
		UserDAO userDAO = new UserDAO();
		int result = userDAO.login(user.getUserID(), user.getUserPassword());
		if (result == 1) {
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("location.href = 'main.jsp'");
			script.println("</script>");
		}
		else if (result == 0) {
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("alert('비밀번호가 틀렸습니다.')");
			script.println("history.back()");
			script.println("</script>");
		}
		else if (result == -1) {
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("alert('존재하지 않는 아이디입니다.')");
			script.println("history.back()");
			script.println("</script>");
		}
		else if (result == -2) {
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("alert('데이터베이스 오류가 발생했습니다.')");
			script.println("history.back()");
			script.println("</script>");
		}
	%>
    
</body>
</html>

MySQL jdbc Driver

MySQL jdbc Driver

Platform Independent 선택 후 Download

아래의 mysql-connector-java-8.0.28.jarWEB-INF > lib 안으로 이동시킨다.

프로젝트 폴더에서 마우스 우클릭 후 Properties > Java Build Path로 이동한다.

Add JARs... 클릭 후 mysql-connector-java-8.0.28.jar를 선택한다.

결과 확인

올바르지 않은 정보를 입력했을 경우


올바른 정보를 입력했을 경우

0개의 댓글