게시판만들기9

2020. 6. 23. 13:35jsp ,oracle 을 이용한 게시판 만들기

주제 : 글쓰기 기능 구현하기

 

우선 글쓰기 페이지를 만들기 위해  bbs.jsp 파일을 복사하여 write.jsp 파일을 생성해준다.

본래 4개 이던 테이블 데이터 두개를 삭제해 두개만 남겨주고 , 위에 보이는 코드와 같이 수정

<input type ="text" class="form-control" placeholder="글 제목".........> (글작성 폼의 제목 부분)

<textarea ...............></textarea> (글작성 폼의 내용 부분)

 

이제 글 작성후 글쓰기 버튼을 눌렀을시 액션이 실행될수 있도록 BbsDAO 클래스를 생성한다.

그리고 나서 아래와 같이 UserDAO 에서 데이터베이스 연결하는 부분을 그대로 복사하여 붙여넣기 해준다.

(참고로 private preparedStatement pstmt; 부분은 삭제해줬습니다.)

이제는 우리가 게시판 글쓰기에 필요한 기능들을 실행시키 위한 함수를 작성해 줄것이다.

 

 

 

 

public String getDate() { //현재시간 가져오는 함수

String SQL = "SELECT NOW()";

try {

PreparedStatement pstmt = conn.prepareStatement(SQL); //sql실행준비 단계

rs = pstmt.executeQuery(); //실행시 나오는 결과 가져옴

 

if(rs.next()) {

return rs.getString(1);

}

}catch(Exception e) {

e.printStackTrace();

}

return ""; //데이터베이스 오류

}

 

public int getNext() { //글의 번호 정해주는 함수

String SQL = "SELECT bbsID FROM BBS ORDER BY bbsID DESC"; //마지막에 쓰인글 번호 겟

try {

PreparedStatement pstmt = conn.prepareStatement(SQL); //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); //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; //데이터베이스 오류

}

}

코드를 다 작성했으면  bbs빈즈를 이용하는 jsp 페이지 writeAction.jsp 페이지를 만들어준다.

Bbs빈즈를 사용할것이기 때문에 다음과 같이 수정해준다.

하고 나서 아래와 같이 코르 작성

 

 

<%@ page import="bbs.BbsDAO" %>

<%@ page import ="java.io.PrintWriter" %>

<% request.setCharacterEncoding("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>>JSP 게시판 웹 사이트</title>

</head>

<body>

<%

String userID = null;

if(session.getAttribute("userID") !=null){

userID = (String)session.getAttribute("userID"); //session id담는 변수

}

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>

 

여기까지하면 게시판글쓰기 기능과, 글쓰기 버튼을 눌렀을때 DB에 연동되서 MySQL의 bbs테이블에 기록이 남는다.

​이제 터미널에서 SELECT * FROM BBS; 를 입력하게 되면 

이렇게 우리가 작성한 글이 데이터 베이스에 담겨져 있는걸 볼 수 있다.

 

출처: https://www.youtube.com/watch?v=EmbxlHakkfY&list=PLRx0vPvlEmdAZv_okJzox5wj2gG_fNh_6&index=10

'jsp ,oracle 을 이용한 게시판 만들기' 카테고리의 다른 글

게시판만들기11  (0) 2020.06.29
게시판만들기10  (0) 2020.06.24
게시판만들기8  (0) 2020.06.22
게시판만들기7  (0) 2020.06.22
게시판만들기6  (0) 2020.06.22