Spring 썸네일형 리스트형 (IntelliJ) 게시글 삭제 화면 구현 1. 게시글 삭제 1) posts-update.mustache 화면 수정 경로 >> src/main/resources/templates/posts-update.mustache {{>layout/header}} 게시글 수정 글 번호 제목 작성자 내용 {{post.content}} 취소 수정 완료 삭제 {{>layout/footer}} 2) Index.js - 삭제 기능 추가 경로 >> src/main/resources/static/js/app/index.js var main = { init : function () { var _this = this; // 생성 $('#btn-save').on('click', function () { _this.save(); }); // 수정 $('#btn-update')... 더보기 (IntelliJ) 게시글 수정 화면 만들기 1. 게시글 수정 1) 수정 페이지 경로 >> src/main/resources/templates/posts-update.mustache {{>layout/header}} 게시글 수정 글 번호 제목 작성자 내용 {{post.content}} 취소 수정 완료 {{>layout/footer}} - {{post.id}} : 머스테치는 객체의 필드 접근 시 점(Dot)으로 구분 - readonly : Input 태그에 읽기 기능만 허용하는 속성, id와 author는 수정할 수 없도록 읽기만 허용하도록 추가 2) update function 기능 추가 경로 >> src/main/resources/static/js/app/index.js var main = { init : function () { var _thi.. 더보기 (IntelliJ) 전체 조회 화면 만들기 1. 전체 조회 1) 조회 UI 경로 >> src/main/resources/templates/index.mustache {{>layout/header}} 스프링 부트로 시작하는 웹 서비스 Ver.2 글 등록 게시글번호 제목 작성자 최종수정일 {{#posts}} {{id}} {{title}} {{author}} {{modifiedDate}} {{/posts}} {{>layout/footer}} 1) {{#posts}} : posts 라는 List를 순회합니다. (Java의 for 문과 동일) 2) {{변수명}} : List에서 뽑아낸 객체의 필드를 사용 2) PostsRepository 쿼리 추가 경로 >> src/main/java/com/project/spring/springboot/domain/pos.. 더보기 (IntelliJ) 머스테치로 화면 구성 1. 템플릿 엔진 >> 지정된 템플릿 양식과 데이터가 합쳐저 HTML 문서를 출력하는 소프트웨어 * 서버 템플릿 엔진 vs 클라이언트 템플릿 엔진 서버 템플릿 엔진 클라이언트 템플릿 엔진 종류 JSP, Freemarker React.js, Vue.js 구동 위치 서버 브라우저 화면 생성 JAVA 코드 > 문자열 생성 > HTML 변환 > 브라우저 전달 Json or Xml 형식의 데이터만 전달 > 클라이언트에서 조립 (서버에서 이미 코드가 벗어난 경우) 실행 WAS에서 실행(새로고침 필요o) 웹 브라우저에서 실행(새로고침 필요x) 언어 자바 문법 자바스크립트 언어 2. Mustache (머스테치) : 수많은 언어를 지원하는 가장 심플한 템플릿 엔진 - 필요에 따라 서버 템플릿 엔진 혹은 클라인언트 템플릿.. 더보기 (IntelliJ) JPA Auditing으로 생성/수정 시간 자동화 - 보통 엔티티에는 해당 데이터의 생성시간과 수정시간을 포함합니다. - 이는 차후 유지보수에 있어 중요한 정보이기 때문인데, - 이 과정이 DB에 삽입하기 전, 갱신하기 전에 날짜 데이터를 등록/수정하는 코드가 여기저기 들어가게 됩니다. - 이렇게 되면 반복적인 작업이 많아져 번거러워 지고 코드가 지저분해집니다. >> 이러한 문제들을 해결하기 위해 JPA Auditing 을 사용합니다 JPA Auditing 이란?? >> Java에서 ORM(객체-관계 매핑) 기술인 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재합니다. 대표적으로 생성일자, 수정일자, 식별자 같은 필드 및 컬럼이 존재합니다. 도메인마다 공통으로 존재한다는 의미는 결.. 더보기 (IntelliJ) H2 Console 사용 방법 1. H2 웹 콘솔 사용하기 1-1) application.properties spring.h2.console.enabled=true - h2 console 사용 활성화 1-2) build.gradle // 첫 번째 방법 runtimeOnly 'com.h2database:h2' // 두 번째 방법 runtimeOnly 'com.h2database:h2:1.4.197' - h2database를 사용하나는 설정 * 기본적으론 'com.h2database:h2' 까지만 입력하지만 저는 이렇게 했을 경우 오류(?)가 발생하여 뒤에 버전까지 상세히 입력하였습니다. 혹시 위와 같은 오류(?)가 발생하시면 위 코드를 두 번째 코드를 입력하셔서 사용하시면 됩니다. 단, 두 번째 방법시 1.4.198 보다 버전을 낮게 .. 더보기 (IntelliJ) 수정 API 만들기 1. 수정 API 생성 1-1) PostsApiController 경로 : src/main/java/com/project/spring/springboot/web/PostsApiController import com.project.spring.springboot.service.PostsService; import com.project.spring.springboot.web.dto.PostsResponseDto; import com.project.spring.springboot.web.dto.PostsSaveRequestDto; import com.project.spring.springboot.web.dto.PostsUpdateRequestDto; import lombok.RequiredArgsConstru.. 더보기 (IntelliJ) 등록 API 만들기 - API를 만들기 위해 총 3개의 클래스가 필요합니다. Request 데이터를 받을 Dto API 요청을 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service * Service에서 비지니스 로직을 처리하는 것이 아닌 트랜잭션, 도메인 간 순서 보장의 역할만을 수행합니다. >> 그럼 비지니스 로직은 누가 처리하냐?? Domain 1) Web Layer : 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역 : 이외에도 필터, 인터셉터, 컨트롤러 어드바이스 등 외부 요청과 응답에 대한 전반적인 영역을 이야기합니다. 2) Service Layer : @Service에 사용되는 서비스 영역 : 일반적으로 Controller 와 Dao .. 더보기 이전 1 2 다음