。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

강의/JSP 게시판 만들기

[JSP 게시판 만들기] 4. 로그인 기능 구현하기

quarrrter 2023. 12. 8. 02:12

DAO class 생성

데비 접근 객체 약자

실질적으로 디비에서 데이터를 불러오고 넣을 때사용 

 

package user;

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

public class UserDAO {
	

	private Connection conn; //Connection 객체는 데이터베이스와의 연결
	private PreparedStatement pstmt; //SQL 문을 미리 컴파일하여 실행 속도를 향상
	private ResultSet rs; //이터베이스에서 가져온 결과를 저장하고 조회하는 데 사용
	
	public UserDAO() {
		try {
			String dbURL = "jdbc:mysql://localhost:3306/BBS";
			String dbID ="root";
			String dbPassword="";
			  Class.forName("com.mysql.jdbc.Driver");  //mysql에 접속할 수 있도록 매개체 역할을 하는 하나의 라이브러리 = 드라이바 
			conn = DriverManager.getConnection(dbURL, dbID, dbPassword); //conn 안에 접속 정보담음 
		} 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); // 쿼리의 ? 부분에 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;  //DB 오류 
	}

}

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO" %>
<%@ page import="java.io.PrintWriter" %> <!-- js 문법 사용하기 위한  -->
<% request.setCharacterEncoding("UTF-8"); %> <!-- 건너오는 데이터를 모두 utf-8로 만들기 위한   -->
<jsp:useBean id="user" class="user.User" scope="page"/>  <!-- User 클래스를 자바빈즈로 사용, 이 페이지에서만 사용   -->
<jsp:setProperty name="user" property="userID"/>  <!-- 로그인페이지에서 넘겨준 유저아이드를 그대로 받아서 한명의 사용자의 user id 에 넣음 -->
<jsp:setProperty name="user" property="userPassword"/> 
<!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("history.back()");
		script.println("</script>");
	}
	
	UserDAO userDAO = new UserDAO();

	int result= userDAO.login(user.getUserID(), user.getUserPassword());
	
	if(result == 1){
		session.setAttribute("userID", user.getUserID());
		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 == -1){
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('데이터베이스 오류가 발생했습니다.');");
		script.println("history.back()");
		script.println("</script>");
	}
	
%>
</body>
</html>

 

 

mysql-connector-j-8.2.0 설치 후 라이브러리 추가하기