본문 바로가기
JSP

커뮤니티 게시판 만들기 03 - 로그인 화면, 로그인 구현

by Kanari 2020. 7. 15.

CSS는 Bootstrap을 이용하였다.

 

압축파일을 다운로드한 뒤 프로젝트 폴더에 풀어주자.

 

 

 

이 파일들을 WebContent에 넣어주면 끝이다.

 

 

 

< index.jsp >

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
 
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Kanari 웹 사이트</title>
</head>
<body>
    <script>
        location.href = 'login.jsp';
    </script>
</body>
</html>
 
cs

 

< login.jsp >

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
 
<!DOCTYPE html>
 
<html>
 
<head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width" initial-scale="1">
 
    <link rel="stylesheet" href="css/bootstrap.min.css">
 
    <title>Kanari 웹 사이트</title>
  
</head>
<body>
 
<nav class="navbar navbar-expand-sm bg-dark navbar-dark"> 
    <ul class="navbar-nav navbar-white">
        <li class="nav-item active"><a class="nav-link" href="#">메인</a></li>
        <li class="nav-item"><a class="nav-link" href="#">게시판</a></li>
        <li class="nav-item dropdown"> 
         <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown"> Sign in </a>
            <div class="dropdown-menu">
                <a class="dropdown-item" href="login.jsp">로그인</a>
                <a class="dropdown-item" href="join.jsp">회원가입</a> 
            </div>
        </li>
    </ul>
</nav>
 
 
<div class="container-fluid">
    <div class="col-lg-4">
        <div class="jumbotron" style="padding-top: 20px;">
            <form method="post" action="loginAction.jsp">
 
                <h3 style="text-align: center;"> 로그인화면 </h3>
 
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="아이디" name="userID" maxlength=100px>
                </div>
 
                <div class="form-group">
                    <input type="password" class="form-control" placeholder="비밀번호" name="userPassword" maxlength=100px>
                </div>
                <input type="submit" class="btn btn-primary form-control" value="로그인">
            </form>
        </div>
    </div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>
 
cs

 

 

 

'

MySQL과 jdbc를 연동하기 위해 MySQL Connector를 받아주자

https://dev.mysql.com/downloads/connector/j/

 

MySQL :: Download Connector/J

MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0.

dev.mysql.com

똑같이 압출을 프로젝트 폴더에 푼 뒤 

 

 

여기에다가 옮겨주자.

 

프로젝트의 Properties에 들어가 Libraries 탭에 들어간 뒤 Add JARs를 눌러 아까 추가한 파일을 추가해주자.

 

MySQL을 연동 해주자

 

 

< UserDAO.java >

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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://127.0.0.1:3306/BBS?autoReconnect=true&amp&serverTimezone=UTC";
            String dbID = "root";
            String dbPassword = "root";
 
            Class.forName("com.mysql.cj.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// 데이터베이스 오류
 
    }
 
}
 
cs

 

TimeZone오류와

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver' 오류가 발생하였는데 해결방법은 간단하다.

 

TimeZone오류는 dbURL에 &serverTimezone=UTC을 추가하면 된다. 인터넷에 ;serverTimezone=UTC이라 써져있는 글이 몇 개 있는데 ;를 쓰면 오류가 난다.

 

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'

dbDriver를 com.mysql.cj.jdbc.Driver로 바꿔주면 된다.

 

 

< loginAction.jsp >

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<%@ 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"); %>    <!-- 받는 모든 문자열을 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>Kanari 웹 사이트</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 {
        PrintWriter script = response.getWriter();
        script.println("<script>");
        script.println("alert('데이터 베이스 오류 발생')");
        script.println("history.back()");
        script.println("</script>");
        }        
    %>
</body>
</html>
 
cs

 

로그인을 처리해주는 jsp다. UserDAO.java의 login 메소드를 호출해서 결괏값을 받아 온 뒤 처리해준다.

 

 

user테이블에 데이터를 넣은 뒤 제대로 작동하는지 확인해보자.

 

 

  • 아이디가 존재하지 않는 경우

 

 

 

 

  • 비밀번호가 틀린 경우

 

 

 

 

  • 로그인 성공

 

 

아직 main.jsp를 만들지 않아 404오류가 뜬다.

댓글