Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
-
[김영한 스프링] 17. 메시지, 국제화 - 웹 애플리케이션에 메시지, 국제화 적용하기Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 28. 23:35
웹 애플리케이션에 메시지 적용하기 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=취소 타임리프 메시지 적용 타임리프의 메시지 표현식 #{...}를 사용하면 스프링의 메시지를 편리하게 조회할 수 있다. 예를 들어서 방금 등록한 상품이라는 이름을 조회하려면 #{label.item}이라고 하면 된다. 렌더링 전 렌더링 후 상품 addForm.html 상품 등록 ..
-
[김영한 스프링] 16. 메시지, 국제화 - 스프링 메시지 소스Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 25. 05:03
스프링 메시지 소스 설정 스프링은 기본적인 메시지 관리 기능을 제공한다. 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면 되는데, MessageSource는 인터페이스이다. 따라서 구현체인 ResourceBundleMessageSource를 스프링 빈으로 등록하면 된다. 직접 등록 @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages", "errors"); messageSource.setDefaultEncoding("utf-..
-
[김영한 스프링] 15. 메시지, 국제화 - 프로젝트 설정 & 세팅 & 메시지, 국제화 소개Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 25. 03:35
프로젝트 설정 이름 변경 다운로드한 파일 중 "message-start"를 원하는 곳으로 이동 후 "message"로 이름변경 참고 : 메시지, 국제화 예제에 집중하기 위해서 복잡한 체크, 셀렉트 박스 관리 기능은 제거했다. 프로젝트 열기 build.gradle 열기 설정 설정 -> 파일 인코딩 -> 프로퍼티 파일에 대한 디폴트 인코딩을 UTF-8로 변경 설정 -> Gradle -> Intelij IDEA로 변경 실행 결과 메시지, 국제화 소개 메지시 악덕? 기획자가 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까? 여러 화면에 보이는 상품명, 가격, 수량 등, label에 있는 단어를 변경하려면 다음 화면들을 다 찾아가면서 모두 변경해야..
-
[김영한 스프링] 14. 타임리프 스프링 통합과 폼 - 라디오 버튼 & 셀렉트 박스Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 25. 02:55
라디오 버튼 라디오 버튼은 여러 선택지 중에 하나를 선택할 때 사용할 수 있다. 이번시간에는 라디오 버튼을 자바 ENUM을 활용해서 개발해 보자. 상품 종류 도서, 식품, 기타 라디오 버튼으로 하나만 선택할 수 있다. FormItemController - 추가 @ModelAttribute("itemTypes") public ItemType[] itemTypes() { ItemType[] values = ItemType.values(); return values; } itemTypes를 등록 폼, 조회, 수정 폼에서 모두 사용하므로 @ModelAttribute의 특별한 사용법을 적용하자. ItemType.values()를 사용하면 해당 ENUM의 모든 정보를 배열로 반환한다. 예) [BOOK, FOOD, ..
-
[김영한 스프링] 13. 타임리프 스프링 통합과 폼 - 멀티 체크 박스Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 23. 04:17
체크 박스 - 멀티 체크 박스를 멀티로 사용해서, 하나 이상을 체크할 수 있도록 해보자 등록 지역 서울, 부산, 제주 체크 박스로 다중 선택할 수 있다 FormItemController - 추가 Map에 지역을 넣는 코드가 중복 입력 됨 스프링이 공통으로 model에 담도록 기능 제공함(아래 코드) @ModelAttribute("regions") public Map regions() { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions; } @ModelAttribute의 특별한 사용법 등록 폼, 상세화면, 수정 폼에서 ..
-
[김영한 스프링] 12. 타임리프 스프링 통합과 폼 - 단일 체크 박스Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 22. 23:09
체크 박스 - 단일1 단순 HTML 체크 박스 addForm.html 판매 여부 판매 오픈 FormItemController 추가 log.info("item.open={}", item.getOpen()); @Slf4j 애노테이션 추가 실행 체크 박스를 체크하면 HTML Form에서 open=on이라는 값이 넘어간다. 스프링은 on이라는 문자를 true타입으로 변환해 준다. (스프링 타입 컨버터가 이 기능을 수행하는데, 뒤에서 설명한다.) 결과 주의 - 체크 박스를 선택하지 않을 때 HTML에서 체크 박스를 선택하지 않고 폼을 전송하면 open이라는 필드 자체가 서버로 전송되지 않는다. HTTP 요청 메시지 로깅 logging.level.org.apache.coyote.http11=debug applica..
-
[김영한 스프링] 11. 타임리프 스프링 통합과 폼 - 입력 폼 처리 & 요구사항 추가Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 21. 22:33
입력 폼 처리 타임리프가 제공하는 입력 폼 기능을 적용해서 기존 프로젝트의 폼 코드를 타임리프가 지원하는 기능을 사용해서 효율적으로 개선해 보자. th:object : 커맨드 객체를 지정한다. *{...} : 선택 변수 식이라고 한다. th:object에서 선택한 객체에 접근한다. th:field HTML 태그의 id, name, value 속성을 자동으로 처리해 준다. 렌더링 전 렌더링 후 등록 폼 th:object를 적용하려면 먼저 해당 오브젝트 정보를 넘겨주어야 한다. 등록 폼이기 때문에 데이터가 비어있는 빈 오브젝트를 만들어서 뷰에 전달하자. FormItemController 변경 @GetMapping("/add") public String addForm(Model model) { model.ad..
-
[김영한 스프링] 10. 타임리프 스프링 통합과 폼 - 프로젝트 설정 & 타임리프 스프링 통합Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 21. 21:33
프로젝트 설정 이름 변경 다운로드한 파일 중 "form-start"를 원하는 곳으로 이동 후 "form"으로 이름변경 프로젝트 열기 build.gradle 열기 실행 ItemServiceApplication 실행 결과 타임리프 스프링 통합 기본 메뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 스프링 통합 메뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 스프링 통합으로 추가되는 기능들 스프링의 SpringEL 문법 통합 ${@myBean.doSomething()}처럼 스프링 빈 호출 지원 편리한 폼 관리를 위한 추가 속성 th:object (기능 강화, 폼..