<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 dbURL = "jdbc:mysql://localhost:3306/BBS";
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.setNString(1, userID);
rs = pstmt.executeQuery();
if (rs.next()) {
if(rs.getNString(1).contentEquals(userPassword)) {
return 1; //로그인 성공
}
else
return 0; //비밀번호 불일치
}
return -1; //아이디가 없음
}catch (Exception e) {
e.printStackTrace();
}
return -2; //데이터베이스 오류
}
public int join(User user) {
String SQL = "INSERT INTO USER VALUES (?, ?, ?, ?, ?, ?)";
try {
pstmt = conn.prepareStatement(SQL);
pstmt.setNString(1, user.getUserID());
pstmt.setNString(2, user.getUserPassword());
pstmt.setNString(3, user.getUserName());
pstmt.setNString(4, user.getUserGender());
pstmt.setNString(5, user.getUserEmail());
pstmt.setInt(6, 1);
return pstmt.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
}
return -1; // 데이터베이스 오류
}
}
<코드 설명>
public class UserDAO {
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
: 외부 라이브러리 추가 (ctrl/command+shift O)
public UserDAO() {
try {
String dbURL = "jdbc:mysql://localhost:3306/BBS"; //
local host 본인 컴퓨터의 주소를 의미
String dbID = "root";
String dbPassword = "root";
: 본인이 지정한 비밀번호 입력
Class.forName("com.mysql.jdbc.Driver");
driver란 mysql에 접속할 수 있도록 매개체 역할을 해주는 하나의 라이브러리
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
: try catch예외처리
public int login(String userID, String userPassword) {
: 로그인을 입력하는 함수 생성
String SQL = "SELECT userPassword FROM USER WHERE userID = ?";
: USER 테이블에서 해당 사용자의 ?의 형태로 ID를 가져옴,
: ID가 존재하는지, 존재한다면 비밀번호는 무엇인지 확인하는 문장
try {
pstmt = conn.prepareStatement(SQL);
: 데이터베이스에 SQL 문장을 삽입하는 형태
pstmt.setNString(1, userID);
rs = pstmt.executeQuery();
: result set= 결과를 담을수 있는 객체에 실행한 결과를 넣어줌
if (rs.next()) {
: 결과가 존재한다면 (ID가 있는 경우)
if(rs.getNString(1).contentEquals(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>
<%
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("location.href = 'main.jsp'");
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 == -2) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('데이터베이스 오류가 발생했습니다.')");
script.println("history.back()");
script.println("</script>");
}
%>
</body>
</html>
<코드 설명>
<%@ page import="user.UserDAO" %>
: user 패키지의 UserDAO 를 불러옴
<jsp:useBean id="user" class="user.User" scope="page" />
: 한명의 회원정보를 담는 user라는 클래스를 자바빈즈로 사용
<jsp:setProperty name="user" property="userID" />
<jsp:setProperty name="user" property="userPassword" />
: login 페이지에서 넘어온 userID와 패스워드를 그대로 담게 됨
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 == -2) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('데이터베이스 오류가 발생했습니다.')");
script.println("history.back()");
script.println("</script>");
}
%>
</body>
</html>
mysql jdbc driver 설치 (강의에서는 5버전을 사용)
https://dev.mysql.com/downloads/connector/j/
<참고 강의>
'언어공부 > JAVA&SPRING' 카테고리의 다른 글
[JSP 게시판 만들기] 회원가입 기능 구현하기 (0) | 2020.07.06 |
---|---|
[JSP 게시판 만들기] 회원가입 페이지 디자인 (0) | 2020.07.05 |
[JSP 게시판 만들기] 회원 데이터베이스 구축하기 (0) | 2020.07.05 |
[JSP 게시판 만들기] 로그인 페이지 만들기 (0) | 2020.07.05 |
[JSP 게시판 만들기] JDK, 환경변수, 이클립스, 아파치톰캣, 부트스트랩 맥 mac os 에서 설치 (0) | 2020.07.05 |
댓글