일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- transaction
- spring
- Servlet
- Greedy
- http
- Proxy
- 스프링 핵심 기능
- jpa
- Exception
- 자바
- Thymeleaf
- pointcut
- 백준
- 알고리즘
- AOP
- db
- 스프링
- 김영한
- QueryDSL
- springdatajpa
- Spring Boot
- kotlin
- 인프런
- 그리디
- 스프링 핵심 원리
- JPQL
- java
- Android
- SpringBoot
- JDBC
- Today
- Total
목록인프런/[인프런] 스프링 MVC 2 (102)
개발자되기 프로젝트
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FsbxS/btrfUNR2dVl/yhTxHMKwdvfnmFeLy0g2q1/img.png)
1. 메시지 추가 messages.properties label.item=상품 label.item.id=상품 ID label.item.itemName=상품명 label.item.price=가격 label.item.quantity=수량 page.items=상품 목록 page.item=상품 상세 page.addItem=상품 등록 page.updateItem=상품 수정 button.save=저장 button.cancel=취소 2. Thymeleaf Message 적용 메시지 표현 식: #{...} #{...}을 사용하면 스프링 메시지 조회 가능. ex) #{label.item} 랜더링 전 랜더링 후 상품 3. 사용 예시 랜더링 전 상품 등록 폼 랜더링 후 상품 등록 해당되는 부분에 모두 적용 ㅋㅋ 4. 잘되는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cjM6c5/btrfQnM1WFX/GggKKU9VfXtvlXHKge9wEk/img.png)
1. MessageSource Interface public interface MessageSource { String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale); String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException; } code와 일부 파라미터로 메세지를 읽어올 수 있는 기능을 제공 2. 예시-기본 앞서 messages.properties에 아래와 같이 등록했다. 여기서 hello는 code, 안녕은 message 이다. hello=안녕 hello..
1. Spring Message Source 설정 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource 를 스프링 빈으로 등록이 필요하다. MessageSource 는 인터페이스이다. 따라서 구현체인 ResourceBundleMessageSource 를 스프링 빈으로 등록하면 된다. 2. 직접 등록 @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages", "errors"); messageSource.setDefaultEncoding("utf-8"); re..
1. 메시지 기능. 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까? 여러 화면에 보이는 상품명, 가격, 수량 등, label 에 있는 단어를 변경하려면 관련있는 모든 화면들을 다 찾아가면서 변경해야 한다. addForm.html , editForm.html , item.html , items.html 귀찮다.. 이렇게 다 바꿔야 하는 이유가 뭘까? 바로 HTML 파일에 메시지가 하드코등 되어있기 때문. 메시지를 한 곳에서 관리하는 기능이 메시지 기능임. 예를들어 message.properties 와 같은 관링용 파일 생성. item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quant..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AKWaA/btrfREAJHMc/ClD5qMCRoiVTk9bDk3X1rK/img.png)
1. 셀렉트 박스 여러 선택지 중 하나를 선택하는 경우. 2. select 박스 추가 배송 방식 빠른 배송 일반 배송 느린 배송 셀렉트 박스로 하나만 선택이 가능. 3. Controller 자바 객체 사용. @ModelAttribute("deliveryCodes") public List deliveryCodes(){ List deliveryCodes = new ArrayList(); deliveryCodes.add(new DeliveryCode("FAST", "빠른 배송")); deliveryCodes.add(new DeliveryCode("NORMAL", "일반 배송")); deliveryCodes.add(new DeliveryCode("SLOW", "느린 배송")); return deliveryCod..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cFROX7/btrfRoYYCKx/wVk5UkukY3PKUlCK23Fc4k/img.png)
1. 라디오 버튼 라디오 버튼은 여러 선택지 중에 하나를 선택할 때 사용할 수 있음 2. 라디오 버튼 추가 상품 종류 도서, 식품, 기타 ENUM 사용 3. Controller @ModelAttribute("itemTypes") 사용 return되는 ItemType.values()를 model의 attribute에 추가함. ItemType.values() -> ENUM의 모든 정보를 배열로 반환. @ModelAttribute("itemTypes") public ItemType[] itemTypes(){ return ItemType.values(); } 4. addForm.html type.name() : enum의 name?? Returns the name of this enum constant, exa..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ORBIi/btrfIZlhWNb/sso50MYU27oDFLMYbGGB80/img.png)
1. 등록지역 추가 등록 지역 서울, 부산, 제주 체크 박스로 다중 선택할 수 있다. 등록 form에서 해당 정보를 추가하기 위해서는 controller에서 넘겨줘야 한다. 2. Controller LinkedHashMap을 사용하여 지역 정보를 넘겨주자. LinkedHashMap을 사용하면 순서대로 들어간다. 순서가 보장된다. Map regions = new LinkedHashMap();//linkedHashMap쓰면 순서대로 들어감.순서보장. regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); model.addAttribute("regions", regions); 하지만 아래 내용이 아이템 상세, 수정에도..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJNP38/btrfuOThztw/m78U8EQcQIlNaOS81qRYwK/img.png)
흠.. 근데 앞의 글 처럼 Single Check box 사용 시 매번 히든 필드를 넣어줘야 하나? 귀찮은데.. Thymeleaf가 제공하는 폼 기능을 사용하면 자동으로 처리 가능. 1. Thymeleaf 적용 1.1 상품 등록 페이지에 적용 적용 전 판매 여부 판매 오픈 적용 후 th:field="${item.open}" 적용 및 name 삭제 th:object="${item}" 지정했기 때문에, th:field="*{open}"으로 수정 가능. 히든필드 삭제. 판매 여부 판매 오픈 랜더링 결과 th:field를 적용 했기 때문에, name과 value도 같이 생성해줌. hidden field도 같이 생성해줌. 와! 판매 여부 판매 오픈 실행결과(check 안함) 2021-09-23 09:54:23..