Web/Spring
-
Spring MVC 2 - 검증 (2) BeanValidationWeb/Spring 2023. 10. 25. 12:47
1. Bean Validation이란 - 검증로직은 대부분 비슷함! 일반적인 로직이다. - 이러한 검증로직을 모든 프로젝트에 적용할 수 있도록 공통화하고 표준화 한 것이 Bean Validation이다. - Bean Validation은 기술 표준임 -> 여러 검증 애노테이션과 인터페이스의 모음 [구현체 하이버네이트 Validator] (ex JAP가 표준기술 -> 구현체 하이버네이트) 2. Bean Validation 시작 - 순수 BeanValidation (쓰려면, 의존관계 gradle에 추가하자) - 검증 애노테이션 @NotBlank : 빈값 + 공백만 있는 경우 @NotNull: null을 허용하지않는다. @Range(min,max) : 범위 안의 값 @Max(9999) : 최대 9999까지만 ..
-
SpringMVC 2 - 검증Web/Spring 2023. 10. 24. 22:17
- 고객이 입력한 데이터를 유지한 채 어떤 오류가 발생했는지 친절하게 알려주자 - 컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것 1. 검증 V1 (직접검증) - 사용자의 데이터가 정상이면, PRG - 정상이 아니면, 모델에 사용자 입력 값과 오류 결과를 담아서 다시 상품등록폼으로 가자 Map errors = new HashMap(); // 오류 담을 것 1.1 특정 필드 검증로직 if (!StringUtils.hasText(item.getItemName())) { errors.put("itemName", "상품 이름은 필수입니다."); //필드와 에러메시지 맵핑 } if (item.getPrice() == null || item.getPrice() < 1000 || item.ge..
-
Spring MVC 2 - 국제화/메시지Web/Spring 2023. 10. 24. 14:44
1. 메시지/국제화 기능이란 - 만약 html에 출력하는 상품명 -> 상품이름으로 모두 고쳐야할 경우 - 모든 상품명에 찾아서 이를 모두 수정해야한다. (하드코딩 되어 있다) - 메시지는 이러한 것들을 한번에 관리하도록 기능을 제공한다. item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 addForm.html editFrom.html - 국제화는 이러한 메시지 기능에서 한발 더 나아가, 나라별로 보여줄 메시지를 한번에 관리할 수 있게한다. - acept-language값을 사용하거나, 사용자가 선택하도록하여 쉽게 다른 언어로 치환할 수 있다. 2. 스프링 메시지 소스 설정 - 스프링은 기본적인 메시지 관리 기능을 제공한다. Me..
-
스프링 MVC - 웹 페이지 만들기Web/Spring 2023. 10. 15. 16:15
1. 프로젝트 생성 스프링 부트 2.7, packaging Jar, dependencies: Spring Web, Thymeleaf,Lombok 1.1 /resources/static/index.html -> 웰컴페이지 추가함 2. 요구사항 분석 상품을 관리할 수 있는 서비스 만들기 상품 도메인 : 상품 ID, 상품명, 가격, 수량 상품 관리 기능 : 상품목록, 상품상세, 상품등록,상품 수정 3. 상품 도메인 개발 @Data public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { } //.. } > price와 quantity는 Int..
-
Spring MVC (6) - 스프링 MVC 기본기능 (2) : Http BodyWeb/Spring 2023. 10. 14. 23:49
1. HTTP 응답 - 정적 리소스, 뷰 템플릿 스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지이다. > 정적리소스 : 웹 브라우저에 정적인 HTML,css,js를 제공할 때 > 뷰 템플릿 : 동적 페이지 제공 > HTTP 메시지 : HTTP API를 제공하는 경우, HTTP 메시지 바디에 JSON 같은 형식으로 데이터 실어 보냄 1.1 정적 리소스 - 스프링 부트는 클래스 패스의 다음 디렉토리에 있는 정적 리소스 제공 /static,/public,/resources,/META-INF/resources 등 - src/main/resources는 리소스를 보관하는 곳이자 클래스 패스 시작 경로이다. 따라서 다음 디렉토리에 리소스 넣어두면 스프링 부트가 정적 리소스로 제공 * 내장 톰캣의 경우 w..
-
Spring MVC (6) - 스프링 MVC 기본 기능Web/Spring 2023. 10. 9. 21:19
1. 들어가기 전에 - 프로젝트 생성 주의점 Packaging War가 아닌, Jar를 선택 -> JSP를 사용하지 않기 때문에 (스프링 부트를 사용하면 주로 위 방식을 사용하게 된다) Jar+내장 톰캣+ webapp경로x War+ 주로 외부 웹 서버 + webapp경로 o - Welcome페이지 만들기 스프링 부트에 Jar를 사용하면, /resoureces/static 위치에 파일을 두면, Welcome페이지로 처리해준다. 정적컨텐츠는 주로 저 위치에 두면된다. 1.2 로깅 알아보기 - 운영시스템에서는 System.out.println()같은 시스템 콘솔을 사용해서 필요한 정보 출력x > 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. - 로깅 라이브러리 : 스프링 부트 라이브러리를 사용하면 스프링..
-
SpringMVC (5) - 스프링 MVC 구조 이해Web/Spring 2023. 10. 2. 16:43
- 직접 만든 프레임 워크와 스프링 MVC는 큰 차이가 없다 - 이름만 조금 다를 뿐 구조는 매우 비슷함. > DispatcherServlet 구조 살펴보기 -org,springframwork.web.servlet.DispatcherServlet 프론트 컨트롤러 패턴으로 구현됨 스프링 MVC의 핵심 - dispatcherservlet도 httpservlet을 상속받아서 사용하고, 서블릿으로 동작한다. - 스프링 부트는 dispatcherservlet을 서블릿으로 자동등록하며, 모든 경로에 대해서 맵핑한다. * 더 자세한 경로가 우선순위 높음 따라서 기존에 등록한 서블릿도 함께 동작함 > 요청 흐름 - 서블릿이 호출되면, service()가 호출됨 - frameworkServlet.service()를 시작..
-
SpringMVC (4.5) - FrontController V5 [어댑터 패턴 - 중요]Web/Spring 2023. 10. 2. 15:31
1. 유연한 컨트롤러 - v5 - 이전에 살펴본 v3방식과 v4방식을 섞어서 쓰고 싶다면 어떻게 해야할까? - 두 컨트롤러는 매개변수와 리턴값이 다르다. ** 어댑터 패턴 두 컨트롤러의 인터페이스는 다르므로 호환이 불가능하다 마치 110v와 220v와 같다. 이럴 때 호환이 안되는 두 인터페이스를 일관되게 사용하고 싶을 때 어댑터 패턴을 사용하면 된다. v3용 어댑터와 v4용 어댑터를 만들고, 프론트 컨트롤러는 어댑터를 통해서 컨트롤러 메서드를 호출하게 만들자. 변화하는 부분은 요청에 따른 각컨트롤러, 그리고 컨트롤러별 매개변수와 리턴 값이다. 어댑터는 이러한 부분을 캡슐화함 -> 각 컨트롤러에 따라 로직을 처리하도록 request에서 값 뽑기, 매개변수 전달 등등을 수행 실제 로직 처리를 각 어답티(컨..