Spring&SpringBoot
-
[스프링MVC - 2편] 검증 (1)Spring&SpringBoot 2025. 2. 8. 18:00
검증 요구사항요구사항: 검증 로직 추가 - 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다타입 검증가격, 수량에 문자가 들어가면 검증 오류 처리필드 검증상품명 : 필수, 공백X가격 : 1000원 이상, 1백만원 이하수량 : 최대 9999특정 필드의 범위를 넘어서는 검증가격 * 수량의 합은 10,000원 이상 클라이언트 검증, 서버 검증클라이언트 검증은 조작할 수 있으므로 보안에 취약하다서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다둘을 적절히 섞어서 사용하되, 최종적으로 서버 검증은 필수API 방식을 사용하면 API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에 잘 남겨주어야 함화면 개발자와 함께 업무를 진행했던 프로젝트가 있었다그때 화면쪽에서 이미 검증을 1차적..
-
[스프링MVC - 2편] 메시지, 국제화Spring&SpringBoot 2025. 2. 4. 20:21
메시지, 국제화 소개다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다 예를 들어서 messages.properties 라는 메시지 관리용 파일을 만들고 각 HTML들은 다음과 같이 해당 데이터를 key 값으로 불러서 사용하는 것이다// messages.propertiesitem=상품item.id=상품 IDitem.itemName=상품명item.price=가격item.quantity=수량addForm.html - editForm.html - 국제화메시지에서 설명한 메시지 파일(messages.properties)을 각 나라별로 별도로 관리하면 서비스를 국제화 할 수있다// messages_en.propertiesitem=Itemitem.id=Item IDitem.itemName=I..
-
[스프링MVC - 2편] 타임리프 스프링 통합 (2)Spring&SpringBoot 2025. 2. 2. 14:07
체크 박스 - 멀티FormItemController - 추가@ModelAttribute("regions")public Map regions() { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions;}@ModelAttribute의 특별한 사용법등록 폼, 상세화면, 수정 폼에서 모두 서울, 부산, 제주라는 체크 박스를 반복해서 보여주어야 한다이렇게 하려면 각각의 컨트롤러에서 model.addAttribute(...)을 사용해서 체크 박스를 구성하는 데이터를 반복해서 넣어주어야 한다 @ModelAttribute는 이렇게 컨트..
-
[스프링MVC - 2편] 타임리프 스프링 통합 (2)Spring&SpringBoot 2025. 2. 2. 14:07
체크 박스 - 멀티FormItemController - 추가@ModelAttribute("regions")public Map regions() { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions;}@ModelAttribute의 특별한 사용법등록 폼, 상세화면, 수정 폼에서 모두 서울, 부산, 제주라는 체크 박스를 반복해서 보여주어야 한다이렇게 하려면 각각의 컨트롤러에서 model.addAttribute(...)을 사용해서 체크 박스를 구성하는 데이터를 반복해서 넣어주어야 한다 @ModelAttribute는 이렇게 컨트..
-
[스프링MVC - 2편] 타임리프 스프링 통합 (1)Spring&SpringBoot 2025. 2. 1. 17:45
타임리프 스프링 통합타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다 스프링 통합으로 추가되는 기능들스프링의 SpringEL 문법 통합${@myBean.doSomething()}처럼 스프링 빈 호출 지원편리한 폼 관리를 위한 추가 속성th:object (기능 강화, 폼 커맨드 객체 선택)th:field, th:errors, th:errorclass폼 컴포넌트 기능checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원스프링의 메시지, 국제화 기능의 편리한 통합스프링의 검증, 오류 처리 통합스프링의 변환 서비스 통합(ConversionService) 1. 입력 폼 처리th:object : 커맨드 객체를 지정한다*{...} : 선..
-
[스프링MVC - 2편] 타임리프 기본기능 (2)Spring&SpringBoot 2025. 2. 1. 15:24
연산BasicController 추가@GetMapping("/operation")public String operation(Model model) { model.addAttribute("nullData", null); model.addAttribute("data", "Spring!"); return "basic/operation";} 산술 연산 10 + 2 = 10 % 2 == 0 = 비교 연산 1 > 10 = 1 gt 10 = 1 >= 10 = = 10"> 1 ge 10 = 1 ==..
-
[스프링MVC - 2편] 타임리프 기본기능 (1)Spring&SpringBoot 2025. 1. 31. 11:44
타임리프 소개타임리프 특징서버 사이드 HTML 렌더링 (SSR)네츄럴 템플릿스프링 통합 지원 1. 서버 사이드 HTML 렌더링 (SSR)타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다 2. 네츄럴 템플릿타임리프는 순수 HTML을 최대한 유지하는 특징이 있다타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다이렇게 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 타임리프의 특징을 네츄럴 템플릿(natural templates)이라 한다 3. 스프링 통합 지원타임리프는 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 ..
-
[스프링MVC - 1편] 스프링 MVC - 웹 페이지 만들기 (2)Spring&SpringBoot 2025. 1. 30. 19:33
상품 목록 - 타임리프BasicItemController@Controller@RequestMapping("/basic/items")@RequiredArgsConstructorpublic class BasicItemController { private final ItemRepository itemRepository; @GetMapping public String items(Model model) { List items = itemRepository.findAll(); model.addAttribute("items", items); return "basic/items"; } // 테스터용 데이터 추가 @PostConstruct pub..