inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

서블릿의 개념을 확실하게 잡고 싶습니다.

541

songsoy95

작성한 질문수 1

0

제가 서블릿을 들으면서 요약했던 개념으로는

  1. 클라이언트는 WAS에게 HTTP 요청을 보냄.

  2. WAS는 해당 HTTP 요청 메시지를 뜯어서 request 객체랑 response 객체를 생성.(response는 껍데기만 있고, request 안에는 요청 메시지의 바디 내용이 들어있다)

  3. request, response 객체를 해당 서블릿에게 넘긴다.

  4. 서블릿은 프로세스 처리를 하고, 응답 결과를 response 객체에 넣어서 was에게 돌려준다.

  5. was는 response를 클라이언트에게 돌려준다.

이렇게 정리를 했습니다.

이게 제대로 학습한 개념이 맞는지 궁금합니다.

 

또 pdf 내용에서는

HttpServletRequest 역할

HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다.

 

라고 적혀있는데 HTTP 요청 메시지를 파싱하는 건 was 아닌가요?
was가 파싱해서 request객체에 담아서 서블릿에 전달하는 것으로 알고 있었는데

pdf는 서블릿이 http 메시지를 파싱해서 request에 담는다고 나와있어서 질문드립니다.

spring mvc servlet 서블릿

답변 1

1

개발하는쿼카

먼저 WAS가 등장하게 된 배경은
동적으로 리소스를 처리하고 싶어 등장한 것으로 알고 있습니다.

 

그런데 WAS 그자체를 사용하면 개발자가 해야할 작업이 너무 많은 것이죠.

서버 TCP/IP 연결 및 종료, HTTP 요청 메시지 파싱, HTTP Method 및 URL 인지 등등

개발자에게 가장 중요한것은 비지니스 로직을 개발하는 일 인데,,,, 모든 작업을 반복적으로 하는것이 과연 의미가 있을까요?

 

 

그래서 등장한 것이 서블릿 입니다.

WAS에서 1차적으로 HTTP 메시지를 파싱하고 비지니스 로직에 필요한 메시지는 따로 서블릿에서 이용할 수 있게 HttpServletRequest, HttpServletResponse 에 담아주는 것이죠.

개발자들이 비니지스 로직만 따로 처리할 수 있도록 환경을 구성해 준것이라고 생각합니다.

(서블릿은 WAS안에 존재합니다.)

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
    @Override 
    protected void service(HttpServletRequest request, HttpServletResponse response) { 
        //비지니스 로직 
    } 
}
  • urlPatterns(“/hello”)URL이 호출되면 서블릿 코드가 실행

  • HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest

  • HTTP 응답 정보를 편리하게 사용할 수 있는 HttpServletResponse

 

 

하지만, 이마저도 불편하다고 여겨서
스프링 컨테이너에서 동작하는 디스패처 서블릿이 등장하고
개발자들은 컨트롤러를 구현해서 사용하도록 해준것으로 알고 있습니다.

 

 

감사합니다.

servlet과 container에 대한 질문입니다

0

29

1

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

0

66

1

jsp 의존성 수정 요청

0

84

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

145

1

save() 메서드 문의

0

67

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

102

1

request-body-json

0

84

2

MVC 패턴의 적용 단위

0

97

1

RequestMapping을 이용한 핸들러, 어댑터

0

120

2

save 후 결과화면

0

91

2

jsp를 이용한 view

0

98

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

181

1

수업 코드 제공 관련 문의

0

98

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

102

3

파일 오픈 시

0

70

1

스프링 배치 관련

0

78

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

114

1

postman으로 /request-body-json-v1 호출시 500 error

0

96

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

82

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

113

1

console log 출력 관련 질문입니다.

0

75

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

141

1

html 변경하는 부분 적용 문제

0

103

1

한글 깨짐

0

77

2