MYSQL - utf8
2022. 9. 10. 12:42
MYSQL
utf8mb4_general_ci utf8mb4_bin utf8mb4_unicode_ci utf8mb4_unicode_520_ci 알파벳 대소문자 구분 X O X X 전각/반각 문자 구분 (알파벳, 숫자, 가타가나 등) O O X X emoji 문자 구분 X O X O
JPA - Jpa를 이용한 페이지 처리 및 검색
2022. 9. 9. 12:17
JPA
Bootstrap 에서 페이지 UI 복사 https://getbootstrap.com/docs/5.2/components/pagination/#overview Pagination Documentation and examples for showing pagination to indicate a series of related content exists across multiple pages. getbootstrap.com Previous 1 2 3 Next 페이징 코드 추가 PagingAndSortingRepository repository = // … get access to a bean Page users = repository.findAll(PageRequest.of(1, 20)); BoardCont..
JAVA - Supplier
2022. 9. 8. 17:51
JAVA/Chapter14
Supplier는 인자를 받지 않고 Type T 객체를 리턴하는 함수형 인터페이스다. public interface Supplier { /** * Gets a result. * * @return a result */ T get(); } Example 1 : Supplier "HelloWorld"라는 문자열을 리턴하는 Supplier 예제입니다. Supplier로부터 객체를 리턴받을 때는 get()을 호출하면 됩니다. import java.util.function.Supplier; public class SupplierExample1 { public static void main(String[] args) { Supplier supplier= ()-> "HelloWorld"; String result = ..
JAVA - orElse, orElseGet
2022. 9. 8. 17:45
JAVA/Chapter14
Optional 에는 orElse() 라는 메소드와 orElseGet() 이라는 메소드가 있다. 둘 다 Optional 을 통해 가져온 값이 null 일 때는 해당 값을 반환하라는 메소드다. orElse 와 orElseGet /** * Return the value if present, otherwise return {@code other}. * * @param other the value to be returned if there is no value present, may * be null * @return the value, if present, otherwise {@code other} */ public T orElse(T other) { return value != null ? value : o..
JPA - Jpa를 이용한 RESTful API 만들기
2022. 9. 8. 17:39
JPA
guide에서 카피 해오기 https://spring.io/guides/tutorials/rest/ Building REST services with Spring this tutorial is designed to be completed in 2-3 hours, it provides deeper, in-context explorations of enterprise application development topics, leaving you ready to implement real-world solutions. spring.io BoardApiController.java package com.toy.board.web; import java.util.List; import com.toy.board.dom..
Spring - Controller에서 @Request, GetMapping 이름이 같으면 생기는 에러
2022. 9. 8. 16:20
Spring
to {GET [/api/board]}: There is already 'boardApiController' bean method com.toy.board.web.BoardApiController#all() mapped. Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'boardApiController' method RESTful API 만들다가 생긴 오류 package com.toy.board.web; import java.util.List; import com.toy.board.domain.Board; import com.toy.board...
Bootstrap - form
2022. 9. 8. 13:48
Bootstrap
게시판에 사용할 폼 만들기 https://getbootstrap.com/docs/5.2/forms/form-control/ Form controls Give textual form controls like s and s an upgrade with custom styles, sizing, focus states, and more. getbootstrap.com form 태그 안에 코드 추가 Email address Example textarea form.html 게시판 제목 제목 에러 메시지 내용 내용 에러 메시지 취소 확인 th:classappend="${#fields.hasErrors('title')} ? 'is-invalid'" 제목 에러 메시지 위 코드들 추가 validator 커스텀 하기 Boa..
HTML - <a>
2022. 9. 8. 12:41
HTML
contents 태그는 anchor(닻)의 약어로, 하나의 페이지에서 다른 페이지를 연결할 때 사용하는 하이퍼링크(hyperlink)를 정의할 때 사용합니다. 따라서 태그에는 링크(link)의 목적지를 가리키는 href 속성이 필요합니다. 속성(attributes) 정의 및 형식 속성(attributes)이란 태그에 대해 추가적인 정보를 제공할 때 사용하는 것입니다. 키(key) = "속성 값(value)" 형식으로 속성을 명시할 수 있습니다. 또한 하나의 태그에 속성이 여러 개일 경우, 각 속성은 공백 한 칸으로 구분합니다. 네이버 URL 정의와 종류 다시 href 속성으로 돌아와서, href의 속성 값으로는 URL이 들어갈 수 있습니다. URL에 대해 간단히 설명하자면, 우선 Uniform Resou..
Bootstrap - table, button
2022. 9. 7. 21:08
Bootstrap
application.properties # MySQL 설정 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # DB Source URL 설정 # 예시) spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul spring.datasource.url=jdbc:mysql://localhost:3301/mydb?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul # DB 사용자 이름 설정 # 예시) spring.datasource.username=root sp..
Thymeleaf - 체크 박스 - 멀티
2022. 9. 7. 20:13
Spring/Thymeleaf
● 등록 지역 ● 서울, 부산, 제주 ● 체크 박스로 다중 선택할 수 있다. FormItemController - 추가 @ModelAttribute("regions") public Map regions() { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions; } @ModelAttribute의 특별한 사용법 등록 폼, 상세화면, 수정 폼에서 모두 서울, 부산, 제주라는 체크 박스를 반복해서 보여주어야 한다. 이렇게 하려면 각각의 컨트롤러에서 model.addAttribute(...) 을 사용해서 체크 박스를 구성하는 데..
Thymeleaf - 체크 박스 - 단일2
2022. 9. 7. 11:35
Spring/Thymeleaf
타임리프 - 체크 박스 코드 추가 판매 여부 판매 오픈 타임리프 체크 박스 HTML 생성 결과 판매 여부 판매 오픈 타임리프를 사용하면 체크 박스의 히든 필드와 관련된 부분도 함께 해결해준다. HTML 생성 결과를 보면 히든 필드 부분이 자동으로 생성되어 있다. 실행 로그 FormItemController : item.open=true //체크 박스를 선택하는 경우 FormItemController : item.open=false //체크 박스를 선택하지 않는 경우 상품 상세에 적용하자. item.html 판매 여부 판매 오픈 주의: item.html 에는 th:object 를 사용하지 않았기 때문에 th:field 부분에 ${item.open} 으로 적어주어야 한다. disabled 를 사용해서 상품 ..
Thymeleaf - 체크 박스 - 단일1
2022. 9. 7. 11:30
Spring/Thymeleaf
● 판매 여부 ● 판매 오픈 여부 ● 체크 박스로 선택할 수 있다. ● 등록 지역 ● 서울, 부산, 제주 ● 체크 박스로 다중 선택할 수 있다. ● 상품 종류 ● 도서, 식품, 기타 ● 라디오 버튼으로 하나만 선택할 수 있다. ● 배송 방식 ● 빠른 배송 ● 일반 배송 ● 느린 배송 ● 셀렉트 박스로 하나만 선택할 수 있다. ItemType - 상품 종류 package hello.itemservice.domain.item; public enum ItemType { BOOK("도서"), FOOD("식품"), ETC("기타"); private final String description; ItemType(String description) { this.description = description; } pu..
Thymeleaf - 입력 폼 처리
2022. 9. 7. 10:20
Spring/Thymeleaf
● th:object : 커맨드 객체를 지정한다. ● *{...} : 선택 변수 식이라고 한다. th:object 에서 선택한 객체에 접근한다. ● th:field ● HTML 태그의 id , name , value 속성을 자동으로 처리해준다. 렌더링 전 렌더링 후 등록 폼 th:object 를 적용하려면 먼저 해당 오브젝트 정보를 넘겨주어야 한다. 등록 폼이기 때문에 데이터가 비어있는 빈 오브젝트를 만들어서 뷰에 전달하자. FormItemController 변경 @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item());return "form/addForm"; } form/addForm.ht..
DATABASE - DBMS별 Schema, Database
2022. 9. 7. 09:46
DATABASE
오라클 오라클에서 스키마는 사용자가 생성한 모든 오브젝트(테이블, 인덱스, 프로시저 등)을 의미한다. 데이터베이스는 실제 물리적인 데이터베이스를 의미한다. MySQL/MariaDB 데이터베이스와 스키마가 같은 의미로 테이블 등의 오브젝트 집합 PostgreSql 데이터베이스는 스키마의 상위 개념이다. 데이터베이스가 다르면 완전히 물리적인 분리로 본다. MSSQL(SQL Server) 데이터베이스는 스키마의 상위 개념이다. PostgreSQL과 차이점은 같은 서버의 데이터베이스를 완전히 분맇하지 않는다. 그래서 다른 데이터베이스의 테이블을 조회 및 조인 가능한다. SELECT * FROM DB명.스키마명.테이블명 ※사실 교재 등에서 스키마의 사전적 의미는 외부 스키마, 개념 스키마, 내부 스키마로 나누어집..
HTML - ARIA란
2022. 9. 6. 21:26
HTML
native HTML 요소가 포커스, 키보드 지원, 기본 제공 의미 체계를 제공하기 때문에, 지금까지는 네이티브 HTML 요소 사용을 권장해왔다. 하지만 단순한 레이아웃과 네이티브 HTML로는 작업을 수행하지 못할 때가 있다. 예를 들어서, 현재는 매우 일반적인 UI 구조인 팝업 메뉴에 대해 표준화된 HTML 요소가 없다. 또한, '사용자가 가급적 빨리 이 점에 대해서 알아야 함'과 같은 의미 체계상 특성을 제공하는 HTML 요소 역시 없다. 그럼 HTML이 단독으로 표현할 수 없는 의미 체계를 표현은 어떻게 해야할까? Web Accessibility Initiative(www.w3.org/TR/wai-aria/)의 Accessible Rich Internet Applications (이른 바 ARIA)..
Bootstrap - starter
2022. 9. 6. 12:05
Bootstrap
Starter code 복사하기 https://getbootstrap.com/docs/5.2/getting-started/introduction/ 코드를 복사해 template/index.html 에 복사 예제 탬플릿 부분을 복사 해 붙여넣기 게시판 테스트 package com.toy.board.web; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping public String index() { return "index"; } }
eclipse - Dynamic web Project 가 없을 때
2022. 9. 6. 09:46
설정/Eclipse
1. Help - Instal New Software 2. Work with - 이클립스 버젼 선택 3. 아래 쪽에 Web, XML, Java EE and OSFI Enterprise Development 항목 선택 후 옆의 더보기 화살표 클릭 4. 설치 Eclipse Java EE Developer tools Eclipse Java Web Developer tools Eclipse Web Developer tools Eclipse XSL Developer tools 체크 후 설치
eclipse - "Polling news feeds"
2022. 9. 6. 09:31
설정/Eclipse
[Window] - [Preferences] - [General] - [News] 체크해제 Enable automatic news polling - Apply and Close
V2 - 도메인 생성, Member테스트#2
2022. 9. 5. 12:32
프로젝트/게시판
Member package com.board.domain; import lombok.*; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "member") @Setter @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @..
Spring - java.validation
2022. 9. 5. 11:39
Spring
java.validation 어노테이션 설명 Anotation 제약조건 @NotNull Null 불가 @Null Null만 입력 가능 @NotEmpty Null, 빈 문자열 불가 @NotBlank Null, 빈 문자열, 스페이스만 있는 문자열 불가 @Size(min=,max=) 문자열, 배열등의 크기가 만족하는가? @Pattern(regex=) 정규식을 만족하는가? @Max(숫자) 지정 값 이하인가? @Min(숫자) 지정 값 이상인가 @Future 현재 보다 미래인가? @Past 현재 보다 과거인가? @Positive 양수만 가능 @PositiveOrZero 양수와 0만 가능 @Negative 음수만 가능 @NegativeOrZero 음수와 0만 가능 @Email 이메일 형식만 가능 @Digits(int..