[Spring] 스프링 필터(Filter) vs 인터셉터(Interceptor) NextStep 강의를 들으면서 필터와 인터셉터를 접할 일이 생겼다. 필터와 인터셉터는 기본적으로 비슷한 역할을 한다는 점을 알고있었다. 하지만 주어진 코드를 접해봤는데, 역할별로 필터와 인터셉터를 구별하여 사용한 것이 보였다. 어떤 기준을 가지고 구별을 했는지 알아보기 위해, 둘의 특성과 차이점을 정리하고자 한다. 1. 필터(Filter)란? J2EE 표준 스펙 기능 스프링 컨테이너가 아닌 톰캣과 같은 웹 컨테이너로 관리 서블릿에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있게 하는 기능(ex) 로그인 유무 확인) request, response 객체를 다른 객체로 바꿀 수 있다. ..
FRAMEWORK/[SPRING]
[Spring] Jar vs War spring의 초기 설정에 도움을 주는 start.spring.io에서 Jar와 War를 볼 수 있고, 보통은 Jar를 선택해서 개발을 진행한다. 그렇다면 Jar는 무엇이고 또 War는 무엇일까? 1. Jar? War? Java를 사용하여 만든 소프트웨어를 배포하기전에 하는 패기징 방식 두 개의 packaging 방식 모두 Java의 jar툴을 이용하여 생성된 아카이브(압축) 파일이며 어플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성파일 등)들을 패키징해주는 것이 주 역할이다. 1.1 Jar(Java Archive) Class와 같은 설정 파일들을 압축해서 만들어진 하나의 어플리케이션 혹은 라이브러리 내장 톰캣(WAS)을 가지고 있음 1.2 Wa..
[Spring] Spring 검증 기능2 (Bean Validation) 1. Bean Validation 어노테이션을 사용하여 간단한 필드 검증 로직을 할 수 있게 하는 것 자바 기술 표준 중 하나 검증 어노테이션과 여러 인터페이스의 모음 일반적으로 hibernate-validator 구현체 사용 → ORM과 관련X spring-boot-starter-validation 라이브러리를 의존관계에 추가하여 사용 2. 검증 어노테이션 @NotNull : null을 허용하지 않음 @NotBlank : 빈값 혹은 공백만 있는 경우를 허용하지 않음 @Range(min = 10, max = 100) : 범위 안의 값이어야 함 @Max(100) : 최대 100까지 허용 @Min(100) : 최소 100까지 허용 이외..
[Spring] Spring 검증 기능1 (BindingResult, Validator) 1. BindingResult 스프링이 제공하는 검증 오류를 보관하는 객체 Errors 인터페이스를 상속받는 인터페이스 Errors : 단순한 오류 저장과 조회 기능 BindingResult : Errors + 추가 기능(ex) addError()) 오류가 발생하면 사용자가 입력한 값을 담아주는 역할도 가능 오류를 확인할 파라미터 뒤에 써주면 자동적으로 아래와 같은 일들을 해줌 특정 필드에 오류가 발생하면 FieldError 객체를 생성해서 BindingResult에 자동으로 담아 줌 특정 필드를 넘어서는 오류가 발생하면 ObjectError 객체를 생성해서 BindingResult에 자동으로 담아 줌 @ModelA..
[Spring] HttpMessageConverter 1. HttpMessageConverter란? 스프링 프레임워크에서 제공하는 인터페이스 package org.springframework.http.converter; public interface HttpMessageConverter { //canXXX는 해당 class 타입과, 미디어타입을 체크한다. boolean canRead(Class clazz, @Nullable MediaType mediaType); boolean canWrite(Class clazz, @Nullable MediaType mediaType); List getSupportedMediaTypes(); T read(Class
[Spring] Spring MVC 구조 1. MVC 패턴이란? Business logic과 Presentation logic을 분리하기 위해서 고안된 구조 모델(Model) - 뷰(View) - 컨트롤러(Controller)로 이루어져 있음 모델(Model) 데이터 베이스와 연동하여 데이터를 다룸 비즈니스 로직을 다룸 ex) DAO, Service 클래스 뷰(View) 모델이 처리한 결과를 바탕으로 화면을 출력 ex) HTML, JSP 컨트롤러(Controller) 데이터와 비즈니스 로직 사이으이 상호 동작을 관리 2. Spring MVC 구조 기본적으로 Front Controller 패턴이다 Front Controller(여기선 Dispatcher Servlet)가 요청을 받고 적절한 handler들..
[Spring] CGI vs Servlet 1. CGI(Common Gateway Interface) 웹 서버와 웹 애플리케이션(CGI 프로그램) 사이의 정보 전달 규칙 웹 서버와 웹 애플리케이션의 제조 회사가 다르면 서로 통신을 할 수 없기 때문에 만들어짐 CGI 프로그램는 브라우저가 요청시 각각의 process를 생성하여 동적 컨텐츠를 처리 process를 생성하기 때문에 서버의 자원을 많이 씀 2. Servlet 웹 서버에서 실행시킬 수 있는 자바 애플리케이션 브라우저 요청마다 Request, Response 객체를 생성 → 각각의 Request와 Response 객체를 사용하여, HTTP정보를 쉽게 사용할 수 있음 process대신 thread를 생성하여 동적 컨텐츠를 처리 서블릿 컨테이너가 관리..
[Spring] Web Server vs WAS 1. Web Server란? HTTP를 기반으로 동작하는 서버로써, 클라이언트의 요청을 받아 정적 리소스(정적 HTML, CSS, JS, 이미지, 영상 등)을 제공하는 서버 동적 리소스를 요청 받으면 WAS가 처리한 동적 리소스를 받아서 클라이언트에게 전달 ex) Apache, Nginx 2. WAS(Web Application Server)란? HTTP를 기반으로 동작하는 서버로써, Web Server의 기능 뿐만아니라 동적 리소스도 제공이 가능한 서버 서블릿 컨테이너라고도 불림 ex) Tomcat 3. 웹 시스템 구조 3.1 WAS만 사용 간단하게 WAS와 DB만으로도 웹 시스템 구현이 가능 하지만 여러 단점이 존재한다. WAS가 너무 많은 역할을 함 ..