ABAP DUMP ERROR 24시

서블릿, 서블릿 컨테이너란? 본문

[WEB]Back-end/Spring MVC

서블릿, 서블릿 컨테이너란?

이운형 2022. 2. 3. 20:56
반응형

# 인프런 김영한의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 개인적으로 정리한 글입니다.

 

정리


Q. 서버연결과정이 어떻게 되?

 

1. 서버 TCP/IP 연결 대기, 소켓 연결

2. HTTP Request Message 파싱 => Post 방식인지, /save url 방식인지

3. Content-type을 읽기

4. Http Body Mesaage 읽기

5. 저장 프로세스 실행

6. 비즈니스 로직 실행(DB에 저장 요청)

7. HTTP응답 Message 실행(HTTP 시작라인 생성 , Header 생성, MessageBody에 HTML 생성)

8. TCP/IP에 응답 전달, 소켓 종료

 

Q. 서블릿이 뭐야?

 

위의  6번을 제외모든것을 해주는 자바 기반의 웹 어플리케이션 프로그래밍 기술.

 

 


Q. 서블릿 사용 방법

urlPattern에 보내는 url 주소를 써주고 그 아래 어플리케이션 로직을 작성하면 된다.

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class test_servlet extends HttpServlet{
    
    @Override
    protected  void service(HttpServletRequest request, httpServletResponse response){
        // 어플리케이션 로직을 작성하시오
    }
}

 

Q. 서블릿 컨테이너는 뭐야?

톰캣과 같이 서블릿을 지원하는 WAS를 의미.

 

Q. 서블릿 컨테이너는 어떤 역할을 해?

1.서블릿 객체를 생성, 초기화,  호출, 종료하는 생명주기를 관리하는 역할

2. 싱글톤으로 관리된다

=> 고객의 요청마다 객체를 생성하는것은 좋지 않으므로

최초 로딩시점에 서블릿 객체를 미리 만들어두고 재활용하는 방법을 택한다.

이때 공유변수의 사용은 금지!! // 

3. JSP도 서블릿으로 변환되어 사용한다.

4. 동시 요청을 위한 멀티 쓰레드 처리를 지원한다. // 가장 핵심 기술

 

<공유변수 예제> 싱글톤 사용시.

public class test {
    
    private int price;
    
    public void order(String name, int price){
        System.out.println("price = " + price);
        this.price = price;
    }

    

다음과 같이 싱글톤으로 이루어진 Container를 다음과 같이 공유변수를 사용해 버린다면...

내가 로그인 했는데 상대방의 정보가 보여지는 치명적인 상황,

나는 1개 샀는데 결제가 3개가 되버리는 어이없는 상황등이 발생한다.

 

<해결책>

public int order(String name, int price){
    System.out.println("price = " + price);
    return price;
}

 

반응형
Comments