Java/Spring
-
제네릭(Generic)이란? List list1 = new ArrayList(); Map map = new HashMap(); 위의 List 과 같이 "" 꺽쇠 안의 클래스 타입이 명시되어 있는 것을 확인할 수 있다. 이러한 "" 꺽쇠 안에 데이터 타입을 컴파일 시에 미리 지정하는것을 제네릭이라고 한다. 제네릭은 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하여 타입검사를 할 수 있다. 클래스나 메서드 내부에서 사용되는 객체 타입의 유연성과 안정성을 확보한다. 런타임 시 발생할 수 있는 타입 에러를 컴파일 전에 검출하여 안정성을 확보한다. 아래 예시를 확인해보자 List list = new ArrayList(); list.add("obo"); // type error Integer..
Java Generic(제네릭)제네릭(Generic)이란? List list1 = new ArrayList(); Map map = new HashMap(); 위의 List 과 같이 "" 꺽쇠 안의 클래스 타입이 명시되어 있는 것을 확인할 수 있다. 이러한 "" 꺽쇠 안에 데이터 타입을 컴파일 시에 미리 지정하는것을 제네릭이라고 한다. 제네릭은 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하여 타입검사를 할 수 있다. 클래스나 메서드 내부에서 사용되는 객체 타입의 유연성과 안정성을 확보한다. 런타임 시 발생할 수 있는 타입 에러를 컴파일 전에 검출하여 안정성을 확보한다. 아래 예시를 확인해보자 List list = new ArrayList(); list.add("obo"); // type error Integer..
2023.06.26 -
DispatcherServlet DispatcherServlet 의 Dispatcher 는 "보내다" 라는 뜻을 가지고 있다. 이러한 뜻에 따라 DispatcherServlet 은 HTTP 프로토콜로 들어오는 모든 요청을 맨 앞쪽에서 받아 요청에 맞는 적절한 Controller 를 찾아 전달하는 Front Controller 라고 정의할 수 있다. 여기서 Front Controller 는 서블릿 컨테이너의 제일 앞쪽에서 모든 요청을 받아 처리하는 Controller 로써 MVC 구조에서 사용되는 디자인 패턴입니다. 위 이미지를 보면서 자세하게 설명을 하게 되면 클라이언트로부터 요청이 들어오게 되면 Tomcat 과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 서블릿 컨테이너에서 Filter 를 통해 인증 ..
DispatcherServlet(디스패처 서블릿, Front Controller)DispatcherServlet DispatcherServlet 의 Dispatcher 는 "보내다" 라는 뜻을 가지고 있다. 이러한 뜻에 따라 DispatcherServlet 은 HTTP 프로토콜로 들어오는 모든 요청을 맨 앞쪽에서 받아 요청에 맞는 적절한 Controller 를 찾아 전달하는 Front Controller 라고 정의할 수 있다. 여기서 Front Controller 는 서블릿 컨테이너의 제일 앞쪽에서 모든 요청을 받아 처리하는 Controller 로써 MVC 구조에서 사용되는 디자인 패턴입니다. 위 이미지를 보면서 자세하게 설명을 하게 되면 클라이언트로부터 요청이 들어오게 되면 Tomcat 과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 서블릿 컨테이너에서 Filter 를 통해 인증 ..
2023.06.13 -
HttpMessageConverter 란? 클라이언트(웹브라우저) 측에서 데이터를 HTTP Request Body 로 넘길때 서버측에서 DTO 같은 객체에 변환하기 위해 사용한다. 또한 반대로 서버측에서 HTTP Response Body 로 응답 데이터를 클라이언트로 전달할 때 사용한다. 보통 서버측에서 받을때 주로 사용하는 건 @RequestBody 어노테이션과 클라이언트로 응답 데이터를 넘길때 @ResponstBody 를 사용한다. Spring MVC 요청/응답 과정 1. 클라이언트로부터 HTTP 요청이 들어오면 Front Controller 라고 불리우는 Dispatcher Servlet 이 받는다. * 클라이언트의 요청은 Front Controller 라고 하는 Dispatcher Servlet ..
HttpMessageConverter, DispatcherServlet 동작원리HttpMessageConverter 란? 클라이언트(웹브라우저) 측에서 데이터를 HTTP Request Body 로 넘길때 서버측에서 DTO 같은 객체에 변환하기 위해 사용한다. 또한 반대로 서버측에서 HTTP Response Body 로 응답 데이터를 클라이언트로 전달할 때 사용한다. 보통 서버측에서 받을때 주로 사용하는 건 @RequestBody 어노테이션과 클라이언트로 응답 데이터를 넘길때 @ResponstBody 를 사용한다. Spring MVC 요청/응답 과정 1. 클라이언트로부터 HTTP 요청이 들어오면 Front Controller 라고 불리우는 Dispatcher Servlet 이 받는다. * 클라이언트의 요청은 Front Controller 라고 하는 Dispatcher Servlet ..
2023.06.07 -
@RequestBody HTTP 요청으로 넘어오는 Body 의 내용을 HttpMessageConverter 를 통해 Java Object로 역직렬화한다. 바이너리 파일을 포함하고 있지 않은 데이터를 받는 역할을 한다. * HttpMessageConverter : HTTP 요청과 응답에 대해서 "전략 패턴"을 사용해 Converting 해주는 역할 @RequestBody 어노테이션은 HTTP 요청으로 같이 넘어오는 Header 의 Content-Type을 보고 어떤 Converter 를 사용할지 정하므로 Content-Type 은 반드시 명시해야한다. 자주쓰는 Content-Type 종류 application/json : { key : value } 형태인 json 형태로 전송 application/x-w..
@RequestBody, @RequestParam, @RequestPart@RequestBody HTTP 요청으로 넘어오는 Body 의 내용을 HttpMessageConverter 를 통해 Java Object로 역직렬화한다. 바이너리 파일을 포함하고 있지 않은 데이터를 받는 역할을 한다. * HttpMessageConverter : HTTP 요청과 응답에 대해서 "전략 패턴"을 사용해 Converting 해주는 역할 @RequestBody 어노테이션은 HTTP 요청으로 같이 넘어오는 Header 의 Content-Type을 보고 어떤 Converter 를 사용할지 정하므로 Content-Type 은 반드시 명시해야한다. 자주쓰는 Content-Type 종류 application/json : { key : value } 형태인 json 형태로 전송 application/x-w..
2023.05.15 -
XSS 란?Cross Site Scripting 의 줄임말로 XSS의 약어이다.원래는 CSS가 맞지만 이미 CSS 라는 스타일 시트(.css) 가 사용되고 있어 XSS라고 칭한다. XSS 공격이란?크로스 사이트 스크립팅의 뜻처럼 사이트 간 스크립팅 이라는 이름의 웹 취약점이다.웹 사이트의 관리자가 아닌 제 3자가 악의적인 목적을 가지고 악성 스크립트를 삽입하여의도하지 않은 명령을 실행시키거나 쿠키, 세션 등을 탈취할 수 있는 취약점이다. 예를 들어 게시판의 글을 작성할 때 작성 내용 안에 아래와 같은 문장을 삽입한다.그럼 DB 데이터에 위와 같은 내용이 삽입되고 사용자는 게시판 글을 확인하면alert 창으로 사용자의 쿠키값이 보여진다.이렇게 사용자가 악의적인 목적을 가지고 악성 스크립트를 삽입하는 공격을..
Spring Boot XSS Filter 설정(lucy-xss-servlet-filter)XSS 란?Cross Site Scripting 의 줄임말로 XSS의 약어이다.원래는 CSS가 맞지만 이미 CSS 라는 스타일 시트(.css) 가 사용되고 있어 XSS라고 칭한다. XSS 공격이란?크로스 사이트 스크립팅의 뜻처럼 사이트 간 스크립팅 이라는 이름의 웹 취약점이다.웹 사이트의 관리자가 아닌 제 3자가 악의적인 목적을 가지고 악성 스크립트를 삽입하여의도하지 않은 명령을 실행시키거나 쿠키, 세션 등을 탈취할 수 있는 취약점이다. 예를 들어 게시판의 글을 작성할 때 작성 내용 안에 아래와 같은 문장을 삽입한다.그럼 DB 데이터에 위와 같은 내용이 삽입되고 사용자는 게시판 글을 확인하면alert 창으로 사용자의 쿠키값이 보여진다.이렇게 사용자가 악의적인 목적을 가지고 악성 스크립트를 삽입하는 공격을..
2023.05.02 -
Filter 와 Interceptor Interceptor 는 스프링 컨테이너 영역이므로 Spring 빈으로 등록이 가능하지만 Filter 는 서블릿 컨테이너의 영역이라서 Spring 의 빈으로 등록할 수 없다고 생각했다. 위 이미지와 같이 Filter 는 서블릿 컨테이너의 영역에서 존재하고 서블릿이 제공하는 기술이며스프링 컨테이너의 영역과는 분리되어 있다. 하지만 개발을 하게 되면 Filter 를 Spring 빈으로 등록하여 사용하는걸 볼 수 있다.서블릿 컨테이너에서 관리되는 DelegatingFilterProxy 가 서블릿 컨테이너와 스프링 컨테이너를연결할 수 있는 프록시용 필터이다. Spring Security Filter Spring Security 는 위 이미지와 같이 서블릿 Filter 를..
Spring Security DelegatingFilterProxy(서블릿 컨테이너와 스프링 컨테이너의 다리 역할)Filter 와 Interceptor Interceptor 는 스프링 컨테이너 영역이므로 Spring 빈으로 등록이 가능하지만 Filter 는 서블릿 컨테이너의 영역이라서 Spring 의 빈으로 등록할 수 없다고 생각했다. 위 이미지와 같이 Filter 는 서블릿 컨테이너의 영역에서 존재하고 서블릿이 제공하는 기술이며스프링 컨테이너의 영역과는 분리되어 있다. 하지만 개발을 하게 되면 Filter 를 Spring 빈으로 등록하여 사용하는걸 볼 수 있다.서블릿 컨테이너에서 관리되는 DelegatingFilterProxy 가 서블릿 컨테이너와 스프링 컨테이너를연결할 수 있는 프록시용 필터이다. Spring Security Filter Spring Security 는 위 이미지와 같이 서블릿 Filter 를..
2023.03.23