반응형
JSP에서 회원 데이터베이스 테이블로 접근할 수 있도록 DAO를 만들어줘야한다. (DAO란? 데이터베이스에서 회원 정보를 불러오거나 정보를 저장할 때 사용한다.)
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?serverTimezone=UTC";
String dbID="root";
String dbPasseord="1248";
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(dbURL,dbID,dbPasseord);
}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; //데이터베이스 오류
}
}
로그인 결과를 알려주는 페이지가 필요하다. 로그인이 성공할 경우와 실패할 경우에 따른 조건도 추가한다.
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:useBean>
<jsp:setProperty name="user" property="userID"/>
<jsp:setProperty name="user" property="userPassword" />
<!DOCTYPE html>
<html>
<head>
<meta 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'"); //로그인 성공 - main페이지
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>
반응형
'CodeSiri > Project' 카테고리의 다른 글
[Mini Project 🚴🏻♀️] 06. 접속한 회원 세션 관리 (0) | 2021.02.22 |
---|---|
[Mini Project 🚴🏻♀️] 05. 회원가입 기능 구현 (0) | 2021.02.22 |
[Mini Project 🚴🏻♀️] 04. 회원가입 페이지 디자인 (0) | 2021.02.22 |
[Mini Project 🚴🏻♀️] 02. 회원 데이터베이스 구축 (0) | 2021.02.22 |
[Mini Project 🚴🏻♀️] 01. 로그인 화면 구축 (0) | 2021.02.22 |