게시판 만들기 - BACKEND

  • Spring 을 사용해 다음과 같은 아주 간단한 게시판을 만드려고 한다.
  1. index 페이지에서는 회원가입을 한 뒤 로그인을 한다.
  2. board 페이지로 들어가서 게시판이 보인다.
  3. 게시글을 누르면 post 페이지가 보이고 게시글과 댓글이 보인다.

1124sp6

전체적인 흐름

1. db 테이블 설계, 만들기 main/resources에 .sql 파일에 테이블이랑 시퀀스 생성 코드 저장
2. project facet 에서 자바버전, pom.xml 에서 java와 spring 버전 변경 (자바 : 1.8, spring : 4.3.6)
3. db.properties 파일에 oracle db 연결 정보 생성
4. 라이브러리 추가
6. mybatis-config.xml , root-context.xml 세팅, mappers 폴더 만들어서 mapper파일 생성
7. vo 만들어줌 (vo 만들 시 db와 변수 타입 맞추기)
9. interface 만들기 //설계도!
8. JSP, CONTROLLER, REPOSITORY , MAPPER.XML 을 오가며 코드 구현

1. DB 테이블 만들기

  • 총 세개의 테이블, member, board, reply 를 만들 것이고, 각각 테이블에 어떤 변수가 있어야하는지 정한 후 Oracle SQL에서 table을 생성해준다.
  • member: user를 저장하는 테이블이 필요하다.

1124sp3

  • board: 게시글을 저장하는 테이블이 필요하다. 여기서 userid는 foreign key로 줄 것 같지만 아니다. 회원탈퇴를 해도 글은 계속 남아있어야 하기 때문에 member 테이블과 관계를 맺지 않는다.

1124sp4

  • reply: 댓글을 저장하는 테이블이 필요하다.

1124sp5

  • 테이블과 함께 시퀀서를 만들어준다. 그리고 쿼리는 저장해 놓는게 좋아서 board.sql 파일에 저장해놓는다.

2. java, spring 버전 바꾸기

  • project facet 에서 java를 1.8로,
  • pom.xml 에서 java를 1.8, spring 을 4.3.6으로

3. db.properties 파일

  • Orcle SQL 에 접속할 수 있는 정보를 담은 파일을 src/main/resources에 만들어준다.
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:XE
user=hr
password=hr

4. library 추가

  • ojdbc6.jar 을 web-inf 안에 lib폴더를 만들어 갖다 놓는다.
  • pom.xmlmybatis.jar, mybatis-spring.jar, spring-jdbc.jar 의 dependency 설정을 추가해준다. 자세히
  • jstl을 쓸 것이기 때문에, pom.xml에서 servlet-api, jsp-api 버전 또한 수정해준다.자세히
  • lombok library 를 추가해준다. 자세히

5. xml 파일을 만든다.

mybatis-config.xml

  • 아래와 같이 mappers 태그 아래에 mapper resource 를 넣어주면 된다. mapper file을 아직 안 만들어서 만든 후에 다시 채워넣을 것이다.
<configuration>
    <mappers>
        <mapper resource=""/>
        <mapper resource=""/>
    </mappers>
</configuration>

root-context.xml

  • src main webapp web-inf spring 의 root-context.xml 코드 를 넣어준다.
<summary>코드 보기</summary>
<pre><?xml version="1.0" encoding="UTF-8"?>
classpath:db.properties

</pre></details>

mapper.xml

  • mapper를 여러가지 만들 것이기 때문에 src/main/resouces에 mappers 폴더를 만들어 거기에 mapper.xml을 넣는다.
  • Table이 세개니까 mapper또한 세개를 만들어준다.

6. VO를 만든다.

  • board VO , memberVO, replyVO를 만든다.
<summary>board VO 코드 보기</summary>
<pre>package sesoc.intern.board.vo; import lombok.Data; @Data public class Board {
private int boardseq;
private String userid;
private String title;
private String message;
private int hitcount;
private String regdate;
private String originalfile;
private String savedfile; }
</pre>
<summary>member VO 코드 보기</summary>
<pre>package sesoc.intern.board.vo; import lombok.Data; //vo 만들 때 db테이블 변수 이름이랑 똑같이 해주는게 가장 좋다. @Data public class Member {
private String userid;
private String userpwd;
private String username;
private String gender;
private String email;
private String phone;
private String hobby;
private String birth;
private String address; }</pre>
<summary>replyVO 코드 보기</summary>
<pre>package sesoc.intern.board.vo; import lombok.Data; @Data public class Reply {
 private int replyseq;
 private int boardseq;
 private String userid;
 private String replytext;
 private String regdate; }</pre>

7. Interface를 만든다.

public interface memberMapper {
    public int join(Member mebmer); //회원가입
    public Member selectOne(Map<String,String> map);//조회 (로그인시 사용할 것이다)
    public int update(Member member);
    public int delete(Map<String,String> map);
}
public interface BoardMapper {
    public List<Board> boardList(Map<String, Object> map);
    public Board boardDetail(int boardseq);
    public int boardDelete(int boardseq);
    public int boardUpdate(Board board);
    public int boardRegist(Board board);
    //글이 몇개 있는지 왜 중요하냐면, paging 할 때 중요하다. select count(*) from board
    public int hitCount(int boardseq);
    public int getBoardCount(Map<String, Object> map);
}

◇ Spring 게시판 포스팅 시리즈 ◇

  1. Spring 과 DB 연결하기 - 현재 글
  2. 회원 가입 화면 구성
  3. ID 중복 확인 하기
  4. 로그인 페이지 만들기
  5. 게시판 화면 구성하기
  6. 글 쓰기 기능 구현
  7. 글 확인 기능 구현
  8. 글 수정 기능 구현
  9. 게시판 페이징
  10. 파일 첨부 기능
  11. 파일 다운 기능
  12. MIME 타입
  13. 글 수정시 파일 변경

© 2018. All rights reserved.

Powered by Hydejack v8.5.2