23.01.02_TIL(JSP, ORACLE)

서준영·2023년 1월 2일
0

Today I Learned

목록 보기
10/11

저번 주 게시판 목록을 만들어 보았다.
기능 - 글쓰기, 파일 등록, 글 내용 보기, 수정, 삭제, 파일 다운로드

1. 게시판 목록

전체적인 구성은 table에 No., 제목, 작성자, 작성일, 조회수로 구성이 되며 각 목록은 5개씩 묶어 페이지를 나눴다.
글쓰기 버튼을 클릭하게 되면 게시판 목록에 글을 등록할 수 있도록 구성하였다.
우선 board에 대한 DB테이블을 session_board란 이름으로 새로 추가해주었으며 컬럼은 num, id, title, content, filename, writetime, hit로 구성되어있다.

DAO의 코딩

boardForm에 대한 DAO에서의 SQL쿼리는 위와 같이 구성하여 ORDER BY DESC를 이용하여 가장 최근에 쓴 글로 정렬하였으며 시작페이지와 끝페이지의 설정으로 뷰에 보여질 정보들을 java로 코딩하여 설정해서 값을 넣어 데이터베이스의 값들을 받아오도록 설정해두었다.

Form의 페이지 설정 CODE

다음에 설명하겠지만 uri에 설정된 currentPage의 값을 파라미터로 가져온다.
try catch를 이용하여 String값이었던 currentPage값을 int형으로 바꿔주어 currentPage매개변수에 저장하면서 현재 페이지의 값을 설정해주었다.
pageBlock은 뷰에서 보여질 게시글목록 수이며 끝값과 시작값을 정의해주어 각 currentPage에서 5개씩 출력해줄 수 있도록 설정해주었다.
토탈페이지를 설정해주어 pageBlock의 설정값보다 많은 게시글목록이 있으면 다음페이지에서 볼 수 있도록 구성해주었다.

form의 게시글 페이지 설정

temp는 현재 페이지의 번호를 뜻하고 각 설정값 이전버튼, 목록의 번호버튼, 다음버튼을 클릭하면 temp의 값에 맞도록 이동할 수 있게 설정해 두었다.

2. 게시글 등록

게시글 등록 페이지는 제목과 내용, 파일첨부, 글쓰기버튼과 목록이 나타난다.

글쓰기 등록 DAO CODE

우선 글쓰기 등록을 하게되면 제목과 내용, id값과 현재 날짜, 조회수의 값들을 데이터베이스에 저장되도록 설정해놓았다.

FORM 글쓰기 등록 CODE

우선 session.getAttribute를 이용하여 id의 값을 가져왔다.
게시글을 등록한 사람의 정보를 정확하게 데이터베이스에 저장하고 이후 수정단계에서 작성자만 수정할 수 있도록 구분해주기 위해 필요하기 때문이다.

saveDirectory를 이용하여 저장할 파일 경로를 설정해준다.
만약 설정된 폴더가 없다면 맞는 경로에 폴더를 만들어주도록 File메서드에 saveDirectory를 넣어두고 mkdir메서드를 호출하여 자동으로 폴더생성을 할 수 있도록 해주었다.

이후 등록할 파일의 크기를 설정해주기 위해 maxPostSize의 매개변수를 만들어주어 설정해주었다.

파일 업로드

MultipartRequest는 파일업로드를 해주기 위한 메서드다.
이 메서드를 사용하기 위해서는 cos.jar의 파일을 라이브러리에 등록해주어야 사용이 가능하다.

오버로드한 파일의 설정을 해주고 multi.getParameter를 이용하여 제목과 내용을 DTO에 값을 설정해주었다.
업로드할 파일은 multi.getFilesystemName을 통해 값을 설정해주었다.

날짜를 설정하기 위해서는 Date메서드를 이용하여 값을 설정해주었다.
Date메서드는 날짜나 시간등의 기능을 설정할 수 있도록 많은 기능들이 있는데 SimpleDateFormat메서드를 이용하여 현재 날짜에 대한 구성을 설정해주고 format메서드에 date값을 넣어 설정해주었다.

3. 글 내용 보기

게시글 목록에 제목을 클릭하게 되면 해당 내용을 볼 수 있는 화면으로 갈 수 있다.

조회수에 대한 DAO

클릭하게 되면 매번 updateHit메서드를 실행하게 해서 hit컬럼의 수를 +1할 수 있도록 설정해두어 조회수를 구현하였다.

다운로드 파일 클릭 시

file이름과 글쓴이의 아이디를 파라미터로 받아온다.
처음 업로드파일을 저장했던 파일 경로를 saveDir에 파일 이름까지 받아 File메서드에 값을 지정해준다.
file메서드에 있는 exists메서드를 이용하여 파일이 존재하는지 체크한다.
FileInputStream을 이용하여 파일이 있다면 파일을 http웹 페이지에 보내준다.

out.clear와 out을 이용하여 웹에 남아있는 버퍼를 한번 제거해줌으로써 다운받을 파일에 문제가 발생하지 않도록 방지차원에서 해준다.

outputStream을 이용하여 웹에 보내진 파일을 사용자가 받을 수 있도록 바이트로 잘라서 파일을 저장해준다.
while을 이용하여 파일 데이터를 읽고 파일의 데이터 끝이 -1을 만나게 되면 끝을 냄으로써 파일을 다운로드 받을 수 있도록 한다.

뷰에서의 수정과 삭제버튼은 로그인한 사용자와 글쓴 사용자의 아이디가 일치할 경우에만 나타나도록 설정함으로써 나무나 수정하지 못하도록 설정해 두었다.
수정버튼을 클릭하면 num값을 uri에 걸어주어 num값을 파라미터로 받을 수 있도록 했다.

4. 수정 버튼 FORM

수정은 제목과 내용만 수정할 수 있도록 해주었다.

수정 DAO의 CODE

수정하게 되면 아까 uri에서 넘겨받은 num을 파라미터로 받아와 값을 WHERE값에 설정을 해 두어 그 대상만 바뀌게 하도록 하였다.

삭제기능도 수정과 비슷한 방식으로 진행하였기에 이후 내용은 생략하겠다.

profile
개발자를 꿈꾸는 사람입니당

0개의 댓글