본문 바로가기

웹개발/스프링

5. 게시판 만들기 - 게시글 목록 출력하기

이전 시간에는 로그인/로그아웃 기능을 구현 해보았습니다. 

 

그럼 이번시간에는 본격적으로 게시판을 만들어 보도록 하겠습니다.

 

먼저 게시판에서 글을 작성할 경우 작성한 글의 목록을 띄우는 기능 먼저 구현 하도록 하겠습니다.

 

ERD 및 DDL 확인

 

1차 ERD

1차. 회원테이블과 게시판 테이블 설계 DDL DROP TABLE novice_user; CREATE TABLE novice_user( user_no NUMBER PRIMARY KEY, user_id VARCHAR2(15) NOT NULL UNIQUE, user_pw VARCHAR2(200) NOT NULL, user_nic..

minwoo-developer.tistory.com

 

1) 파일 및 패키지 생성

1-1) BoardController.java 파일 생성

6행 : @Controller : 컨트롤러 객체로써 서블릿 컨테이너에 Bans 객체로써 등록 해줍니다.

7행 : @RequestMapping : view 의 경로를 지정해줍니다.

 

1-2) BoardService.java 파일 생성

8행 : @Service : 서비스 객체로써 루트 컨테이너에 Bans 객체로써 등록해줍니다.

11행 : @Autowired : 필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 주입한다.

 

1-3) BoardSQLMapper.java 파일 생성

 

1-4) BoardSQLMapper.xml 파일 생성

5행 : SQL Mapper 경로 설정이다.

 

1-5) BoardVo.java 파일 생성

12~27행 : DB 필드들을 선언하고 각 제약조건을 설정해준다

45~99행 : Getter/Setter를 만든다. Alt+Shift+S를 눌러서 Generate Getters and Setters로 쉽게 만들 수 있다.

VO는 Value Object의 약자로써 read only 속성을 가진다.  DB의 필드들을 Getter/Setter 메소드 조합으로 형성된 클래스이다. DB의 정보를 담고 보내주는 역할을 한다. DTO라는 이름으로 사용하는 사람들도 있다. VO와 DTO는 거의 비슷한, 똑같은 개념이긴 하다. 두 개를 구분하라면 구분할 순 있지만, 비슷한 개념이다. 불변성이냐 아니냐의 차이이다. VO나 DTO를 쓰지않고 Map만 사용하는 사람들도 있다. 편한 걸로 쓰면 된다. 

 

1-6) 최종 디렉토리

파일을 모두 생성 하였다면 위와 같은 구조로 디렉토리 구조가 생성 되어있어야 한다.

 

2) BoardController.java("mainPage")

11행 : @RequestMapping : viewName을 mainPage로 설정한다.

 

3) mainPage.jsp

 

 

4) 확인

이렇게 화면 페이지가 뜨면 성공적이다 !!

 

5) BoardController("mainPage")

26행 : 모델에 dataList 의 데이터를 추가해준다.

 

6) BoardService.java

29행 : for : 쿼리에서 게시글을 불러와서 boardVo 변수에 값을 추가 해준다.

32행 : 쿼리에서 유저넘버로 해당하는 유저의 정보를 불러온다.

35행 : boardVo 라는 키값을 가지고 boardVo라는 벨류값을 map 변수에 추가한다.

36행 : userVo 라는 키값을 가지고 userVo 라는 벨류값을 map 변수에 추가한다.

38행 : map에 추가된 데이터를 dataList 변수에 추가한다.

 

7) BoardSQLMapper.java

9행 : 쿼리에서 게시글을 불러와서 ArrayLIst 로써 반환한다. (한개의 행을 경우 단일행을 반환)

 

8) UserSQLMapper.java

 

9) BoardSQLMapper.xml

novice_board 테이블의 데이터를 board_no 내림차순 순서대로 정렬해서 값을 불러온다.

 

10) UserSQLMapper.xml

 

11) mainPage.jsp

 

76행 : <c:forEach items="${dataList }" var="data"> : Model에 담겨진 dataList의 값을 data 라는 변수의 이름으로써 값을 사용한다는 뜻

80~104행 : 비밀글 노출 여부에 관한 부분이다 로그인을 했는지 안했는지 로그인을 했다면 본인인지 아닌지 구분하기 위한 구문이다.

122행 : c:if item="${!empty sessionUser }"> : 로그인 여부를 체크한다. 로그인 햇다면 글쓰기 버튼을 노출 시키고 아니라면 노출시키지 않는다.

 

11) 실행화면

 

로그인 하지 않고 목록페이지를 조회하게 되면 글쓰기 버튼이 안보이는거를 확인 할 수 있다.

로그인을 했다면 글쓰기 버튼이 정상적으로 노출된다.

 

다음시간에는 인터셉터를 이용한 로그인 여부 체크 기능을 구현해보자