목록Back-end (17)
쏭의 개발 블로그

웹 서버에서 세션 유지와 보안휴대폰에서 네이버에 로그인 후 전원을 껐다 다시 켜도 로그인 상태가 유지되는 상황- 디바이스를 껐다 켰음에도 연결(세션)은 끊기지 않고 로그인 정보가 유지됨세션 유지의 원리WAS는 사용자의 로그인 여부를 판단할 때 SID값을 확인하여 세션을 복구한다.사용자가 로그인하면 쿠키 형태로 SID(세션 ID)를 할당받고, SID는 File의 형태로 저장된다.사용자가 디바이스 전원을 껐다 켜고 접속하면, File을 다시 읽어와 SID를 그대로 복구해놓는다. ID, PW를 묻지 않고도 로그인 상태를 유지한다.보안 위험해커가 SID에 해당하는 쿠키값을 탈취하면 ID, PW 없이 로그인이 가능하다. 이를 세션 탈취(Session Hijacking)에 해당한다. 세션 탈취(Session Hij..

Spring 프로젝트에서 WebClient를 사용하여 Open API를 호출하도록 구현해보면서 Spring WebFlux와 WebClient에 대해서 학습을 했었다. (물론 Servlet 애플리케이션이어서 WebClient만 사용하긴 했지만!) 평소에 개인 노션에 기록해뒀는데 블로그에도 작성해보려고 한다! [1] WebFlux란 클라이언트, 서버에서 Reactive 스타일의 애플리케이션 개발을 도와주는 스프링 모듈이다. 반응형 프로그래밍을 통해 높은 처리량과 확장성을 갖는 애플리케이션을 만드는 목적으로 reactive-stack web framework로 non-blocking과 reactive stream을 지원한다. 특징 Single-Thread와 Non-Blocking 방식을 사용하여 적은 수의 스..
1. DAO : Data Access Object (= Repository) DB의 데이터에 접근하기 위한 객체로 DB에 접근하기 위한 로직과 비즈니스 로직을 분리 repository 패키지 실제로 DB에 접근하여 데이터를 CRUD하는 객체로 Service와 DB를 연결해주는 역할 인터페이스와 구현체를 만들어 CRUD 관련 기능을 구현하고 DI 해줌 SQL을 사용하여 DB에 접근한 후 적절한 CRUD API를 제공 MyBatis 등을 사용할 경우 커넥션 풀까지 제공되므로 별도로 만드는 경우는 적음 2. DTO : Data Transfer Object 계층 간 데이터 교환을 하기 위해 사용하는 객체로 로직을 가지지 않는 순수한 데이터 객체 DTO 패키지 getter, setter만 가짐 DB에서 데이터를 ..

💡요약 (1) @Controller와 @RestController 차이점 ⇒ HTTP Response Body가 생성되는 방식 (2) @RestController = @Controller + @ResponseBody (3) 비교 [1] @Controller Model 객체를 만들어 데이터를 담고 View를 반환하는 것 클래스를 Spring MVC 컨트롤러로 표시하는 데 사용됨 @Target(value=TYEP) @Retention(value=RUNTIME) @Documented @Component public @interface Controller 동작구조 (1) Controller - View 클라이언트의 요청으로부터 view를 반환 Controller가 view를 반환하기위해 View Resolver..

[1] AOP란? 로직에 관점을 부여하는 프로그래밍 (Aspect Oriented Programming) 어떤 로직이 핵심 기능을 수행하며, 어떤 로직은 부가적인 기능을 수행하는지 관점을 부여해 분리 1. 필요성 기존 시간 측정 방식 : System.currentTimeMillis() 이용하여 시작과 종료 시점의 차이를 이용 시간 측정 기능은 핵심 관심 사항이 아니라 공통 관심사항 시간 측정 로직과 핵심 비즈니스 로직이 섞여 유지보수가 어려움 시간을 측정하는 로직을 별도의 공통로직으로 만들기 어려움 2. AOP 적용하기 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 시간 측정 로직을 한군데에 모으고 원하는 곳에 적용 시간 측정 AOP 등록 1. A..

1) 프레임워크란? 뼈대나 기반 구조 소프트웨어의 특정 문제를 해결하기 위해서 상호협력하는 클래스와 인터페이스의 집합 라이브러리 단순 활용가능한 도구들의 집합 개발자가 만든 클래스에서 호출 제어의 역전(IoC) 개념이 적용된 대표적인 기술 프레임워크 vs 라이브러리 프레임워크 : 전체적인 흐름을 스스로가 쥐고있음, 사용자가 그 안에 필요한 코드를 짬 라이브러리: 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는것 더보기 프레임워크와 라이브러리의 차이 어플리케이션의 흐름을 누가 쥐고 있느냐 프레임워크 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 작성 틀 안에 이미 제어 흐름에 대한 주도성이 있음 라이브러리 사용자가 전체적인 흐름을 만듦 라이브러리를 사용하고 호출하는 측에 ..

1. REST Representational State Transfer의 약자 자원(Resource) : URI 행위(Verb) : HTTP method 표현(Representations) 2. HTTP method 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식 서버에 요청을 보내는 방법 멱등성(idempotent) 여러번 수행해도 결과가 같음 호출로 인한 데이터 변형X 종류 CRUD 조회 : GET 등록: POST 수정 : PUT 삭제 : DELETE 3. GET & POST (1) GET 클라이언트에서 서버로 어떠한 리소스의 정보를 요청하기위해 사용되는 메서드 데이터를 읽거나(Read), 검색(Retrieve)할 때 사용되는 메서드 클라이언트..

1. Redirect 클라이언트가 URL을 요청했을때 서버가 클라이언트에게 다른 URL로 재접속하라는 명령을 보내는 것 클라이언트는 해당 URL로 다시 요청 URL주소가 바뀌면서 다시 접속됨 * 예시 예시1 @Controller public class TestController { @GetMapping("/test1") public String test1() { //sub1이라는 요청을 return return "redirect:/sub1"; } @GetMapping("/sub1") public String test1() { //sub1.jsp를 찾아 그 결과를 브라우저에 응답 return "sub1"; } } 결과 주소창과 페이지가 바뀜 예시2 @RequestMapping("join.do") publi..