일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- DI
- 비동기
- 부스터2기
- 다이나믹 프로그래밍
- response
- 알고리즘
- 웹
- Service
- 백준
- Callback
- 면접
- was
- IOC
- 파이썬
- request
- 네이버
- 기술면접
- Spring MVC
- Spring Framework
- 서블릿
- Promise
- DP
- JSP
- controller
- servlet
- 코딩테스트
- 자바스크립트
- Spring
- 부스트코스
- 다이나믹프로그래밍
- Today
- Total
Sh개발일기
스프링 및 웹 개발 본문
스프링 MVC에서의 컴포넌트
스프링에서 MVC에 대응되는 컴포넌트는 다음과 같다.
View - JSP / Controller - Java Class / Model - JavaBean
Container
프레임워크 안에서 인스턴스들의 생명주기를 관리하며, 생성된 인스턴스들의 추가적인 기능을 부여한다. 개발자가 작성한 코드의 처리과정을 컨테이너에서 수행한다. 스프링 컨테이너는 스프링 프레임워크의 핵심적인 부분으로, DI를 통해 애플리케이션을 구성하는 컴포넌트들을 관리한다.
IOC (Inversion Of Control)
제어의 역행이라는 뜻으로 인스턴스의 생성 및 소멸을 개발자 대신 스프링 컨테이너에 맡기는 것을 의미한다. 일반적으로 객체의 생성은 new와 같은 키워드를 이용해 개발자가 프로그래밍을 하며 필요한 객체를 생성하는 방식이지만, 이러한 객체의 생성과 소멸을 개발자가 아닌 스프링 프레임워크에 맡기는 것이다. 이 외에 객체의 제어권을 프레임워크에서 가져간다는 말로도 사용된다.
DI(Dependency Injection)
의존성 주입이라는 뜻으로, 실제로 IOC를 구현하는 방법이다. 의존성이 있는 컴포넌트를 개발자가 코드를 사용해 명시하는 것이 아니라 Spring이 런타임에서 연결해 처리해준다. Bean객체 생성시 XML파일이나 Annotation을 통해 설정한대로 의존성을 주입해준다.
웹 브라우저에서 Spring MVC로 요청했을 때 흐름
Spring Framework에서 사용자의 요청을 받아 응답을 전달하기까지의 과정은 일반적으로 위의 그림과 같다. 한단계 한단계 살펴보도록 하겠다.
- 먼저 URL을 통해 전달된 요청은 Dispatcher-Servlet에 전달된다.
- Dispatcher-Servlet은 핸들러 매핑을 이용해 해당하는 URL에 매핑된 Controller가 있는지 검사한다.
- 해당하는 Controller를 확정지은 후 Handler Adapter를 이용하여 해당하는 Controller에 요청을 위임한다.
- Controller가 알맞은 Service등을 이용하여 로직을 처리한다.
- 처리한 결과를 ModelAndView객체에 담아 Dispatcher-Servlet으로 전달한다.
- Dispatcher-Servlet은 전달받은 view가 있는지 View Resolver를 이용해 확인한다.
- 해당하는 View에서 Model을 이용해 사용자에게 보여줄 View를 생성한 후 Dispatcher-Servlet으로 전달한다.
- 최종적으로 생성된 콘텐츠를 사용자에게 응답으로 전달한다.
Bean객체
자바에서의 POJO(Plain Old Java Object)로, XML설정 파일을 통한 생명주기, 종속성 등의 메타데이터를 가지고 스프링 컨테이너에서 생성된 객체이다. 컨테이너에서 생성되었다는 점을 제외하면 일반적인 자바 객체와 같다.
VO
Value Object의 약자로 값을 갖고 있는 객체이다. 비즈니스 값을 가져올 때 사용하며, 보통 값을 수정할 수 없는 것으로 한다. DTO와 혼용해서 사용하기도 한다.
DTO
Data Transfer Object의 약자로 VO와 같이 값을 갖고 있는 객체이다. VO와의 차이점은 DB로 치면 하나의 인스턴스에 해당하는 개념으로 데이터 핸들링에 사용되는 객체이다. DTO를 사용해 데이터를 전달할 수 있다.
DAO
Data Access Object의 약자로 Connection을 이용하여 실제 DB에 접속하는 객체를 말한다. Service딴과 DB사이에서 데이터를 엔티티로 변환시켜 가져오는 역할을 한다. 대부분의 CRUD API를 제공한다.
Restful
REST란 REpresental State Transfer의 약자로, 자원의 상태를 표현하여 전달하는 것으로 웹에서 HTTP를 통해 자원을 직관적으로 전달하기 위한 인터페이스이다. Restful API는 대부분의 데이터를 JSON이나 XML형식에 담아서 HTTP 프로토콜 위에서 통신한다.
Rest하게 자원을 표시하는 방법은 다음과 같다.
- 자원
- HTTP메소드를 이용하여 표현(GET, POST, PUT, DELETE 등)
- 동사 없이 명사로 표현
- 확장자는 포함하지 않는다.
Ajax
Ajax란 클라이언트에서 서버와 비동기적으로 통신하는 기술을 말한다. 요청시 XMLHttpRequest라는 객체를 이용하여 수행한다. request 요청 후, 상태가 변화할 때 readyState라는 플래그가 변화하며, onreadystatechange라는 함수를 호출하게 된다.
<readyState 상태 플래그>
- 0 : 객체 생성 완료, open()함수 호출 전
- 1 : open() 함수 호출 성공
- 2 : send() 함수 호출 성공
- 3 : recv() 함수 호출, 데이터 다운로드 중
- 4 : Done, 모든 작업이 끝남
'면접준비' 카테고리의 다른 글
기술면접 질문모음 2 (0) | 2020.04.25 |
---|---|
기술면접 질문 모음 1 (0) | 2020.04.24 |
JAVA (0) | 2020.04.24 |