본문 바로가기

분류 전체보기376

[MVC] 검증1 - Validation(1) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 검증 직접 처리 이번에는 스프링이 제공하는 기능을 사용하지 않고, 컨트롤러에서 직접 검증을 구현하는 방식으로 상품 등록 검증 로직을 작성해 본다. 검증 요구사항 정리상품명: 필수, 공백 불가가격: 1,000원 이상, 1,000,000원 이하수량: 최대 9,999복합 조건: 가격 * 수량의 합은 10,000원 이상1. 컨트롤러 수정컨트롤러에서 직접 검증 로직을 구현한다.@PostMapping("/add")public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { Map errors = new HashMap();.. 2025. 7. 3.
[MVC] 타임리프 - 메시지, 국제화 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 메시지, 국제화 소개메시지 기능이란?애플리케이션을 개발하다 보면 사용자 화면(UI)에 출력되는 텍스트가 수시로 바뀌는 일이 자주 발생한다.예를 들어 상품명이라는 단어를 모두 상품이름으로 바꿔달라는 요청이 들어왔다고 가정해보자.다음과 같은 HTML 파일들에 하드코딩된 텍스트를 모두 찾아서 변경해야 한다.addForm.htmleditForm.htmlitem.htmlitems.html하드코딩된 메시지를 직접 수정하는 방식은 다음과 같은 문제를 가진다.화면 수가 많아질수록 수정 범위가 커진다.실수로 일부 화면을 누락할 가능성이 있다.변경 내역 추적이나 관리가 어렵다.이러한 문제를 해결하기 위해 메시지 기능을 사용한다.메시지는 화면에 출력될 텍스.. 2025. 6. 29.
[MVC] 타임리프 - 스프링 통합과 폼(2) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 체크 박스 - 단일1HTML에서 체크박스를 사용할 때, 체크 여부에 따라 서버로 전달되는 값의 유무와 스프링 MVC의 처리 방식을 이해해야 한다. 단순 HTML 체크박스 예제resources/templates/form/addForm.html판매 여부 판매 오픈 서버 로그 확인FormItemController@PostMapping("/add")public String addItem(Item item, RedirectAttributes redirectAttributes) { log.info("item.open={}", item.getOpen()); ...}클래스에 @Slf4j 어노테이션을 .. 2025. 6. 24.
[MVC] 타임리프 - 스프링 통합과 폼(1) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 입력 폼 처리타임리프가 제공하는 입력 폼 기능을 사용해 기존 HTML 폼을 효율적으로 개선할 수 있다. th:object, th:field, *{} 같은 기능을 활용하면 반복되는 폼 요소 설정을 자동화할 수 있다. 선택 변수 식과 th:fieldth:object : 폼에서 사용할 커맨드 객체를 지정한다.*{...} : 선택 변수 식으로, th:object에서 지정한 객체의 필드를 의미한다.th:field : HTML 태그의 id, name, value 속성을 자동으로 생성해준다.예시렌더링 전 렌더링 후 등록 폼빈 객체를 모델에 담아 폼에 넘긴다. FormItemController@GetMapping("/add")public String .. 2025. 6. 21.
[MVC] 타임리프 - 기본 기능(4) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 템플릿 조각웹 페이지에는 여러 페이지에서 공통으로 사용하는 UI 요소(헤더, 푸터, 사이드바 등)가 존재한다. 이를 매번 복사해서 사용하면 유지보수가 어렵고 비효율적이다. 타임리프는 이를 해결하기 위해 템플릿 조각(Fragment) 기능을 제공한다. 예제 컨트롤러@Controller@RequestMapping("/template")public class TemplateController { @GetMapping("/fragment") public String template() { return "template/fragment/fragmentMain"; }} 조각 템플릿 정의: footer.html 푸터.. 2025. 6. 17.
[MVC] 타임리프 - 기본 기능(3) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 조건부 평가타임리프에서는 조건에 따라 HTML 태그를 출력하거나 생략할 수 있는 다양한 방법을 제공한다. 대표적으로 th:if, th:unless, th:switch, th:case 등이 있다. 예제 컨트롤러@GetMapping("/condition")public String condition(Model model) { addUsers(model); return "basic/condition";} 예제 템플릿if, unless count username age 1 username 0 switch count username a.. 2025. 6. 14.