본문 바로가기

분류 전체보기

(144)
백준 2018 자바 투 포인터 문제이다.이런 식으로 start pointer, end pointer 2개의 포인터를 조정하며 수들의 합이 N이 되면 count를 +1해준다.두 포인터 문제에서는 sum N, sum == N 3가지 경우를 잘 분리해서 코드를 작성해야 한다.(N이 15라 가정)1. sum 만약 start pointer가 1이고 end pointer가 3이면 sum = 1+2+3 = 6이 된다.그렇다면 sum은 N보다 작기 때문에 end pointer를 하나 올려서 sum을 더 크게 만들어야 한다.sum 그러면 end pointer는 4가 될 것이고 다음 sum은 1+2+3에서 4를 추가로 더해줘야 한다.sum  2. sum > Nstart pointer = 1, end pointer = 6이라고 가정하면sum..
[JAVA] Map.Entry를 이용한 HashMap 정렬 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;import java.util.stream.Collectors;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Member member1 = new Member("park", 1); Member member2 = new Member("kim", 2..
[Spring] @ExceptionHandler를 이용한 API 예외 처리 API 예외 처리는 매우 복잡하다.시스템마다 응답, 스펙도 다르고 단순히 오류 하면을 보여주는 것이 아니라 예외에 따라서 각각 다른 데이터를 출력해야 할 수도 있다. BasicErrorController, HandlerExceptionResolver를 직접 구현하는 것으로는 API 예외를 다루는 것은 쉽지 않다.스프링은 @ExceptionHandler라는 애너테이션을 제공하는데 API 예외처리는 이 기능을 많이 사용한다. 1. IllegalArgumentException 처리@Slf4j@RestControllerpublic class ApiExceptionV2Controller { @ExceptionHandler(IllegalArgumentException.class) public ErrorR..
[Spring] 서블릿 예외 처리 - 인터셉터 인터셉터의 중복 호출은 컨피그 클래스에서 설정할 수 있다.인터셉터를 등록할 때 URL 패턴에 관하여 어느 것을 설정하고 어느 것을 제외할지 직접 등록할 수 있기 때문에 인터셉터를 구현했다면 인터셉터를 등록한 컨피그 클래스에서 설정해주면 된다.@Slf4jpublic class LogIntercepter implements HandlerInterceptor { public static final String LOG_ID = "logId"; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { ..
[Spring] 서블릿 예외 처리 - 필터 이전 글에서 서블릿을 통한 예외 처리에 대해 알아보았고 이번 글에서는 아래의 과정에서 필터가 중복 호출되는 것을 막기 위한 방법에 대해 알아보겠습니다.1. WAS - 필터 - 서블릿 - 인터셉터 - 컨트롤러  // 컨트롤러에서 예외가 발생하면?2. 컨트롤러 - 인터셉터 - 서블릿 - 필터 - WAS  //  컨트롤러는 예외를 WAS까지 전달한다.3. WAS - 필터 - 서블릿 - 인터셉터 - 컨트롤러  //  WAS는 예외를 확인하고 에러 페이지를 호출하기 위해 다시 컨트롤러를 호출(여기서 중복 호출은 1번 3번 과정으로 필터의 기능을 하도록 하는 메서드를 호출하는 것을 말합니다.) 우선 코드와 실행 결과를 먼저 보여드리고 상세한 설명을 덧붙이겠습니다.1. 예외 컨트롤러public class Servle..
[Spring] 서블릿 예외 처리 -1 우리가 웹사이트나 애플리케이션을 이용하다가 에러가 400 혹은 500 종류의 에러가 나면 어떻게 될까?아마 경험해본 사람이라면 알겠지만 해당 웹사이트나 애플리케이션은 아래와 같이 상황에 맞는 적절한 에러 화면을 보낸다. 이번 글에서는 에러가 발생했을 때 서블릿은 어떤 방식을 이용해서 에러를 처리하는지 알아보겠다. 서블릿의 예외 처리 방법은 Exception과 response.sendError() 두 가지가 있다.Exception은 우리가 흔히 알고 있는 Exception으로 아래와 같이 작성한다. @GetMapping("/error-ex") public void errorEx() { throw new RuntimeException("예외 발생"); } } response.sendError()은 아래..
[Spring] 스프링 인터셉터 스프링 인터셉터는 서블릿 필터와 비슷하게 웹과 관련된 공통 괌심 사항을 해결하는 기술이다.우선 스프링 인터셉터의 흐름에 대해 알아보자.HTTP 요청 - WAS - 필터 - 서블릿 - 인터셉터 - 컨트롤러필터는 서블릿 이전에 적용되었지만 인터셉터는 디스패처 서블릿과 컨트롤러 사이에 적용된다.이 순서를 쉽게 외우는 방법 중 하나는 인터셉터는 스프링이 제공하기 때문에 스프링 mvc의 시작인 디스패처 서블릿 이후에 인터셉터가 적용된다고 생각하면 이해가 될 것이다. 인터셉터 제한HTTP 요청 - WAS - 필터 - 서블릿 - 스프링 인터셉터 - 컨트롤러HTTP 요청 - WAS - 필터 - 서블릿 - 스프링 인터셉터 - X정상적인 요청이라면 HTTP 요청부터 컨트롤러까지의 흐름을 타지만 로그인을 안 한 사용자처럼 ..
[Spring] 서블릿 필터 우리가 무신사를 이용하는데 로그인을 안 하고 이용하면 어떻게 될까? 실제로 이용을 해보면 우리가 원하는 상품을 보고 장바구니에 담는 과정까지는 허용이 되지만 주문하기 버튼을 누르면 로그인/회원가입 폼으로 이동하게 된다.이렇게 사용자에게 인증을 해야 더 많은 기능들을 이용할 수 있다는 것을 알려줄 때 필터, 인터셉터를 사용한다.여기서는 서블릿이 제공하는 필터에 대해 알아본다. 필터란 무엇인가?스프링에서 쓰이는 필터는 servlet이 제공하는 기능으로 주로 로그인 여부를 체크할 때 쓰인다. 로그인을 정상적으로 한 사용자HTTP 요청 - WAS - 필터 - 서블릿 - 컨트롤러 로그인을 안 한 사용자HTTP 요청 - WAS - 필터 (비정상적 요청 감지, 이후 단계 호출 X) 스프링을 공부하고 있는 사람이라면 ..

반응형