백엔드 개발자라면 적어도 한 번은 만들어 본다는 게시판 만들기, 그 첫 번째 단계
(DB -> VO -> Dao -> Service -> Controller)
우선 나는 이클립스에서 오라클 DB와 톰캣 서버를 사용한다.
Dynamic Web Project
Oracle DB
JDK 11
Apache Tomcat v9.0
나의 작업 환경은 이러하고 기본으로 톰캣을 연동하고 로컬 호스트까지를 띄운 상태에서
DB에 테이블 생성하는 것부터 간단하게 정리해보겠다.
Oracle SQL Developer에서 basicBoard 테이블을 생성한다.
CREATE TABLE basicBoard (
boardNumber NUMBER PRIMARY KEY,
id nvarchar2(50) NOT NULL,
title nvarchar2(100) NOT NULL,
content nvarchar2(1000),
regist_date DATE DEFAULT SYSDATE,
cnt NUMBER DEFAULT 0
);
boardNumber는 pk로 잡았고 중복이 되면 안되기 때문에 자동으로 추가 될 시퀀스를 생성한다.
CREATE SEQUENCE basicBoard_sequence START WITH 10001 INCREMENT BY 1;
이클립스에서 생성한 프로젝트에 테이블의 값을 담을 수 있는 BasicBoardVO.java를 생성한다.
(package를 보면 알 수 있듯 나는 pkg라는 package 안에 basicBoard backage가 있고, 그 안에 BasicBoardVO 파일을 생성했다)
BasicBoardVO
package pkg.basicBoard;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class BasicBoardVO {
int boardNumber;
String id;
String title;
String content;
String regist_date;
int cnt;
}
(lombok을 사용하지 않는다면 Source에서 Generate Getters and Setters 와 Generate toString()을 추가해주면 된다)
그 다음으로 Dao -> Service -> Controller 기본 틀을 만들어준다.
처음에는 왜 이런 과정을 거쳐야 하는건가 했는데, 찾아보니 DB에서 데이터를 받아와서 웹에 보여지기 까지의 기본 틀 같은 정도라고 보면 될 듯 했다.
Dao와 Service는 Interface를 먼저 만들어주고 상속을 받아 override 해서 코드를 완성시켜 준다.
BasicBoardDao (Interface)
package pkg.basicBoard;
public interface BasicBoardDao {
void insert(BasicBoardVO vo);
}
BasicBoardDaoImpl (Class)
package pkg.basicBoard;
public class BasicBoardDaoImpl implements BasicBoardDao {
@Override public void insert(BasicBoardVO vo) {
}
}
BasicBoardService (Interface)
package pkg.basicBoard;
public interface BasicBoardService {
void insert(BasicBoardVO vo);
}
BasicBoardServiceImpl (Class)
package pkg.basicBoard;
public class BasicBoardServiceImpl implements BasicBoardService {
BasicBoardDao dao = null;
BasicBoardServiceImpl() {
dao = new BasicBoardDaoImpl();
}
@Override public void insert(BasicBoardVO vo) {
dao.insert(vo);
}
}
그 다음 Servlet 로 Controller 파일을 생성해준다.
BasicBoardController
package pkg.basicBoard;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class BasicBoardController
*/
@WebServlet("/BasicBoardController")
public class BasicBoardController extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public BasicBoardController() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
자, 이렇게 기본 틀이 완성이 되었다.
다음 포스팅에서는 위에 만들어둔 Insert 작업을 진행해보자.
'JSP' 카테고리의 다른 글
CRUD 게시판 _update 추가하기 (2) | 2024.01.02 |
---|---|
CRUD 게시판 _getBoard 추가하기 (2) | 2023.12.28 |
CRUD 게시판 _delete 추가하기 (0) | 2023.12.24 |
CRUD 게시판 _select 추가하기 (0) | 2023.12.19 |
CRUD 게시판_insert 추가하기 (0) | 2023.12.13 |