Web
-
Spring MVC (2) - 예외 처리와 오류 페이지Web/Spring 2023. 11. 21. 22:53
1. 서블릿 예외처리 - 서블릿은 2가지 방식으로 예외 처리를 지원한다. (Exception, response.sendError(HTTP 상태코드, 오류메시지)) 1.1 Exception - 자바의 경우 try-catch를 하지 못하고 main쓰레드까지 예외가 던져지면, 예외 정보 출력 후 쓰레드 종료 - 웹 애플리케이션의 경우 예외를 잡지 못하는 경우 인터셉터 -> 서블릿 -> 필터 -> WAS 까지 전파됨 @GetMapping("/error-ex") public void errorEx() { throw new RuntimeException("예외 발생!"); } - 위와 같이 예외를 발생시키면, 톰캣 기본 오류 화면을 볼 수 있다. (HTTP Status 500 - Internal Server Err..
-
Spring MVC (2) - 스프링 포맷터Web/Spring 2023. 11. 21. 12:14
1. Formatter란? - Converter는 입력 및 출력 타입에 제한이 없는, 범용 타입 변환 기능을 제공함 - 일반적인 웹 애플리케이션 환경에서는 문자 - 타입간 변환이 많다 - 특히 Integer -> String (1000 -> "1,000") 혹은 ("1,000" -> 1000) - 날짜 객체 ("2021-01-01 10:50:11")을 Date 객체로 변환하거나 그 반대 상황이 많다. (특히 날짜 표현 방법은 Locale 현지화 정보가 사용될 수 있다.) - 이러한 상황에서 문자-객체 사이 특화된 기능을 제공하는 것이 Formatter이다 *스프링은 용더에 따라 다양한 포맷터를 제공함 > Formatter > AnnotationFormatterFactory -필드의 타입이나 애노테이션 정..
-
Spring MVC(2) - 스프링 타입 컨버터Web/Spring 2023. 11. 21. 11:04
1. 타입 컨버터란? - 문자를 숫자로 변환하거나, 숫자를 문자로 변환하는 일이 굉장히 많음 - 기존 스프링을 사용하면서 @RequestParam, @ModelAttribute, @Pathvariable에서 이게 가능했음 (자동) 추가로 @Value를 통해 정보읽기, XML에 넣은 스프링 빈 정보 변환 + 뷰 렌더링 (요청파라미터, @Value, 뷰렌더링) - 개발자가 직접 새로운 타입을 정의하고, 이에 맞는 타입 컨버터를 등록하고 싶다면 어떻게 해야할까? package org.springframework.core.convert.converter; public interface Converter { T convert(S source); } - 스프링은 확장 가능한 컨버터 인터페이스를 제공함! - 추가적인..
-
SpringMVC 2 - 서블릿 필터와 인터셉터Web/Spring 2023. 11. 15. 23:42
- 서블릿을 호출하기 전에 특정한 처리를 해야할 때 (공통처리) 필터를 사용함 - 여러 로직에서 공통으로 관심 있는 것을 공통 관심사라고 함 (ex 인증) - 공통 관심사는 AOP를 사용할 수도 있지만, 웹과 관련된 관심사는 필터나 인터셉터를 사용하는 것이 좋다. (웹과 관련된 부가 기능을 제공해줌!) * 필터나 인터셉터 구현체를 스프링 빈으로 등록한 뒤에 등록해도됨 만약 필터나 인터셉터 구현체를 만들기 위해 여러 의존객체가 필요하다면 빈으로 등록한 뒤 등록하도록 하자! 1. 서블릿 필터 > HTTP 요청 > WAS > 필터 > 서블릿 > 컨트롤러 순으로 작동함 > 필터에 특정 URL 패턴을 적용할 수 있다. > 필터는 우선순위를 설정해서 여러개 둘 수 있다. (로그필터 > 로그인 필터) > 필터 인터페..
-
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..