이전글보기
2018/10/22 - [ 컴알못/Web] - JSP 기초 : 게시판 만들기 5. 게시판 DB 생성
1. 글 쓰기 화면 디자인
이전글
ㅇ
write.jsp
<%@ 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.css"> <title>jsp 게시판 웹사이트</title> </head> <body> <% //로긴한사람이라면 userID라는 변수에 해당 아이디가 담기고 그렇지 않으면 null값 String userID = null; if (session.getAttribute("userID") != null) { userID = (String) session.getAttribute("userID"); } %> <!-- 네비게이션 --> <nav class="navbar navbar-default"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="bs-example-navbar-collapse-1" aria-expaned="false"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="main.jsp">JSP 게시판</a> </div> <div class="collapse navbar-collapse" id="#bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li><a href="main.jsp">메인</a></li> <li class="active"><a href="bbs.jsp">게시판</a></li> </ul> <% //라긴안된경우 if (userID == null) { %> <ul class="nav navbar-nav navbar-right"> <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">접속하기<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="login.jsp">로그인</a></li> <li><a href="join.jsp">회원가입</a></li> </ul></li> </ul> <% } else { %> <ul class="nav navbar-nav navbar-right"> <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">회원관리<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="logoutAction.jsp">로그아웃</a></li> </ul></li> </ul> <% } %> </div> </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="2048" style="height: 350px;"></textarea></td> </tr> </tbody> </table> <input type="submit" class="btn btn-primary pull-right" value="글쓰기" /> </form> </div> </div> <!-- 애니매이션 담당 JQUERY --> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <!-- 부트스트랩 JS --> <script src="js/bootstrap.js"></script> </body> </html>
|
2. 게시판 DB 연결
DAO 데이터 접근 객체의 약자로서 실제로 데이터베이스에 접근하여 입력/출력
BbsDAO.java
package bbs; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class BbsDAO { // dao : 데이터베이스 접근 객체의 약자
private Connection conn; // connection:db에접근하게 해주는 객체 //private PreparedStatement pstmt; private ResultSet rs; // mysql 처리부분 public BbsDAO() { // 생성자를 만들어준다. try { String dbURL = "jdbc:mysql://localhost:3306/BBS?&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; String dbID = "root"; String dbPassword = "root"; Class.forName("com.mysql.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 ""; //데이터베이스 오류 }
//bbsID 게시글 번호 가져오는 함수 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; //데이터베이스 오류 }
//실제로 글을 작성하는 함수 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(6,1);
return pstmt.executeUpdate();
} catch (Exception e) { e.printStackTrace(); } return -1; //데이터베이스 오류 } }
|
* 번외
현재 강의에서는 글쓰기화면의(write.jsp) 등록 버튼에서 회원/비회원 구분을 한다.
비회원일 경우 글 목록에서 글쓰기로 넘어가지 못 하도록
개인적으로 추가로 설정 해주었다.
<!-- 회원만넘어가도록 --> <% //if logined userID라는 변수에 해당 아이디가 담기고 if not null if (session.getAttribute("userID") != null) { %> <a href="write.jsp" class="btn btn-primary pull-right">글쓰기</a> <% } else { %> <button class="btn btn-primary pull-right" onclick="if(confirm('로그인 하세요'))location.href='login.jsp';" type="button" >글쓰기</button> <% } %> </div> </div>
|
3. 글을 작성해 주는 액션 페이지
wirteAction.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="bbs.BbsDAO"%> <!-- bbsdao의 클래스 가져옴 --> <%@ page import="java.io.PrintWriter"%> <!-- 자바 클래스 사용 --> <% request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); //set으로쓰는습관들이세오. %> <!-- 한명의 회원정보를 담는 user클래스를 자바 빈즈로 사용 / scope:페이지 현재의 페이지에서만 사용--> <jsp:useBean id="bbs" class="bbs.Bbs" scope="page" /> <!-- // Bbs bbs = new Bbs(); --> <jsp:setProperty name="bbs" property="bbsTitle" /><!-- bbs.setBbsTitle(requrst) --> <jsp:setProperty name="bbs" property="bbsContent" /> <% System.out.println(bbs); %> <!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 = '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("history.back()"); script.println("</script>"); } } } %> </body> </html>
|
'STUDY > programing' 카테고리의 다른 글
JSP 기초 : 게시판 만들기 9. main.jsp (250) | 2018.11.05 |
---|---|
JSP 기초 : 게시판 만들기 8. 글 수정 및 삭제 기능 (423) | 2018.10.25 |
JSP 기초 : 게시판 만들기 7. 글 목록 및 뷰페이지 (442) | 2018.10.24 |
JSP 기초 : 게시판 만들기 5. 게시판 DB 생성 (753) | 2018.10.22 |
JSP 기초 : 게시판 만들기 4. 회원가입 / 세션 처리 (20) | 2018.10.19 |
JSP 기초 : 게시판 만들기 3. 로그인 처리 (mysql) (23) | 2018.10.18 |