전체 글
-
Spring MVC - 타임리프로 MessageSource에 등록된 메시지 사용하기Spring/Spring MVC 2022. 2. 5. 13:31
타임리프에서 메시지 사용하기 타임리프의 메시지 표현식 #{ ... } 를 사용하면 스프링의 메시지를 편리하게 조회할 수 있다. 아래 두 properties 파일을 만들어 간단하게 사용방법을 알아보자. messages.properties hello=안녕 메시지 hello.name=안녕 메시지 {0} label.item.itemName=상품명 messages_en.properties hello=hello message hello.name=hello message {0} label.item.itemName=Item Name 타임리프를 이용한 메시지(message) 조회 메시지 표현식 #{ ... } 를 사용하여 메시지 조회 서버를 가동시켜 웹브라우저에서 HTML의 소스 코드를 보면 다음과 같다. 안녕 메시지 ..
-
Spring MVC - 스프링에서 제공하는 MessageSource 사용 방법 (메시지와 국제화 기능)Spring/Spring MVC 2022. 2. 5. 03:04
MessageSource 설정 MessageSource 사용 메시지(Message)와 국제화 기능 HTML이나 Java에서 사용하는 메시지를 관리해주는 것이 메시지 기능이다. 예를 들어 특정 메시지가 한 곳이 아닌 여러 곳에서 사용하고 있을 때, 수정이 필요하면 각 파일마다 해당 메시지를 찾아서 수정해야 한다. 1~2개면 괜찮겠지만 수십 곳에서 사용한다면 찾아서 수정하는 게 여간 불편한 게 아니다. 이러한 불편함을 스프링이 기본적인 메시지와 국제화 기능을 모두 제공하고, 타임리프도 스프링에서 제공하는 메시지와 국제화 기능을 편리하게 사용할 수 있도록 제공한다. 국제화 기능이란 메시지 파일을 각 나라별로 관리하는 기능을 말한다. 서버는 HTTP accept-language 해더 값을 이용하여 해당하는 me..
-
Spring MVC - 타임리프(Thymeleaf)을 사용한 Select box(셀렉트 박스)Spring/Spring MVC 2022. 2. 4. 17:29
타임리프(Thymeleaf)를 사용한 Select box(셀렉트 박스) 셀렉트 박스는 여러 선택지 중에 하나를 선택할 때 사용할 수 있다. 자바 객체를 활용해서 셀렉트 박스를 사용해 보자. /** * FAST: 빠른 배송 * NORMAL: 일반 배송 * SLOW: 느린 배송 */ @Data @AllArgsConstructor public class DeliveryCode { private String code; private String displayName; } Select Box을 설명하기 위해 생성한 클래스 @ModelAttribute("deliveryCodes") public List deliveryCodes() { List deliveryCodes = new ArrayList(); deliver..
-
Spring MVC - 타임리프(Thymeleaf)을 사용한 Radio button(라디오 버튼)Spring/Spring MVC 2022. 2. 4. 16:39
타임리프(Thymeleaf)을 사용한 Radio button(라디오 버튼) 라디오 버튼은 여러 선택지 중에 하나를 선택할 때 사용할 수 있다. 자바 Enum을 활용해서 라디오 버튼을 사용해 보자 public enum ItemType { BOOK("도서"), FOOD("식품"), ETC("기타"); private final String description; ItemType(String description) { this.description = description; } public String getDescription() { return description; } } Radio Button을 설명하기위해 생성한 Enum 클래스 @ModelAttribute("itemTypes") public ItemT..
-
Spring MVC - 타임리프(Thymeleaf)을 사용한 multi checkbox(멀티 체크박스)Spring/Spring MVC 2022. 2. 4. 16:08
타임리프(Thymeleaf)를 사용한 multi checkbox 위 이미지와 같이 checkbox를 1개 이상 사용하는 멀티 checkbox를 어떻게 사용하는지에 대해 알아보자. @ModelAttribute("regions") public Map regions(){ Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions; } 컨트롤이 호출할 때마다 자동으로 실행되어 Model에 return 된 객체를 담아준다. 호출되는 컨트롤러 내부에 작성 multi checkbox를 설명하기위해 작성한 코드로 좋은 방법은 아니다. th:e..
-
Spring MVC - 타임리프(Thymeleaf)을 사용한 단일 checkboxSpring/Spring MVC 2022. 2. 4. 14:38
단일 체크 박스를 타임리프로 사용하기 전에 기본적인 단일 체크 박스가 스프링에서 어떻게 동작하는지 알아보자 판매 여부 판매 오픈 form 안에 위 코드를 삽입하여 값이 잘 넘어오는지 logging을 통해 확인해보면 다음과 같다. checkbox를 체크하면 HTML Form에서 open=on 이라는 값이 넘어간다. 스프링은 이 on이라는 문자를 Boolean 데이터 타입인 true 값으로 자동 변환해준다. 그런데 checkbox를 체크하지 않으면 HTML Form은 open이라는 필드 자체를 서버로 전송은 하지 않아 logging으로 확인해보면 null값인 것을 확인할 수 있다. 여기서 문제가 발생하는데 만약 수정 Form에서 checkbox가 체크가 되어있는 것을 체크 해제하고 수정했을 시 checkbo..
-
Spring MVC - 타임리프(Thymeleaf)를 이용한 입력 폼(Form) 사용법Spring/Spring MVC 2022. 2. 4. 12:13
타임리프(Thymeleaf)를 이용한 입력 폼(Form) 사용법 th:object - 커멘드 객체를 지정하여 Form에서 사용 *{ ... } - 선택 변수식이라고 한다. th:object 에서 선택한 객체를 편리하게 프로퍼티 접근법을 이용할 수 있다. th:field - HTML 태그의 id, name, value 속성을 자동으로 처리해 준다. 등록 form 사용 예시 th:action - 값을 안 넣어주면 같은 URL에 POST 메서드 방식으로 요청한다. th:object="${item}" - request 영역에 저장되어있는 item 객체를 가져온다 - 해당 폼에서 item 객체 사용 가능 th:field="*{itemName}" - 선택 변수 식이라고 한다. th:object에서 선택한 객체 프로..
-
JDBC - CRUD INSERT, UPDATE, DELETEservlet/JDBC 2022. 2. 4. 01:31
우선 쿼리문을 xml 파일에 작성 INSERT INTO TBL_MENU A ( A.MENU_CODE , A.MENU_NAME , A.MENU_PRICE , A.CATEGORY_CODE , A.ORDERABLE_STATUS ) VALUES ( SEQ_MENU_CODE.NEXTVAL , ? , ? , ? , ? ) UPDATE TBL_MENU A SET A.MENU_NAME = ? , A.MENU_PRICE = ? WHERE A.MENU_CODE = ? DELETE FROM TBL_MENU A WHERE A.MENU_CODE = ? 참고 SELECT 수행 시에는 결과 값 ResultSet 인터페이스를 사용했지만 insert/update/delete에서는 ResultSet 은 필요가 없다 INSERT, UPD..