스프링웹개발16 [Spring] 스프링 타입 컨버터 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 6. 포맷터 - Formatter " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 개발자 입장에서는 문자를 다른 타입으로 변환하거나, 다른 타입을 문자로 변환하는 상황이 대부분이다. 화면에 숫자를 출력해야 하는데, Integer => String 출력 시점에 숫자 1000 문자 "1,000" 이렇게 1000 단위에 쉼표를 넣어서 출력하거나, 또는 "1,000" 라는 문자를 1000 이라는 숫자로 변경해야 한다. 이렇게 객체를 특정한 포멧에 맞추어 문자로 출력하거나 또는 그 반대의 역할을 하는 것에 특화된 기능이 바로 포맷터( Formatter )이다. 포맷.. BackEnd/Spring MVC 2022. 3. 18. [Spring] 스프링 타입 컨버터 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 타입 컨버터 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 다음과 같은 컨트롤러가 하나 있다고 하자! @GetMapping("/hello-v1") public String helloV1(HttpServletRequest request){ String data = request.getParameter("data"); // 문자 타입 조회 Integer intValue = Integer.valueOf(data); System.out.println("intValue = " + intValue); return "OK"; } HTTP 요청 파라미.. BackEnd/Spring MVC 2022. 3. 18. [Spring] API 예외 처리 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 5. 스프링이 제공하는 ExceptionResolver1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 부트가 기본으로 제공하는 ExceptionResolver 는 다음과 같다. HandlerExceptionResolverComposite 에 다음 순서로 등록되어 있다. 1. ExceptionHandlerExceptionResolver : @ExceptionHandler 를 처리한다. 2. ResponseStatusExceptionResolver : HTTP 상태코드를 지정해줄수 있다. 3. DefaultHandlerExceptionResolver.. BackEnd/Spring MVC 2022. 3. 15. [Spring] 예외 처리와 오류 페이지 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 6. 스프링 부트 - 오류 페이지 1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이전글에서 예외 처리 페이지를 만들기 위해 복잡한 과정을 거쳤다. 1) WebServerCustomizer 를 만들고 2) 예외 종류에 따라서 ErrorPage 객체를 추가하고 3) 예외 처리용 컨트롤러 ErrorPageController를 사용자가 직접 만들었다. 스프링 부트는 이러한 과정을 전부 기본적으로 제공한다. 1) ErrorPage를 자동등록 한다. 이때 경로는 /error 이라는 기본 경로로 오류 페이지를 설정한다. 따라서 서블릿 밖으로 예외가 발생하거나, r.. BackEnd/Spring MVC 2022. 3. 14. [Spring] 예외 처리와 오류 페이지 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 서블릿 예외 처리 - 시작 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 서블릿은 2가지 방식으로 예외 처리를 지원해 준다. 1) Exception 2) response.sendError(HTTP 상태 코드, 오류 메시지) 웹 어플리케이션 에서는 사용자 요청별로 thread가 할당된다. 해당 thread에서 예외가 발생했는데, try - catch로 예외를 처리하지 못한다면 어떻게 될까? => 톰캣 같은 WAS 까지 예외가 전달된다. WAS(여기까지 전파) HTML 삽입 미리보기할 수 없는 소스 예외가 WAS까지 전달되면 WAS는 예외를 처리하는 오.. BackEnd/Spring MVC 2022. 3. 14. [Spring] 로그인 처리2 - 필터, 인터셉터 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 3. 스프링 인터셉터 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 인터셉터는 서블릿 필터와 비슷하지만, 스프링 MVC가 제공하는 기술이다. ● 스프링 인터셉터의 흐름 HTTP 요청 ->WAS-> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 인터셉터는 프론트 컨트롤러(DispatcherServlet) 과 컨트롤러 사이에서 호출된다. 스프링 인터셉터에도 URL 패턴을 적용할 수 있는데, 서블릿 URL 패턴과는 다르고, 서블릿 보다 매우 정밀하게 설정할 수 있다. ● 스프링 인터셉터의 제한 HTTP 요청 -> WAS -> 필터 -> .. BackEnd/Spring MVC 2022. 3. 14. [Spring] 로그인 처리2 - 필터, 인터셉터 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 서블릿 필터 - 요청 로그 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스필터를 사용하여 사용자의 모든 요청에 로그를 남겨보자. ● LogFilter - 로그 필터@Slf4jpublic class LogFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { log.info("log filter init"); } @Override public void doF.. BackEnd/Spring MVC 2022. 3. 13. [Spring] 로그인 처리1 - 쿠키, 세션 - 3 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 7. 로그인 처리하기 - 직접 만든 세션 적용 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지난 시간까지 직접 구현한 SessioManager를 활용하여 로그인, 로그아웃을 구현해보자! ● LoginController - loginV2() @Slf4j @Controller @RequiredArgsConstructor public class LoginController { private final LoginService loginService; private final SessionManager sessionManager; // 세션 메니저 추가 @Get.. BackEnd/Spring MVC 2022. 3. 9. [Spring] 로그인 처리1 - 쿠키, 세션 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 3. 로그인 처리하기 - 쿠키 사용 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간에는 로그인 상태를 유지하기 위해서 쿠키를 사용해 보자. 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저에 전달하자. 그러면 브라우저는 앞으로 서버로 요청을 보낼때 마다 이전에 받은 쿠키를 지속해서 서버로 보내준다. ● 쿠키의 종류 2가지 영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시 까지만 유지 우선 로그인에 성공항 회원들에게 response에 cookie를 담아서 보내주자! ● LoginC.. BackEnd/Spring MVC 2022. 3. 9. [Spring] 검증2 - Bean Validation - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. Bean Validation - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 기존에 직접 구현하였던 검증과정은 상당하게 번거롭다. 특정 필드에 대하여 하나 하나 전부 검증과정을 거처야 하니 노가다에 가까웠다. 이를 해결하기 위해 등장한것이 Bean Validation 이다. 우선 다음 코드를 살펴보자. public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price.. BackEnd/Spring MVC 2022. 3. 7. [Spring] 검증1 - Validation - 3 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 6. 오류 코드와 메시지 처리 1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 위에서는 오류 메시지를 직접 추가해줬었는데, 이렇게 직접 추가하다보면 통일성이 없어 진다. 같은 내용의 오류메시지 이지만, 구문이 조금씩 달라질수도 있다. 이를 좀더 효율적으로 오류 메시지를 다루어 보자. properties에 한번에 저장해두고, 메시지처럼 사용할수가 있다. 이러한 활용법을 알아보기 전에 우선 FieldError 생성자를 다시한번 살펴보자. ● FieldError 생성자 public FieldError(String objectName, String field,.. BackEnd/Spring MVC 2022. 3. 6. [Spring] 검증1 - Validation - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 검증 직접 처리 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 그리고 정상 로직보다 이런 검증 로직을 잘 개발하는 것이 어쩌면 더 어려울 수 있다. 우선 상품 저장이 검증 실패되는 경우를 그림으로 살펴봅시다. 고객이 폼에 입력한 값이 지정된 범위를 넘어가거나, 또는 너무 작은경우 서버에서 검증 로직이 실패해야 한다. 이렇게 검증에 실패한 경우 고객이 보냈던 실패한 데이터를 Model에 저장하여 다시 반환함으로써 어떤 값을 잘못 입력했는지를 알려줘야 한다 만약 검증이 .. BackEnd/Spring MVC 2022. 3. 5. 이전 1 2 다음