hmk run dev

서블릿 & 스프링 본문

java

서블릿 & 스프링

hmk run dev 2022. 2. 20. 18:07

Servlet과 그것을 사용하는 Servlet web MVC

Servlet

웹 애플리케이션을 만들 때 필요한 인터페이스

 

Servlet web MVC

Servlet 사용

Spring Framwork에 있는 모듈

Web Service를 만든다.

MVC 패턴을 사용한다.

 

 

정적 데이터만 전달하는 Web Server

어떤 사용자가 들어와도 같은 페이지를 반환함

 

사용자 요청에 따라 다른처리를 해줄 수 없다

동적인 처리를 해주는 웹 어플리케이이션의 부재

 

동적 데이터를 처리하는 CGI(Common Gateway Interface)

동적인 페이지를 처리할 수 있게됨

 

 

그러나, 많은 사용자를 처리하기엔 무리

 

CGI의 두 가지 문제점

 

- 요청이 들어올 때마다 프로세스(메모리에 적재된 프로그램 인스턴스)를 생성함

- 같은 CGI구현체를 사용해도 요청이 다르면 구현제가 하나씩 더 생김

CGI의 두가지 문제점을 보완한 Servlet

- Process > Thread

- Instance > Singleton

 

요청이 올 때마다 스레드를 생성하고 싱글톤 패턴을 사용

 

Servlet동작 순서

 

- 요청이 올 때마다 스레드 생성

- 스레드와 Servlet 구현체를 연결 (Servlet Interface에 정의된 메서드를 호출)

> Servlet Interface엔 크게 init(생성), service(기능 수행), destroy(서블릿 인스턴스 제거) 메서드가 정의되어 있음

- 싱글톤으로 메모리를 공유하고 로컬 variable을 스레드마다 갖고 있음

 

아래 web.xml의 설정을 보면

url-pattern에 설정해놓은 url로 요청이 오면 HelloServlet으로 보내라라고 정의

url마다 servlet이 생기고 웹 컨테이너에게 알려주기 위해 web.xml에 url에 서블릿을 매핑시켜준다.

 

Spring Web MVC에서의 Servlet

 

Dispatcher Servlet

1. 모든 요청이 들어올 때, Dispatcher Servlet으로 간다.

2. 요청에 따라 적절한 Controller를 찾는다. (찾는 방법은 Spring에서 제공)

 

다양한 매핑 방법

 

BeanNameHandlerMapping

 

DefaultAnnotaionHandlerMapping

가장 보편적인 방법이다.

Dispatcher Servlet > HadlerAdapter > Controller

 

이러한 방법으로 찾은 Controller의 메서드를 호출해

ModelAndView 형태로 바꿔준다.

( Data에 해당하는 model, data를 넘길 page에 해당하는 view 보통 view의 논리적인 이름만 return 해준다. )

 

model은 컨트롤러가 처리한 결과고 view는 그 결과를 담는 page

 

Dispatcher Servlet이 view name을 보내주면 View Resolver가 이름을 가지고 실제 view를 찾아줌

 

 


Spring Web MVC 이전

url마다 servlet을 생성해 web.xml에서 servlet을 관리

 

Spring Web MVC 등장

Dispatcher Servlet 1개로 모든 요청을 처리

서블릿에서 view를 보내주는 것을 직접 만들어줬다면

Dispatcher Servlet으로 view를 강제로 분리시킬 수 있게됨

 

'java' 카테고리의 다른 글

추상클래스 & 인터페이스  (0) 2022.02.16
JAVA 메모리 구조  (0) 2022.01.31
JPA @Query 띄워쓰기 주의 사항  (0) 2022.01.12
jsoup 네이버 블로그 크롤링(iframe)  (5) 2021.12.04
generic  (0) 2021.11.14
Comments