본문 바로가기

Spring6

파일 업로드 & 다운로드 파일을 업로드하고 다운로드하는 방법에 대해 알아보려고 한다. 1. 파일 업로드 1) HTML 파일 업로드는 form 데이터로 쉽게 업로드할 수 있다. HTML 태그를 다음과 같이 작성한다. 파일도 이렇게 input 태그로 데이터를 전송할 수 있다. (type은 file이다.) name으로 이름을 지정하면, 서버에선 이 이름으로 데이터를 얻을 것이다. accept는 전송 허용 가능한 파일의 타입을 지정하는 것이다. 예제 코드에서는 모든 이미지 파일을 허용하고 있다. 이런 식으로 이미지 파일 중 png, jpeg 확장자의 파일만 허용하겠다고 할 수도 있다. 콤마로 여러 타입을 지정할 수 있다. 참고로 accept 속성의 브라우저 지원 범위는 별로 좋지 않다. Can I use 사이트에서 더 자세한 내용을 확.. 2019. 9. 13.
SLF4J 이용하여 로그 남기는 방법 (with Logback) 로그에 대한 내용은 아래 글에 있다. ▷로깅에 대하여 로그를 위한 라이브러리는 다양한 종류가 있다. 이 다양한 라이브러리를 같은 방법으로 사용할 수 있도록 도와주는 SLF4J에 대해 알아보도록 하자. 1. SLF4J란? SLF4J는 로깅 Facade(퍼사드)이다. 로깅에 대한 추상 레이어를 제공하는 interface의 모음이다. 여러 로깅 라이브러리를 하나의 통일된 방식으로 사용할 수 있는 방법을 제공한다. 아래 그림을 보면, 초록색 박스의 application들은 하늘색의 SLF4J API를 사용하고 있다. 이렇게 application은 SLF4J를 이용하여, 로깅 라이브러리가 어떤 것이든 같은 방법으로 로그를 남길 수 있게 되는 것이다. 나중에 더 좋은 라이브러리가 생겨 교체하더라도, applicat.. 2019. 9. 12.
아규먼트 리졸버(Argument Resolver) 아규먼트 리졸버(Argument Resolver)는 사용자가 컨트롤러의 메서드 인자값으로 임의의 값을 전달하려할 때 사용된다. 예를 들어, 세션에 저장되어 있는 값 중, 특정 이름의 값을 메서드 인자로 전달한다. 아규먼트 리졸버 작성 방법 org.springframework.web.method.support.HandlerMethodArgumentResolver를 구현한 클래스 작성 supportsParameter 메서드를 오버라이딩 한 후, 원하는 타입의 인자가 있는지 검사하여 있으면 true를 리턴하도록 한다. resolveArgument 메서드를 오버라이딩한 후, 메서드의 인자로 전달할 값을 리턴한다. Java Config에 설정하는 방법 WebMvcConfigurerAdapter를 상속받은 Java.. 2019. 8. 26.
인터셉터(Interceptor) - Cotroller 공통 로직 처리하기 Spring이 실행되는 흐름은 아래 그림과 같다. 아래 그림과 함께 인터셉터가 무엇인지 살펴보자. 클라이언트로부터 요청(Request)이 들어오면, Filter가 있다면 Filter를 수행한 후, DispatcherServlet을 수행한다. 즉, 필터는 요청이나 응답이 처리되기 전 거치는 것이다. DispatcherServlet은 선처리 작업할 것이 존재하면 선처리 작업을 해주고, HandlerMapping을 통해 실제 어떤 Handler가 동작을 해야 되는지 알아내고, 그 Handler를 실행시킨다. 위 그림을 보면 DispatcherServlet와 Handler 사이에 HandlerInterceptor라고 하는 것이 있다는 것을 볼 수 있을 것이다. 이런 것들을 거쳐 요청 작업이 끝나면 응답 정보를 .. 2019. 8. 26.
세션(Session) 이용하는 방법 세션은 클라이언트 별로 서버에 저장되는 정보이다. 사용자 컴퓨터에 저장되던 쿠키와 다르게 서버에 저장되므로, 비교적 보안이 필요한 데이터는 쿠키보다 세션에 저장한다. 서버가 종료되거나 유효시간이 지나면 사라진다. 1. 세션 이용 방법 웹 클라이언트가 서버에게 요청을 보내면 서버는 클라이언트를 식별하는 session id를 생성한다. 서버는 session id로 key와 value를 저장하는 HttpSession을 생성하고, session id를 저장하고 있는 쿠키를 생성하여 클라이언트에게 전송한다. 클라이언트는 서버 측에 요청을 보낼 때, session id를 가지고 있는 쿠키를 전송한다. 서버는 쿠키의 session id로 HttpSession을 찾는다. javax.servlet.http.HttpSes.. 2019. 8. 26.
쿠키(Cookie) 이용하는 방법 웹은 HTTP 프로토콜로 통신한다. HTTP는 무상태 프로토콜이어서 서버는 클라이언트의 이전 상태를 기억하지 못한다. (더 자세한 내용: 웹이 동작하는 법 (HTTP 프로토콜의 이해) ) 하지만 상황에 따라 클라이언트의 이전 상태를 기억하고 있어야 하기도 하는데, 바로 이럴 때 쿠키라는 기술이 필요하다. 1. 쿠키(Cookie)란? 쿠키는 클라이언트 단에 저장되는 작은 정보의 단위이다. 클라이언트에서 생성하고 저장된다. 서버에서 전송한 쿠키가 클라이언트에 저장될 수 있다. - 쿠키 이용 흐름 서버에서 쿠키 객체를 생성한 후, 응답과 함께 클라이언트의 브라우저로 전송되어, 사용자의 컴퓨터에 서버별로 저장된다. 저장된 쿠키는 다시 해당하는 웹 페이지에 접속할 때(서버한테 다시 요청 보낼 때) 브라우저에서 서.. 2019. 8. 23.