반응형

2020/01/16 - [JSP 게시판 만들기] - JSP 게시판 만들기 #3 회원 데이터베이스 구축

 

이어서 진행하겠습니다.

이번에는 UserDAO를 만들어 주겠습니다

DAO 는 데이터베이스 접근 객체로 회원 정보를 불러오거나 입력할때 사용됩니다.

package user;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class UserDAO {
	
	//Connection 데이터 베이스 접근하게 해주는 하나의 객체
	private Connection conn;
	private PreparedStatement pstmt;
	//하나의 정보를 담을 수 있는 하나의 객체
	private ResultSet rs;
	
	//ctrl +shift + o 를 눌러 외부 라이브러리를 넣어줍니다
	
	//생성자를 만들어줍니다.
	public UserDAO() { //실제로 mysql에 접속할 수 있도록 도와줌
		try {
			//localhost:3306은 우리 컴퓨터에 설치된 mysql 서버 자체를 의미하고 bbs는 우리가 만든 테이블 이름입니다.
			String dbURL = "jdbc:mysql://localhost:3306/BBS?serverTimezone=UTC";
			String dbID ="root"; //db 계정
			String dbPassword ="root"; //db 비밀번호
			
            //driver는 mysql에 접속할 수 있도록 도와주는 하나의 라이브러리 매개체
            Class.forName("com.mysql.jdbc.Driver"); 
            
			conn=DriverManager.getConnection(dbURL, dbID, dbPassword);
		}catch(Exception e) {
			e.printStackTrace(); //오류가 무엇인지 출력
		}
		
	}
    // 실제로 로그인을 시도하는 함수
	public int login(String userID, String userPassword) { // 아이디와 비밀번호를 받아옴
		//실제로 db에 입력할 sql문
		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=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" />

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login page</title>
</head>
<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("alter('비밀번호가 틀립니다.')");
			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('database에 오류가 발생하였습니다.')");
			script.println("history.back()");
			script.println("</script>");
		}
	%>
</body>
</html>

 

mysql에 접속하기 위해서 driver를 프로젝트에 추가해주어야 합니다.

mysql jdbc driver을 구글에 검색해서

다운로드 하고 압축을 풀어준 뒤

이 파일을

WEB-INF/lib/ 복사해서 넣어줍니다.

 

이제 실행을 해보겠습니다.

DB에서 회원관리 구축할때 홍길동 한명 넣어 준거 기억 나시나요?

전 gildong//1234 로 회원가입을 했습니다.

아직 main.jsp는 구현을 못했기 때문에 정상적으로 출력되는 걸 알 수 있습니다.

하지만 비밀번호 가 틀렸을경우 비밀번호가 틀렸다고 나오고

db오류일 경우 db오류라고 뜨게 되고

아이디가 없을 경우 아이디가 없다고 뜨게 됩니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,