본문 바로가기

스프링 부트(Spring Boot)27

스프링 부트(Spring Boot) 게시판 - 첨부파일 다운로드하기 (다중 파일 업로드 & 다운로드 구현하기 3/3) [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 게시글에 등록된 첨부파일을 상세 페이지에서 조회하는 방법과, 게시글을 수정할 때 기존에 등록된 첨부파일을 유지하는 방법, 그리고 첨부파일을 추가/변경/삭제하는 방법을 알아보았습니다. 이번에는 다중 첨부파일 업로드/다운로드 처리 중 마지막 단계인, 첨부파일을 다운로드하는 방법을 알아볼 건데요. 파일 다운로드 기능은 업로드 처리에 비해 비교적 로직이 간단합니다. 1. FileMapper 인터페.. 2023. 6. 12.
스프링 부트(Spring Boot) 게시판 - 첨부파일 추가/수정/삭제 및 기존 파일 유지하기 (다중 파일 업로드 & 다운로드 구현하기 2/3) [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 첨부파일 관리용 테이블(tb_file)을 생성하고, 애플리케이션 전역에서 사용할 수 있는 파일 업로드용 유틸 클래스를 구현해서 첨부파일을 다중으로 업로드하는 방법을 알아보았습니다. 이번에는 게시글에 등록된 첨부파일을 상세 페이지에 출력해 주는 기능을 우선적으로 구현하고, 기존에 첨부파일이 업로드된 게시글을 수정할 때 첨부파일을 추가/변경/삭제하는 방법과, 파일에 변화가 없을 때 기존 첨부파.. 2023. 6. 3.
스프링 부트(Spring Boot) 게시판 - 다중 첨부파일 업로드하기 (다중 파일 업로드 & 다운로드 구현하기 1/3) [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글까지는 게시판에 회원 기능을 구현하고, 인터셉터와 세션을 이용해서 로그인이 되지 않은 회원은 게시판을 이용할 수 없도록 처리해 보았습니다. 지금부터는 본 글을 시작으로 총 세 번에 걸쳐 파일 업로드/다운로드 기능을 구현해 볼 건데요. 단일 파일의 경우에는 게시글(tb_post) 테이블 하나로 처리가 가능하지만, 댓글과 같이 하나의 게시글에서 여러 개의 파일을 관리할 수 있도록 다중으로 파일을 업로.. 2023. 5. 19.
스프링 부트(Spring Boot) 게시판 - 로그인/로그아웃 & 로그인 세션(Login session) 체크 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 회원 테이블을 생성하고, 레이어 팝업을 이용해 회원가입 기능을 구현해 보았습니다. 이번에는 로그인과 로그아웃 기능을 구현하고, 인터셉터를 이용해서 로그인이 되어있지 않은 경우에는 게시판에 접근할 수 없도록 컨트롤해 보도록 하겠습니다. 1. MemberService - 로그인 메서드 추가하기 먼저 MemberService에 아래 메서드를 추가해 주세요. /** * 로그인 * @param lo.. 2023. 5. 11.
스프링 부트(Spring Boot) 게시판 - 회원가입 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 History API를 이용해서 비동기(Ajax) 페이징 처리의 새로고침 문제를 해결해 보았습니다. 이번을 포함해서 두 차례예 걸쳐 게시판에 회원 기능을 적용해 볼 건데요. 본 글에서는 DB에 회원 데이터를 관리할 테이블을 생성한 후 회원가입 기능을 구현해 보도록 하겠습니다. 1. 회원 테이블 칼럼 구조 아래 표는 회원 테이블의 전체 칼럼 구조입니다. 칼럼 설명 id 테이블의 PK(Prim.. 2023. 5. 9.
스프링 부트(Spring Boot) 게시판 - Ajax(비동기) 페이징 새로고침 시 페이지 번호 유지하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 jQuery의 Ajax를 이용해서 REST API 방식으로 댓글에 페이징을 적용해 보았습니다. 하지만 개선해야 할 점이 한 가지 남아있습니다. 게시글과 같은 동기 처리는 페이지를 이동하는 시점에 주소(URL)가 변경되기 때문에 브라우저를 새로고침 해도 페이지 번호와 검색 조건이 유지되지만, Ajax는 페이지 번호에 해당되는 데이터를 조회하되 주소는 변경되지 않기 때문에 브라우저를 새로고침 .. 2023. 5. 1.
스프링 부트(Spring Boot) 게시판 - REST API 방식으로 댓글 페이징(Paging) 처리하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 댓글 삭제 기능을 구현했고, 이를 끝으로 댓글 CRUD 처리가 모두 완료되었습니다. 이번에는 게시글 페이징과 검색 처리에서 구현한 클래스들을 이용해서 댓글에 페이징을 적용해 볼 건데요. 지금까지와 마찬가지로 jQuery의 Ajax를 이용해서 화면의 움직임 없이 페이지를 이동하도록 처리해 보도록 하겠습니다. 1. 댓글 조회용 DTO 클래스 생성하기 우선 java 디렉터리에 다음의 클래스를 생.. 2023. 4. 25.
스프링 부트(Spring Boot) 게시판 - REST API 방식으로 댓글 삭제 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 흔히 모달(Modal)이라고 불리는 레이어 팝업(Layer Popup)을 이용해서 기존에 등록된 댓글을 수정하는 기능을 구현해 보았습니다. 이번에는 댓글 CRUD의 마지막 단계인 댓글 삭제 기능을 구현해 보겠습니다. 1. 댓글 API 컨트롤러(Controller) - 메서드 추가하기 우선 CommentApiController에 다음의 메서드를 추가해 주세요. // 댓글 삭제 @DeleteM.. 2023. 4. 24.
스프링 부트(Spring Boot) 게시판 - REST API 방식으로 댓글 수정 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 특정 게시글에 등록된 댓글 리스트(목록)를 출력하는 기능을 구현해 보았습니다. 이번에는 기존에 등록된 댓글을 수정하는 기능을 구현해 볼 건데요. 흔히 모달(Modal)이라고 불리는 레이어 팝업(Layer Popup)을 이용해 보겠습니다. 1. 댓글 API 컨트롤러(Controller) - 메서드 추가하기 CommentApiController에 다음의 두 메서드를 추가해 주세요. // 댓글 .. 2023. 4. 20.
스프링 부트(Spring Boot) 게시판 - REST API 방식으로 댓글 리스트(목록) 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 @RestController와 jQuery의 Ajax를 이용해서 화면의 움직임(이동 또는 새로고침) 없이 댓글을 등록하는 기능을 구현해 보았습니다. 이번에는 특정 게시글에 등록된 댓글을 출력하는 기능을 구현해 볼 건데요. 게시글의 경우, 게시글이 생성/수정/삭제되는 시점에 리스트 페이지로 리다이렉트 하도록 처리했었습니다. 댓글은 등록/수정/삭제된 시점에 페이지를 이동하거나 새로고침 하지 않.. 2023. 4. 20.