🧑🏻💻 보통 게시판에는 파일을 첨부할 수 있는 기능이 있다. 우리도 한번 추가해보자. 먼저 Board에서 파일의 이름, 경로를 저장할 filename , filepath 변수를 각각 추가한다.

그리고 mariaDB 로 이동해 filename , filepath 를 저장할 수 있는 저장 공간을 만들어주자.

추가가 완료되었으면 오른쪽 아래 apply 버튼을 눌러준다.
그리고 boardwrite로 이동해 아래와 같이 수정한다.

아래와 같이 파일을 첨부할 수 있는 버튼이 추가되었다. 
다시 intellij 로 돌아와 src - main - resources - static 하위에 files 디렉토리를 하나 만들어주자. 업로드한 파일이 저장될 디렉토리이다.

BoardService로 이동해 write 메소드를 다음과 같이 수정해준다.

projectPath에는 업로드한 파일의 경로를 담아주고uuid는 페이지에 업로드된 파일들을 식별할 수 있는 식별자 같은 것이다. 우리는UUID의randomUUID()메소드로 랜덤으로 할당해주었다.filename은 아까 생성한uuid + file의 이름 조합으로 생성해주었다.
throws Exception 은 예외가 발생할 경우를 대비해 예외처리를 해준 것이다. 만약 해당 메소드에서 예외가 발생하면 Exception 객체가 받아 처리하는 구조이다.
BoardController로 이동해 를 아래와 같이 수정해주자.
< writeDo 메소드 >

< boardUpdate 메소드 >

수정이 끝났다면 재실행한 후 실제로 파일을 첨부해보자.


파일이 잘 첨부된것을 확인할 수 있다!!
😹 글이 한두개면 큰 문제가 없겠지만 리스트에 많은 게시물들이 업로드되게 되면 자신이 쓴 글을 찾으려면 맨 아래까지 내려야 글을 찾을 수 있는 문제점이 발생하게 된다. 게시물을 10개 단위로 처리하는 페이지를 만들어보자.
먼저 Controller 에서 다음과 같이 수정해주자. @PageableDefault 로 페이징처리의 옵션을 조정할 수 있다.

그리고 BoardService 에서 boardlist 부분을 수정해주자.

마지막으로 boardlist html 파일을 수정해주자.

그러면 이렇게 페이징 처리가 완료된다

🧑🏻💻 모든 페이지에 빠지지 않는 기능인 검색기능을 추가해보자
먼저 BoardRepository 파일에 findByTitleContaining 메소드를 추가하자.

그리고 BoardService 로 넘어와 boardSearchList 메소드를 추가한다.

Controller에서 searchKey 가 들어왔을 때와 들어오지 않았을 때, 즉 검색을 했을 때와 하지 않았을 때의 페이징 처리를 해주자.

searchKeyword의 유무에 따른 조건문으로 흐름을 제어하였다.

😺 재실행한 후 URL 에 아래와 같이 입력해보자. 키워드가 들어간 제목을 가진 게시물들이 리스트업될 것이다.

하지만 2페이지를 클릭하면 8이 들어간 다음 페이지로 넘어가는 것이 아닌 전체 페이지중 2페이지로 넘어가게 된다. 2페이지를 클릭하면 page=2 만 넘어가게 되고(실제로는 page=1 , 0페이지부터 시작하기때문) searchKeyword 값은 넘어가지 않기 때문이다.
boardlist html 파일의 해당 부분을 아래와 같이 설정하자. 그리고 다시 실행해보자.
이제 페이지를 넘겨도 정상적으로 검색이 된다.

하지만 일일히 searchKeyword 를 변경해가며 검색할 수 없으니, 검색키워드를 입력할 수 있는 칸을 하나 만들어주자.

위와 같이 <form> 테그로 묶어, 검색 버튼을 누르면 searchKeyword 가 값을 받아 해당 키워드를 갖고 있는 게시글을 리스트업할 수 있게 했다.
🐶 이렇게 간단한 게시판 만들기 프로젝트가 끝이 났다. 하지만 여기서 끝은 아니다. 앞으로 이 형태에서 부가기능을 추가하고 수정해 조금 더 볼만한 게시판을 만들고자 한다. 계속 킵고잉~!!!!