JSP 로그인 기능 구현

장시영·2022년 2월 3일
0

1. 자바 Beans 만들기

public class User {

	private String userID;
	private String userPassword;
	private String userName;
	private String userGender;
	private String userEmail;
    
    +getter, setter
}

*Beans : ?

2. 데이터베이스 연결하기

1) 데이터베이스 접근 클래스

public class UserDAO {

	private Connection conn;
	private PreparedStatement pstmt;
	private ResultSet rs;
	
	2)
   
    3)
}

2) DB 연결 함수

public UserDAO() {
		try {
			String dbURL = "jdbc:mysql://localhost:3306/BBS";
			String dbID = "root";
			String dbPassword ="1234";
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
		} catch (Exception e) {
			e.printStackTrace();
		}	
	}

3) 로그인 시도 함수

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.getStackTrace();
		}
		return -2; // 데이터베이스 오류
	}

4) DB 연결 드라이버 설치

  • https://dev.mysql.com/downloads/connector/j/
  • 설치 후 압축풀기
  • 웹 프로젝트파일 우클릭 > properties > Java Build Path > ClassPath > Add External JARs > 압축풀기한 파일 속 mysql-connector-java-5.1.42-bin.jav 선택
  1. 로그인 처리 페이지(loginAction.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO" %> 
<% 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 http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
	
	<%
		UserDAO userDao = new UserDAO();
		int result = userDao.login(user.getUserID(), user.getUserPassword());
		if(result == 1) {
			out.println("<script>");
			out.println("location.href = 'main.jsp'");
			out.println("</script>");
		}
		else if(result == 0) {
			out.println("<script>");
			out.println("alert('비밀번호가 틀립니다.');");
			out.println("history.back()");
			out.println("</script>");
		}
		else if(result == -1) {
			out.println("<script>");
			out.println("alert('존재하지 않는 아이디입니다.');");
			out.println("history.back()");
			out.println("</script>");
		}
		else if(result == -2) {
			out.println("<script>");
			out.println("alert('데이터베이스 오류가 발생했습니다.');");
			out.println("history.back()");
			out.println("</script>");
		}
	%>
</body>
</html>

*Connection :

*PreparedStatement :

*ResultSet :

*jdbc:mysql://localhost:3306/BBS2 : jdbc:mysql은 프로토콜, BBS2는 DB이름

*Class.forName() : JDBC 드라이버를 사용가능하도록 메모리에 로딩하는 메서드

*<jsp:useBean id="user" class="user.User" scope="page" /> :

*<jsp:setProperty name="user" property="userID" /> :

*out.println(변수) = 변수의 값이 출력됨, ("") = "문자열"이 그대로 출력됨, ("<html,>") = html태그가 출력됨, 웹에 출력하는 메서드

*DB 연결방법 : dbURL, dbID, dbPassword, 드라이버 로드, 드라이버 연결(sql API랑)

*pstmt.setString(1, userID) :

profile
코딩주니어

0개의 댓글