KEEP GOING

JSP 게시판 만들기 - (4) 로그인 기능 구현 본문

web

JSP 게시판 만들기 - (4) 로그인 기능 구현

jmHan 2022. 5. 26. 15:51
반응형

1. userDAO.java

User.java 파일을 생성했던 user 패키지 아래에 UserDAO.java 파일을 만들어줍니다.

DAO는 데이터베이스에 접근 가능한 객체라는 의미로

실제 MySQL 내 user 테이블에서 회원 정보를 불러오거나 넣을때 사용할 수 있는 클래스입니다. 

 

[userDAO]

package user;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; // 단축키 : ctrl + shift + 'o'

public class UserDAO {
	private Connection conn; //db 접근 객체 
	private PreparedStatement pstmt;
	private ResultSet rs; // db 결과를 담는 객체
	
	public UserDAO() { // dao 생성자에서 db connection 
		try {
			String dbURL = "jdbc:mysql://localhost:3306/BBS"; //mySQL 서버의 BBS DB 접근 경로
			String dbID = "root"; //계정
			String dbPassword = "*******"; //비밀번호
			Class.forName("com.mysql.jdbc.Driver"); //mysql에 접속을 도와주는 라이브러리 
			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); //sql Injection 공격 방어 수단 : 1번째 물음표에 userID 입력
			rs = pstmt.executeQuery(); // 쿼리 실행 
			if (rs.next()) {
				if (rs.getString(1).equals(userPassword)) // rs.getString(1) : select된 첫번째 컬럼
					return 1; //로그인 성공
				else
					return 0; // 비밀번호 틀림
			}
			return -1; // 아이디 없음 
		}catch(Exception e) {
			e.printStackTrace();
			
		}
		return -2; //DB 오류 
	}
}

2. loginAction.jsp

[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:useBean>
<jsp:setProperty name="user" property="userID"/>
<jsp:setProperty name="user" property="userPassword"/>
 
<head>
<meta http-equiv="Content-Type" content="text/html; c harset=UTF-8">
<title>JSP BBS</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("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('DB 오류가 발생했습니다.')");
            script.println("history.back()");    //이전 페이지로 사용자를 보냄
            script.println("</script>");
        }
    %>
 
</body>
</html>

3. jdbc 드라이버 설치 

우선 위 작업까지 마치고나서 서버를 다시 재가동해봅시다.

그리고 나서 User 테이블에 저장했던 아이디와 비밀번호로 로그인해보면 

다음과 같이 DB 오류라는 결과가 출력됩니다.

이러한 오류가 나타나는 이유는 mysql에 접속하기 위한 드라이버를 설치하지 않아서 그렇습니다.

해당 사이트에 접속하여 아카이브에서 platform independent를 선택하고 zip 파일을 다운받습니다.

 

https://downloads.mysql.com/archives/c-j/

 

MySQL :: Download MySQL Connector/J (Archived Versions)

Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Connector/J, please visit MySQL Downloads. MySQL open source software is provided under the GPL License.

downloads.mysql.com

다운받은 파일에 있는 mysql-connector-java-8.0.28.jar 파일을 

src/main/webapp/WEB-INF/lib 폴더에 복사해서 넣어줍니다.

 

그리고나서 다시 서버를 실행해봅시다.

다음과 같이 로그인시 main.jsp 페이지로 넘어간다면 성공입니다.

 

* 잘못된 비밀번호를 입력한 경우

반응형
Comments