[스프링] 예외 처리와 오류 페이지
·
스프링
사용자가 웹을 이용할 때 접근할 수 없는 페이지나 예기치 못한 오류가 발생했는데, 아무런 안내도 없이 브라우저 기본 오류 화면만 보게 된다면 불쾌감을 느끼게 될 것이다. 이는 곧 서비스 품질이 낮다고 평가받는 원인이 되기도 한다. 따라서 안정적인 웹 서비스를 제공하려면 사용자가 이해할 수 있는 오류 페이지를 준비해야 한다. 오늘은 서블릿에서 제공하는 오류 처리 방식과, 이를 훨씬 간편하게 해주는 스프링 부트의 오류 페이지 처리 기능을 비교하며 살펴볼 것이다. 1. 서블릿 방식 오류 페이지 처리(1) 오류 페이지 등록하기스프링 부트 환경에서 서블릿 컨테이너(내장 톰캣 등)를 실행할 때는, WebServerCustomizer를 통해 오류 페이지를 등록할 수 있다.@Componentpublic class We..
[백준] 15684 사다리 조작 (JAVA)
·
코딩 테스트
문제 링크:15684번: 사다리 조작 난이도 : 골드 3 문제:사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선이 같은 위치를 갖는다. 아래 그림은 N = 5, H = 6 인 경우의 그림이고, 가로선은 없다.초록선은 세로선을 나타내고, 초록선과 점선이 교차하는 점은 가로선을 놓을 수 있는 점이다. 가로선은 인접한 두 세로선을 연결해야 한다. 단, 두 가로선이 연속하거나 서로 접하면 안 된다. 또, 가로선은 점선 위에 있어야 한다.위의 그림에는 가로선이 총 5개 있다. 가로선은 위의 그림과 같이 인접한 두 세로선을 연결해야 하고, 가로선을 놓을 수 있는 위치를 연..
[백준] 2529 부등호 (JAVA)
·
코딩 테스트
문제 링크:2529번: 부등호 난이도: 실버 1 문제:두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시된 부등호 순서열 A가 다음과 같다고 하자. A ⇒ 부등호 기호 앞뒤에 넣을 수 있는 숫자는 0부터 9까지의 정수이며 선택된 숫자는 모두 달라야 한다. 아래는 부등호 순서열 A를 만족시키는 한 예이다. 3 1 7 0이 상황에서 부등호 기호를 제거한 뒤, 숫자를 모두 붙이면 하나의 수를 만들 수 있는데 이 수를 주어진 부등호 관계를 만족시키는 정수라고 한다. 그런데 주어진 부등호 관계를 만족하는 정수는 하나 이상 존재한다. 예를 들어 3456128790 뿐만 ..
[스프링] 로그인 처리 3 - 스프링 인터셉터(Interceptor)
·
스프링
앞에서 살펴본 서블릿 필터는 웹 애플리케이션의 수문장 역할을 하며, 로그인 여부 검증이나 공통 로직 처리에 유용했다.그런데 서블릿 필터는 서블릿 기술이 제공하는 기능이고, 스프링 MVC 안쪽과는 다소 거리가 있다.오늘은 스프링 MVC가 제공하는 또 다른 수문장, 스프링 인터셉터에 대해 알아볼 것이다.스프링 인터셉터는 필터와 유사하지만, MVC 구조와 더 밀접하게 동작하며 훨씬 정교하고 편리한 기능을 지원한다. 1. 스프링 인터셉터란 무엇인가스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 동작한다.흐름을 그림으로 나타내면 다음과 같다.HTTP 요청 → WAS → 필터 → 서블릿(DispatcherServlet) → 스프링 인터셉터 → 컨트롤러즉, 필터는 서블릿 이전, 인터셉터는 서블릿 이후, 컨트롤러..
[스프링] 로그인 처리 2 - 서블릿 필터
·
스프링
만약 상품 웹 서비스가 있다고 가정해보자.로그인하지 않은 사용자가 직접 URL을 입력해 상품 등록 페이지에 접근할 수 있다면 여러 문제가 발생할 수 있다.과거에는 이러한 문제를 해결하기 위해 모든 로직에 if(session == null) 조건을 걸고 /login 으로 리다이렉트하는 방식으로 처리하였다.그러나 이 방식은 중복 코드가 발생하고, 유지보수성에도 한계가 있었다.오늘은 이러한 문제를 해결하기 위해 스프링이 제공하는 기능인 서블릿 필터에 대해 알아볼 것이다. 1. 서블릿 필터란 무엇인가서블릿 필터는 웹 애플리케이션의 수문장 역할을 한다.모든 요청은 서블릿에 도달하기 전에 필터를 먼저 거치게 된다.흐름은 다음과 같다.HTTP 요청 → WAS → 필터 → 서블릿(DispatcherServlet) → ..
[스프링] 로그인 처리 1- 쿠키, 세션
·
스프링
웹 서비스를 만들어본 사람이라면 누구나 한 번쯤 이런 고민을 하게 된다.“로그인한 사용자의 상태를 어떻게 유지하지?”예를 들어 온라인 쇼핑몰을 떠올려보자.로그인하지 않은 사용자가 장바구니에 물건을 담을 수 있다면?회원만 볼 수 있는 주문 내역을 다른 사람이 열람할 수 있다면?특정 사용자의 권한이 필요한 페이지에 아무나 접근할 수 있다면?이건 보안상 치명적일 뿐만 아니라 서비스 자체가 정상적으로 운영될 수 없다.따라서 대부분의 웹 서비스는 로그인하지 않은 사용자는 막고, 로그인한 사용자만 특정 기능을 쓸 수 있게 만든다.그럼 여기서 중요한 질문이 생긴다.로그인은 한 번 성공했는데, 그다음 요청부터는 어떻게 “로그인한 사용자”라는 사실을 기억할까? HTTP라는 프로토콜은 본질적으로 무상태(stateless)..