본문 바로가기
JSP

커뮤니티 게시판 만들기 08 - 게시판 글 작성

by Kanari 2020. 7. 27.

< BbsDAO.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package bbs;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
public class BbsDAO {
    
    private Connection conn;
    private PreparedStatement pstmt;
    private ResultSet rs;
 
    public BbsDAO() {
        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 String getDate() {
        String SQL = "SELECT NOW()";
        try {
            PreparedStatement pstmt = conn.prepareStatement(SQL);
            rs = pstmt.executeQuery();
            if(rs.next()) {
                return rs.getString(1);
            }
        } catch(Exception e) {
            e.printStackTrace();
        }
        
        return ""// db오류
    }
    
    public int getNext() {
        String SQL = "SELECT bbsID FROM BBS ORDER BY bbsID DESC";
        try {
            PreparedStatement pstmt = conn.prepareStatement(SQL);
            rs = pstmt.executeQuery();
            if(rs.next()) {
                return rs.getInt(1+1;
            }
            return 1//현재 게시물이 첫번째인 경우
        } catch(Exception e) {
            e.printStackTrace();
        }
        
        return -1// db오류
    }
    
    public int write(String bbsTitle, String userID, String bbsContent) {
        String SQL = "INSERT INTO BBS VALUES (?, ?, ?, ?, ?, ?)";
        try {
            PreparedStatement pstmt = conn.prepareStatement(SQL);
            pstmt.setInt(1, getNext());
            pstmt.setString(2, bbsTitle);
            pstmt.setString(3, userID);
            pstmt.setString(4, getDate());
            pstmt.setString(5, bbsContent);
            pstmt.setInt(61);
            return pstmt.executeUpdate();
 
        } catch(Exception e) {
            e.printStackTrace();
        }
        
        return -1// db오류
    }
}
 
cs

 

 

< write.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
 
<%@ page import="java.io.PrintWriter" %>
 
<!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>
 
<%
    String userID = null;
    if(session.getAttribute("userID"!= null){
        userID = (String) session.getAttribute("userID");
    }
%>
 
<nav class="navbar navbar-expand-sm bg-dark navbar-dark"> 
    <ul class="navbar-nav navbar-white">
        <li class="nav-item"><a class="nav-link" href="main.jsp">메인</a></li>
        <li class="nav-item active"><a class="nav-link" href="bbs.jsp">게시판</a></li>
        <%
            if(userID == null){
        %>
        
        <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>
        
        <%
            }    else{
                
        %>
           <li class="nav-item dropdown"> 
               <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown"> 회원관리 </a>
            <div class="dropdown-menu">
                <a class="dropdown-item" href="logoutAction.jsp">로그아웃</a>
            </div>
        </li>
        <%
            }
        %>
    </ul>
</nav>
 
<div class="container">
    <div class="row">
        <form method="post" action="writeAction.jsp">
            <table class="table table-striped" style="text-align: center; border: 1px solid #dddddd">
            <thead>
                <tr>
                    <th colspan="2" style="background-color: #eeeeee; text-align: center;">게시판 글 작성 양식</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><input type="text" class="form-control" placeholder="글 제목" name="bbsTitle" maxlength="50"></td>
                </tr>
                <tr>
                    <td><textarea class="form-control" placeholder="글 내용" name="bbsContent" maxlength="2020" style="height: 350px;"></textarea></td>    
                </tr>
            </tbody>
        </table>
        <input type="submit" class="btn btn-primary pull-right" value="글 쓰기">
        </form>
    </div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>
cs

 

 

 

 

 

< writeAction.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
72
73
74
75
76
77
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%>
 
<%@ page import="bbs.BbsDAO" %>
<%@ page import="java.io.PrintWriter" %>
 
<% request.setCharacterEncoding("UTF-8"); %>    <!-- 받는 모든 문자열을 UTF-8로 인코딩한다. -->
 
<jsp:useBean id="bbs" class="bbs.Bbs" scope="page" />    <!-- 현재 페이지에서만 자바빈을 사용가능하게 설정 -->
 
<jsp:setProperty name="bbs" property="bbsTitle" />
<jsp:setProperty name="bbs" property="bbsContent" /> 
 
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Kanari 웹 사이트</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 = 'login.jsp'");
            script.println("</script>");
        }
        
        else{
            if(bbs.getBbsTitle() == null || bbs.getBbsContent() == null){
                PrintWriter script = response.getWriter();
                script.println("<script>");
                script.println("alert('입력이 안된 사항이있습니다.')");
                script.println("history.back()");
                script.println("</script>");
            }
            
            else{
                
                BbsDAO bbsDAO = new BbsDAO();
     
                int result = bbsDAO.write(bbs.getBbsTitle(), userID, bbs.getBbsContent());
     
                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("location.href = 'bbs.jsp'");
                    script.println("</script>");
                }
     
            }
        }
    
        
        
    %>
    
</body>
</html>
 
cs

 

 

작성한 글이 DB에 입력되는지 확인해보자.

 

댓글