본문 바로가기

전체 글

(97)
[Spring Boot] CKEditor 이미지 업로드 구현하기 게시판을 이용할 때 글씨에 색을 변경하고 이미지도 업로드하여 게시글을 작성합니다. 이것을 위지윅 에디터(WYSIWYG Editor)라고 하는데, 저는 무료 위지윅 에디터인 CKEditor를 이용하여 Spring Boot에 이미지 업로드를 구현해보겠습니다. 1. CKEditor Download 아래의 경로에서 CKEditor를 다운로드합니다. https://ckeditor.com/ckeditor-4/ CKEditor 4 | Visual Text Editor for HTML Fully Customizable WYSIWYG HTML Editor with the biggest number of Rich Text features. Enterprise-grade with 70 languages and the app..
[Spring Boot] yml, properties 여러개 등록하기 저와 같은 경우 이미지 파일을 저장 할 때 이미지 저장 경로를 깃허브나 외부에 노출하지 않고 싶었기 때문에 properties파일을 여러개를 두어서 gitignore를 하고자 했습니다. 우선 resources파일 아래에 application.yml과 같이 파일을 만들어 줍니다. @SpringBootApplication @EnableJpaAuditing @PropertySource(value = {"classpath:image.properties"}) public class WhiteApplication { public static void main(String[] args) { SpringApplication.run(WhiteApplication.class, args); } } 그리고 @PropertyS..
[JAVA] HashMap HashMap HashMap은 Map인터페이스를 구현한 Map 컬렉션입니다. Map은 키와 값으로 구성된 Entity 객체를 저장하는 구조를 가지고 있는 자료구조입니다. 값은 중복이 가능하지만, 키는 중복 저장을 할 수 없습니다. 만약 기존에 저장된 키와 동일한 키를 저장한다면 기존의 값이 없어지고 새로운 값으로 대체됩니다. getOrDefault getOrDefault (Object key, V defaultValue) 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환합니다. // 문자 c를 HashMap에 넣는다. // HashMap에 해당 문자가 있으면 키의 값 + 1을 반환 // 없으면 0 + 1을 반환한다. for(char c : str.toCharArray()) { map...
[JPA] 영속성 컨텍스트 JPA에서 가장 중요한 것이 2가지 있습니다. 1. 객체와 관계형 데이트베이스 매핑 2. 연속성 컨텍스트 입니다. EntityManagerFactory 요청이 들어올 때마다 EntityManager를 생성해 줍니다. EntityManager 내부적으로 DatabaseConnection을 사용하여 DB에 접근하게 됩니다. 영속성 컨텍스트에 접근할 수 있습니다. 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어입니다. 엔티티를 영구 저장하는 환경이라는 뜻입니다. EntityManager.persist (entity); DB에 저장한다는 것이 아니라 persist는 영속성 컨텍스트에 저장합니다. 영속성 컨텍스트는 논리적인 개념입니다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근합니다. 엔티티 생명주기 비..
[JPA] Auditing 데이터의 기록을 남길 때 보통 공통적으로 가지고있는 컬럼이 있습니다. 바로 생성일자, 수정일자 등이 있습니다. JPA에서는 Audit라는 기능을 제공하고있는데, 이것은 JPA에서 도메인을 영속성 컨텍스트에 저장하거나 혹은 업데이트를 하는 경우에 자동으로 값을 넣어주는 편리한 기능입니다. 1. @EnableJpaAuditing 추가 @EnableJpaAuditing 어토네이션을 추가합니다. @SpringBootApplication @EnableJpaAuditing public class WhiteApplication { public static void main(String[] args) { SpringApplication.run(WhiteApplication.class, args); } } 2. Audi..
[Thymeleaf] 반복문 each와 href에서 변수 값을 넘기는 방법 1 MarkDown 반복문 반복문을 할 경우 th:each를 사용하며 model에서 넘어온 변수는 '$'를 붙여주어야 한다. 그리고 값을 화면에 띄울때는 th:text를 사용하며 이것또한 '$'를 앞에 붙여주어야 한다. href 변수 href를 이용해 URL을 입력 시 th:href를 사용하며 앞에 '@'를 붙어야 한다. 그리고 서버에 넘길 값이 있다면 변수를 { }안에 입력하고 { }안에 값은 ( )에서 처리한다. 그리고 앞에 '$'를 붙여야 한다.
[백준] 1316번 그룹 단어 체커 - JAVA 문제 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 저는 자바의 indexOf를 사용하였습니다. indexOf는 문자의 인덱스 번호를 구하는데 만약 중복된 문자가 있으면 최초의 해당 문자의 인덱스 번호를 알려줍니다. 그래서, 이것을 이용해 문자의 인덱스 번호가 현재 for문의 j와 작을 때 (일치하지 않을 때) 그 전 문자와 이어지는 확인 후 같지 않다면 false로 하여 정답인 answer가 올라가지 않도록 ..
[Thymeleaf] Form 태그 작성 @GetMapping("/admin/category/new") public String categoryForm(Model model){ model.addAttribute("categoryForm", new CategoryDto()); return "admin/adminCategoryForm"; } 페이지에 접근 할 때, Controller에서 객체를 하나 만들어 model객체에 담아줍니다. CategoryDto에는 name과 orderNum이 있습니다. 카테고리 이름 순서 저장 알아볼 것 1. th:action = "@{ }" HTML에서 action과 같은 역할을 하며 URL이전에 '@'를 붙입니다. 2. th:object= "${ }" 여기서 categoryForm은 Controller에서 model..