티스토리 뷰


JSP만 사용해서 만드는 게시판

  • MariaDB 사용
  • 기본적인 CRUD
    Create/Read/Update/Delete


일단 기본적인 CRUD가 가능한 게시판을 만들기 위해 게시판이 어떻게 이루어져야 할지 생각해보았다.

첫째로, 글 목록 페이지가 있어야 하고 글 생성 버튼을 클릭 시 글 생성 페이지가 보여져야 한다.
글의 리스틀를 클릭했을 땐 글 상세 페이지가 나와야 하고 수정삭제 버튼이 있어 글 수정 페이지로 이동하거나 글이 삭제되어야 한다.

그리고 웹페이지에 보여줄 DATA를 가져올 DB가 필요하다. 글 생성, 수정, 삭제시 DB에 있는 데이터를 추가 수정 삭제하는 것 이기 때문이다.

DB에 TABLE을 생성해야 한다.

 TABLE : board

 idx (PK)

글 번호 

 name

작성자 

 title

글 제목 

 text

글 내용 

 time

등록 시간 


DB는 postgresql만 사용해보았는데, 이번에 MariaDB를 사용해보기로 하였다.
MariaDB를 설치하고, HeidiSQL를 사용하면 DB를 쉽게 조작할 수 있다.

내가 설계한 board 테이블의 생성 스크립트다.
idx를 primary key로 auto_increment 되게 생성하였다. 
(auto_increment는 시퀀스 개념으로 자동으로 idx를 증가시켜 준다)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE `board` (
    `idx` INT(11NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(50NOT NULL,
    `title` VARCHAR(50NOT NULL,
    `text` TEXT NOT NULL,
    `time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`idx`)
)
COMMENT='게시판'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;
 
cs

 

게시판을 어떻게 생성할 것인지 기본적인 준비는 되었기 때문에 이제 웹 프로젝트에 DB를 연동시켜야 한다.

나는 웹의 첫 시작을 스프링과 함께했기 때문에(이미 개발환경이 다 구축되어 있었기 때문에)
이클립스에 DB를 어케 연동시키는지 몰랐다. 

정확히 말하면 자바와 데이터베이스의 DBMS를 연결시켜 주어야 하는데 그 인터페이스를 제공하는 것이 JDBC다.
데이터베이스에 데이터를 삽입, 수정, 삭제할 때 SQL 프롬프트에서 SQL문을 사용하지 않아도, 자바 프로그램에서 가능하게 해주는 API다.

mysql-connector-java-5.1.40-bin.jar

JDBC 드라이버를 다운받아서 이클립스 프로젝트 WEB-INF 의 lib에 넣으면 된다.


웹 컴포넌트에서 데이터베이스를 사용하려면 데이터베이스로 연결을 하여 사용한 후 연결을 해제하는 활동을 반복해야 한다.

1. JDBC 드라이버를 로드한다.

1
Class.forName("com.mysql.jdbc.Driver");
cs  

2. DB에 연결한다.

1
Connection conn=DriverManager.getConnection("jdbc:mysql://데이터베이스URL","사용자ID","패스워드");
cs

데이터 베이스를 생성할 때 만든 이름으로 데이터 베이스 URL을 넣어주면 된다. 나는 localhost:3306/haeun
사용자 아이디와 패스워드 또한 DB생성 시 만든 계정을 넣어주면 된다.

3. DB를 조작한다.

DB조작에는 데이터를 읽어오는 방법과 데이터를 입력하는 방법 2가지로 나뉘는데

먼저 데이터를 읽어올 때에는 java.sql.Statement 인터페이스 타입의 객체를 이용해야 한다.
getConnection 메서드가 리턴한 Connection 객체에 대해 createStatement 메서드를 호출해야 한다.

1
stmt = conn.createStatement();
cs

Ststemet 객체에 대해 executeQuery 메서드를 호출하면 데이터를 읽어올 수 있다.
이 메서드에는 select문을 파라미터로 넘겨주어야 하며, 결과는 java.sql.ResultSet 타입의 객체로 리턴된다.

1
ResultSet rs = stmt.executeQuery("select * from board order by idx desc;");
cs

데이터를 입력 할 때에도 Statement 객체를 이용한다.

1
stmt = conn.createStatement();
cs

Statement 객체에 대해 executeUpdate 메서드를 호출하면 데이터를 추가, 수정, 삭제할 수 있다.
이 메서드에는 insert , update, delete 문을 파라미터로 넘겨줄 수 있으며, 결과는 int 타입의 실행된 쿼리의 데이터 수 이다.

1
int Num = stmt.executeUpdate("insert/update/delete")
cs

executeUpdate 메서드를 사용한 후에는 Statement 객체에 대해 close 메서드를 반드시 호출해야 한다.
객체 생성 시 할당받은 자원을 해제해야 하기 때문이다.

4. DB 연결을 끊는다.

1
conn.close();
cs


이정도만 알아두고 DB 연결 테스트를 해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@page contentType="text/html; charset=euc-kr"%>
<%@page import="java.sql.*"%>
<html>
    <head><title>데이터베이스로 연결하기</title></head>
    <body>
        <h3>데이터베이스 연결 테스트</h3>
        <%
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/haeun","","");
            
            if(conn !=null){
                out.println("데이터 베이스로 연결했습니다");                
            }else{
                out.println("데이터 베이스로 연결할 수 없습니다.");
            }
        %>
    </body>
</html>
cs


데이터베이스로 연결했습니다. 가 콘솔창에 잘 나오면 DB연결이 잘 된것이다!
다음 포스팅부터 게시판을 만들어 보겠다.


'게시판정복 > JSP게시판' 카테고리의 다른 글

6. 게시판 글 삭제  (0) 2017.04.07
5. 게시판 글 수정  (0) 2017.04.07
4. 게시판 상세보기  (0) 2017.04.04
3. 게시판 글 생성  (0) 2017.03.28
2. 게시판 목록  (0) 2017.03.28
댓글