전체 글
-
[스프링MVC - 2편] 로그인 처리1 - 쿠키, 세션스프링&스프링부트 2025. 3. 4. 20:30
패키지 구조 설계package 구조hello.logindomainitemmemberloginwebitemmemberlogin도메인이 가장 중요하다도메인 = 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말한다 향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 있어야 한다이렇게 하려면 web은 domain을 알고있지만 domain은 web을 모르도록 설계해야 한다이것을 web은 domain을 의존하지만, domain은 web을 의존하지 않는다고 표현한다 홈 화면HomeController - home() 수정@GetMapping("/")public String home() { return "home";} - templates/home.html..
-
[스프링MVC - 2편] 검증 (4)스프링&스프링부트 2025. 3. 2. 16:03
Form 전송 객체 분리 실무에서는 groups를 잘 사용하지 않는데 등록시 폼에서 전달하는 데이터가 Item 도메인 객체와 딱 맞지 않기 때문이다그래서 보통 Item을 직접 전달받는 것이 아니라, 복잡한 폼의 데이터를 컨트롤러까지 전달할 별도의 객체를 만들어서 전달한다폼 데이터 전달에 Item 도메인 객체 사용HTML Form -> Item -> Controller -> Item -> Repository장점: Item 도메인 객체를 컨트롤러, 리포지토리 까지 직접 전달해서 중간에 Item을 만드는 과정이 없어서 간단하다단점: 간단한 경우에만 적용할 수 있다 수정시 검증이 중복될 수 있고, groups를 사용해야 한다폼 데이터 전달을 위한 별도의 객체 사용HTML Form -> ItemSaveForm -..
-
[스프링MVC - 2편] 검증 (3)스프링&스프링부트 2025. 3. 2. 15:37
Bean Validation검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것이 바로 Bean Validation이다Bean Validation을 잘 활용하면, 애노테이션 하나로 검증 로직을 매우 편리하게 적용할 수 있다 Item - Bean Validation 애노테이션 적용public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; @NotNull @Max(9999) private Integer quantity; //...}검증 ..
-
[스프링MVC - 2편] 검증 (2)스프링&스프링부트 2025. 2. 9. 19:27
오류 코드와 메시지 처리 1errors 메시지 파일 생성errors.properties라는 별도의 파일로 관리한다FieldError, ObjectError의 생성자는 codes, arguments를 제공하며 이것은 오류 발생시 오류 코드로 메시지를 찾기 위해 사용된다 스프링 부트 메시지 설정 추가// application.propertiesspring.messages.basename=messages,errors// src/main/resources/errors.propertiesrequired.item.itemName=상품 이름은 필수입니다.range.item.price=가격은 {0} ~ {1} 까지 허용합니다.max.item.quantity=수량은 최대 {0} 까지 허용합니다.totalPriceMin..
-
[스프링MVC - 2편] 검증 (1)스프링&스프링부트 2025. 2. 8. 18:00
검증 요구사항요구사항: 검증 로직 추가 - 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다타입 검증가격, 수량에 문자가 들어가면 검증 오류 처리필드 검증상품명 : 필수, 공백X가격 : 1000원 이상, 1백만원 이하수량 : 최대 9999특정 필드의 범위를 넘어서는 검증가격 * 수량의 합은 10,000원 이상 클라이언트 검증, 서버 검증클라이언트 검증은 조작할 수 있으므로 보안에 취약하다서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다둘을 적절히 섞어서 사용하되, 최종적으로 서버 검증은 필수API 방식을 사용하면 API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에 잘 남겨주어야 함화면 개발자와 함께 업무를 진행했던 프로젝트가 있었다그때 화면쪽에서 이미 검증을 1차적..
-
20250207업무 2025. 2. 8. 16:06
1. locale현재 프로젝트에서는 JDK17 에서 JDK21 버전 업 되었다따라서 개발을 하면서 ASIS 소스를 참고하며 개발하니 오류가 발생한 것은 아니었지만 STS에서 노란색으로 경고를 줬다"The constructor Locale(String, String) is deprecated since version 19add @SuppressWarnings" 찾아보니 JDK 19에서부터 java.util.Locale의 생성자가 사용되지 않는다( Locale 클래스는 Java에서 다국어 지원 및 지역 설정을 위한 핵심적인 클래스이다 )생성자 대신 정적 팩토리 메서드 사용해야 한다 Locale locale = Locale.of(language, country, variant); Locale koLocale..
-
[스프링MVC - 2편] 메시지, 국제화스프링&스프링부트 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..