모든지 기록하자!

간단한 웹사이트 만들기(DB, JSP, BootStrap) 03 - 로그인 기능 구현하기 본문

Web/기본 website만들기

간단한 웹사이트 만들기(DB, JSP, BootStrap) 03 - 로그인 기능 구현하기

홍크 2021. 6. 8. 01:52
728x90

로그인 기능 구현하기

UserDAO.java 클래스

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;
	
	public UserDAO() {
		try {
			String driver = "oracle.jdbc.driver.OracleDriver"; // OracleDriver 클래스를 메모리에 로딩
			String dbURL = "jdbc:oracle:thin:@localhost:1521:xe"; 
			String dbID = "scott"; // scott 계정을 사용
			String dbPassword = "tiger"; 
			Class.forName(driver); // OracleDriver 로딩
			conn = DriverManager.getConnection(dbURL, dbID, dbPassword); // Java와 Oracle연결
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public int login(String userID, String userPassword) {
		String SQL = "SELECT userPassword FROM TEST WHERE userID=?";
		try {
			pstmt = conn.prepareStatement(SQL); // prepareStatement에 SQL문 삽입
			pstmt.setString(1, userID); // userID=? 부분에 매개변수로 넘어온 userID를 넣어준다.
			rs = pstmt.executeQuery(); // 실행결과를 rs객체에 대입
			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 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){
			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>

 

728x90
Comments