Spring Framework 24

[Spring] 컨테이너와 IOC, DI란?

스프링을 공부하면 처음 접하는 용어들이 있다. 컨테이너, IOC,DI 등 용어에대해 간단하게 다뤄보겠다. IoC (Inversion of Control)란? Ioc는 제어의 역전이라는 뜻이다. 프로그램의 흐름을 개발자가 제어하지않고, 프로그램이나 프레임워크가 직접제어한다는말이다. 컴포넌트의 의존관계결정, 객체의 생명주기 같은 일을 대신 수행해준다. 흔히 스프링의 프레임워크를 사용해 개발할때 여러가지 Bean을 사용할것이다. 사용자의 요청이 들어오면, 요청에 알맞는 Bean을 생성해서 필요한일을 하도록 시킨다. 해당 Bean이 할일을 마치면 Bean을 삭제해준다. 하지만 이런 객체의 생성과 소멸이 어떻게 이루어 지는지 알 필요가없다. 스프링 컨테이너가 관리해주기때문에 개발자는 비즈니스로직 짜는거에 집중할수..

[Spring] Filter, Interceptor, AOP 차이 및 정리

공통 프로세스에 대한 고민 자바 웹 개발을 하다보면, 공통적으로 처리해야할 업무들이 많다. 예를 들면 로그인 관련(세션체크) 처리, 권한 체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등등 이있다. 공통업무에 관련된 코드를 모든 페이지마다 작성해야 한다면 중복된 코드가 많아지고, 프로젝트 단위가 커질수록 서버에 부하를 줄수도 있으며, 소스관리도 되지않는다 즉 공통 부분은 빼서 따로 관리하는게 좋다. 위와 같은 공통 처리를 위해 활용할수 있는것이 3가지가 있다. 1) Filter 2) Interceptor 3) AOP 스프링에서 사용되는 Filter, Interceptor, AOP 세가지 기능은 모두 무슨 행동을 하기전에 먼저 실행하거나, 실행..

Spring Framework 2021.06.24

[Spring] 스프링 인터셉터(Interceptor)란 ?

목표 Interceptor 란 무엇인지 알아본다. Interceptor 를 직접 구현해본다. 순서 1. 인터셉터(Interceptor) 1.1 인터셉터란? 1.2 왜 사용하는가? 1.3 구현수단 1.4 어떤 메서드를 가지고 있는가? 2. 인터셉터 동작 위치 및 순서 3. 구현 방법 및 실습 4. 다중 인터셉터 5.HandlerInterceptor 메서드 출력 순서 1.1 인터셉터란? 컨트롤러(Controller)의 '핸들러(Handler)'를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할수 있는 일종의 필터 interceptr 란 단어는 '낚아채다'라는 의미이다. 해당 단어의 의미와 같이 사용자 요청에 의해 서버에 들어온 Request 객체를 컨트롤러의 핸들러(사용자가 요청한 url에 따라 실행되어..

Spring Framework 2021.06.24

[Spring] WebUtils 사용하기

Spring MVC를 다룰 때, 요청에 딸려오는 값들을 처리할 때 유용한 ServletRequestUtils 와 더불어 하나 더 유용한 클래스가 있는데, 바로 WebUtils 입니다. WebUtils 클래스를 사용하면 Session에 담겨있는 객체들을 보다 짧은 코드로 넣고 빼고 할 수 있으며, 세션 객체나 쿠키 객체를 받아올 수 있습니다 원래는 다음과 같이 Request 객체를 직접 통해서 Session 객체에 접근해야 했습니다.. 1 UserSession userSession = (UserSession) request.getSession().getAttribute("userSession"); cs 그러나 Spring의 WebUtils를 사용하면 . 을 두 개 사용하여 길게 가지 않아도 됩니다. 1 U..

Spring Framework 2021.06.23

[Spring] Bean 등록 어노테이션 @Component, @Configuration, @Bean 차이

@Component 와 @Configuration은 큰 차이는 없습니다. @Configuration의 내부를 살펴보면 @Component가 정의되어 있습니다. 따라서 @Component와 @Bean을 비교하는 것이 맞습니다. 우선적으로, 개발자가 직접 작성한 클래스에 대하여 @Component는 위와 같이 bean으로 등록 할 수 있습니다. 반대로 라이브러리 혹은 내장 클래스등 개발자가 직접 제어가 불가능한 클래스의 경우 @Configuration + @Bean 어노테이션을 이용하여 bean으로 등록하여 사용하면 됩니다. 정리 @Component - 개발자가 직접 작성한 클래스를 bean 등록하고자 할 경우 사용 @Configuration + @Bean - 외부라이브러 또는 내장 클래스를 bean으로 등..

Spring Framework 2021.06.23

[Spring] 스프링 설정 - web.xml, root-context.xml, servlet-context.xml 역할

web.xml web.xml은 설정을 위한 설정 파일이다. WAS가 처음 구동 될때 web.xml을 읽어 웹 어플리케이션 설정을 구성한다. DispatcherServlet을 등록해주면서 스프링 설정파일을 지정한다. DispatcherServlet은 초기화 과정에서 지정된 설정파일을 이용해 스프링 컨테이너를 초기화 시킨다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 contextConfigLocation /WEB-INF/spring/root-context.xml org.springframework.web.context.ContextLoaderListener appServlet org.springframework.web.servlet.DispatcherS..

Spring Framework 2021.06.23

[Spring] Dispatcher-Servlet 이란?

1. Dispatcher-Servlet의 개념 Servlet Container에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일앞에 둬서 중앙집중식으로 처리해주는 프론트 컨트롤러(Front Controller) 위의 말을 설명하자면, 클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을받는데, 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 *프론트 컨트롤러 를 Spring에서 정의하였고, 이를 Dispatcher-Servlet이라고 한다. 그래서 공통처리 작업을 Dispatcher 서블릿이 처리한후, 적절한 세부 컨트롤러로 작업을 위임해준다. 물론 Dispatcher-Servlet이 처리하는 url 패턴을 지정해 주어야 하는데, 일반적으..

Spring Framework 2021.06.23

[Spring] 필터(Filter)란 무엇인가?

필터(Filter)란 무엇일까? HTTP 요청과 응답을 변경할수 있는 재사용 가능한 코드.(서블릿 2.3규약에 새롭게 추가됨) 필터는 객체의 형태로 존재하며 클라이언트로부터 오는 요청(Request)과 최종자원(서블릿/JSP)사이에 위치하며, 클라이언트의 요청정보를 알맞게 변경할수 있으며, 또한 필터는 최종 자원과 클라이언트로 가는 응답(Response) 사이에 위치하여 최종 자원의 요청 결과를 알맞게 변경할수 있다. 그림으로 보면 자원이 받게되는 요청 정보는 클라이언트와 자원사이에 존재하는 필터에 의해 변경된 요청정보가 되며, 클라이언트가 보게되는 응답정보는 클라이언트와 자원사이에 존재하는 필터에 의해 변경된 응답정보가 된다. 필터는 클라이언트와 자원사이에 1개가 존재하는 경우가 보통이지만, 여러개의 ..

[Spring] 스프링에서의 필터 개념및 예제

Filter란? 필터는 스프링의 독자적인 기능이 아닌 자바 서블릿에서 제공하는 기능이다. 스프링 프레임워크에서 필터로 인증등 다양한 작업을 하는데 최근 xss 공격방어를 하며 필터를 사용해봣기에 공부겸 블로그에 작성해보겠다 위 그림은 스프링 필터와 연관지어 검색하면 많이 보이는 그림중 하나이다. 스프링 프레임워크에서 요청에 대한 라이프 사이클을 나타낸그림이다. 스프링 프레임워크는 들어온 요청이 DispatcherServlet에 의해 컨트롤러에 매핑이된다. Filter는 요청이 DispatcherServlet에 의해 다뤄지기 전,후에 동작한다. 또한 Filter는 FilterChain(필터 체인)을 통해 여러 필터가 연쇄적으로 동작하게 할수 있다. 그럼 Filter는 어디에 쓰이나? 필터는 주로 요청에 대..

[Spring] XSS 공격과 보안처리 방법

XSS 공격이란? 흔히 사이트의 게시판의 게시글 작성 시 내용에 스크립트 코드를 삽입하여 게시글을 읽는 사용자의 쿠키정보 탈취 하거나 악성프로그램 다운로드, 공격자가 의도한 URL로 이동시키는 등 개발자가 의도하지 않은 기능을 동작하도록 만든다. XSS의 공격 방식은 크게 Reflected XSS, Stored XSS, DOM Based XSS 세 가지로 분류할 수 있으며 이에 대한 설명은 링크로 대신 한다. XSS(Cross Site Scripting) 공격이란? - https://4rgos.tistory.com/1 XSS 공격 실습방법 - https://g-idler.tistory.com/12 XSS 공격이란 - https://brownbears.tistory.com/250 XSS 취약점에 대한 보안..