미미의 메모장

#2 자바+JSP로 메모장 만들기_데이터베이스구축+ 로그인 기능 구현 본문

memo/Project🎨

#2 자바+JSP로 메모장 만들기_데이터베이스구축+ 로그인 기능 구현

mimi memo 2024. 12. 12. 14:39

 

로그인 페이지는 간단하게 id, password 만 받아서 입장 할 수 있도록 한다.

디자인은 이런 식으로 해보면 어떨까.

 

 

DB는 mysql을 사용하기.

로그인 화면에 필요한 사용자 테이블을 먼저 만들었다.

간단하게 id, password, name으로만 만들어놓고,

id는 유일해야하므로 PRIMARY KEY로 설정해둔다.

CREATE TABLE USER(
    -> userID VARCHAR(20),
    -> userPassword VARCHAR(20),
    -> userName VARCHAR(20),
    -> PRIMARY KEY(userID)
    -> );

테이블 조회는

desc user;

 

하나의 데이터를 넣어 보자.

INSERT INTO USER VALUES('mimi','1111','손미미');

 

전체 조회는

select * from user;

 

 

 

저번에 sql문 공부한 게 새록새록 생각나는 중...

 

 

그 후에 

User 클래스를 만들어 준다.

package user;

public class User {

	private String userId;
	private String userPassword;
	private String name;
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

 

 

JSP에서 회원 데이터베이스테이블에 접근할 수 있도록

DAO를 만들어 준다.

데이터베이스 접근 객체의 약자. id, password 만 받아서 입장 할 수 있도록 한다.

DAO는 데이터베이스의 정보를 불러오거나, 데이터베이스에 정보를 넣고자 할 때 사용한다.

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 dbURL="jdbc:mysql://localhost:3306/memo";
			String dbID="root";
			String dbPassword = "root";
			Class.forName("com.mysql.jdbc.Driver");
			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);
			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;
	}
}

 

이런식으로 DAO를 만들어주고,

 

login 페이지에서는 버튼을 눌렀을 때, loginAction 페이지로 이동하도록 action을 추가한다.

 

loginAction 페이지에는 이런식으로 작성한다.

<%
		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>");
			
		}
	%>

 

 

테스트 해보기 위해

mysql을 접속하기 위한 드라이버를 프로젝트에 추가해준다.

 

mysql jdbc driver 을 검색해서 다운로드 후 

 

프로젝트 라이브러리 폴더 안에 복붙해준다.

 

 

서버 재부팅 후, 

로그인 페이지에서 로그인 시도 해보면

아까 테이블에 추가했던 mimi 말고는

 

라고 뜨고,

mimi와 비밀번호를 입력했을 때,

요렇게 main 페이지로 잘 이동하는 것을 확인했다!

 

감격.

이지만 갈 길이 멀구나!!