본문 바로가기

dev/Spring

상태 정보 유지(쿠키, 세션) 1. 쿠키, 세션 개념 HTTP는 stateless하기 때문에 상태 유지를 위한 별도의 프로토콜이 필요하다. 1) 쿠키상태 정보를 사용자 컴퓨터에 저장(보안 이슈 있을 수 있음)key,value 형태로 값을 저장(간단한 부가 정보 포함 가능)key값 중복 불가. 중복될 경우 덮어씌워진다.서버는 쿠키의 유효시간을 설정할 수 있다.서버는 쿠키를 임의로 삭제할 수 없다. 단, value가 null인 쿠키로 덮어씌울 수는 있다.2) 세션상태 정보를 서버에 저장각 클라이언트마다 세션id와 세션객체(HttpSession 객체) 생성2. 동작 방식 이해1) 쿠키 동작 방식2) 세션 동작 방식 [참조][JSP] 웹에서 쿠키(Cookie)의 사용 : https://hyeonstorage.tistory.com/114
spring mvc 프로젝트 구조 1. 구조https://www.javaguides.net/2019/01/spring-mvc-project-structure.html 2. WEB-INF뜻과 사용법servlet 규격에 따라 사용되는 디렉토리웹과 관련된 항목 중 브라우저에서 직접 접근할 수 없도록 해야 할 파일들을 보관(WEB-INF 폴더는 노출되지 않는다)보안을 위해 jsp 파일(view)는 WEB-INF에 보관하여 직접 접근이 불가하게 해야 한다.이와 반대로 css, 이미지, javascript와 같이 브라우저가 참조해야 하는 것은 WEB-INF 밖에 보관해야 한다.(일반적으로 Context root 하위에 static 폴더를 만들어 보관한다.)[참조] http://blog.naver.com/PostView.nhn?blogId=p9529..
Spring Layered Architecture 1. layered architecture를 사용하는 이유 2. Spring Layered architecture 구조1) Presentation LayerSpring MVC 객체를 말한다.프론트 컨트롤러(DispatcherServlet), 컨트롤러, 뷰, 모델이 포함된다. 2) Service Layer(Business Layer)실제 비지니스 로직을 수행하는 컴포넌트컨트롤러(presentation layer)에서 요청을 보내면 DAO(data access layer)를 이용해 실제로 비지니스 로직을 수행한다.보통 하나의 비지니스 로직은 하나의 트랜잭션으로 동작(ACID 특징 가짐)3) Data Access Layer(Repository Layer)DB에 값을 저장하거나 가져오기 위해 JDBC, Myba..
Java web MVC 1. Java web 개발 변천사2. Model 1JSP가 컨트롤러와 뷰의 기능을 모두 처리하는 형태Logic : JSP 스크립틀릿 코드로 처리Presentation : JSP 템플릿 코드로 처리컨트롤러와 뷰가 구분되지 않는 형태로, MVC 패턴으로 보기는 어렵다.DB접근은 Bean을 통해서만 한다(JSP가 DB에 접근하지는 않는다). 3. Model 2 Model1 패턴에서 로직을 별도의 Servlet으로 분리Servlet : 요청을 받아, 적절한 로직을 실행한다. 실행 후 결과를 forward()를 이용해 JSP로 보낸다.JSP : 처리 결과를 화면으로 표현한 후, 응답을 반환4. advanced Model 2/Spring WebMvc FrontController : 요청을 컨트롤러 또는 뷰로 전달C..
DTO/DAO, ConnectionPool DTO(Data Transfer Object) 계층(또는 프로세스)간 데이터 전송을 목적으로 하는 객체DB에서 데이터를 얻어 service나 controller 등으로 보낼 때 DTO로 만들어 보낸다.(데이터 -> DTO)로직이 없는 순수한 데이터 객체이며, getter와 setter 메소드만 가지고 있다.Spring 프레임워크는 프레임워크 단에서 DTO의 getter와 setter를 호출하여 데이터를 클래스화 한다. 즉, 프레임워크가 key & value 형태로 존재하는 데이터를 DTO를 통해 오브젝트로 변환해 준다. 이렇게 변환된 데이터는 오브젝트 이므로 layer간 데이터 전송에 편리하게 사용할 수 있다.VO (Value object) : 값을 표현하기 위해 사용하는 객체로, 불변 클래스다(read..
AOP 1. 쉽게 정리된 예제https://jeong-pro.tistory.com/171
IoC/DI IoC(Inversion of Control) 1) IoC/DI 를 적용하지 않을 때 - 작업을 수행하는 쪽에서 Object 생성과 같은 제어 흐름을 결정 ex) 개발자가 직접 new 를 통해 객체를 생성 ex) main()에서 생성된 오브젝트가 다른 오브젝트 생성에 영향을 미침 - 각 오브젝트는 프로그램 흐름 및 사용할 오브젝트 결정에 적극적으로 관여 ex) Foo라는 오브젝트에서 Boo라는 오브젝트가 필요하면 new Boo로 Boo를 선언한다. 2) IoC/DI 개념을 적용했을 때 - 프로그램의 제어는 제어 권한을 위임받는 특별한 오브젝트(컨테이너)가 수행 ex) 컨테이너가 객체를 생성 및 관리 - Object는 자신이 어떻게 생성/관리되는지 알 수 없음(컨테이너에 의해 생성/관리됨) - Object..