Back End/Spring

서블릿과 JSP

DevHam94 2023. 3. 26. 23:41

서블릿과 JSP는 거의 같은것. 서블릿을 발전시킨게 Spring

 

@WebServlet은 @Controller + @RequestMapping과 똑같다.

서블릿의 라이프사이클

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
	@Override
    public void init() throws ServletException {
    	// 서블릿 초기화 - 서블릿이 생성 또는 리로딩 때, 단 한번만 수행됨.
        System.out.println("[HelloServlet] init()");
    }
    
    @Override // 호출될 때마다 반복적으로 수행됨.
    public void service(HttpServletRequest request, HttpServletResponse response) {
    	// 1. 입력
        // 2. 처리
        // 3. 출력
        System.out.println("[HelloServlet] service()");
    }
    
    @Override
    public void destroy(){
    	// 뒷정리 작업 - 서블릿이 제거(unload)될 때, 단 한번만 수행됨.
        System.out.println("[HelloServlet] destroy()");
    }
}

서블릿은 처음 호출할 때만 초기화를 시켜서 인스턴스를 생성시켜주고 그 다음부터는 서비스가 돌아간다. 그리고 서비스가 돌아가다가 끝낼때 destroy()메서드가 호출된다. 

서블릿은 기본적으로 싱글톤이다. 한개의 인스턴스만 만들어준다. 

 

JSP(Java Server Pages) 

jsp로 작성을하면 자동으로 서블릿으로 변환이된다. 

Java in HTML

 

서블릿은 lazy-init방식으로 지연된 초기화 형식이고. 

스프링은 early-init으로 빠른 초기화 형식이다. 미리 초기화하는 방식을 제공한다.

 

 

HTTP의 특징

 - Stateless : 상태정보를 저장하지 않는다. 

그러다보니 4개의 저장소가 있다. (1) 접근 범위 (2) 생존기간이 있다. 

 

pageContext라는 저장소에 Map이 있다. lv를 저장한다. (지역변수를 저장한다. 기본객체도 lv다.) 

el에서는 lv에 직접 접근할수가 없어서. pageContext에 저장을 먼저하고 el을 사용해야한다. 

 

 

servlet Context에 있는 application는 공통저장소고 클라이언트마다 부여된 세션은 개별저장소다. 

session은 사용자 갯수만큼 객체가 생기는 단점이 있다. 그래서 최소한의 데이터만 저장이된다. (프로그래밍 하기에는 제일편리하지만 서버에 부담이 제일크다.)

 

4가지 종유의 저장소

1. pageContext

2. application 

3. session - 클라이언트마다 하나씩 존재(편리하다)

4. request - 요청이 처리되는 동안만 존재해서 제일 부담이 적다. 

 

EL (Expression Language)

 <%=값%> => ${값}

'Back End > Spring' 카테고리의 다른 글

Controller의 매개변수  (0) 2023.03.27
JSTL(JSP Standard Tag Library)  (0) 2023.03.27
Controller 메서드의 반환타입  (0) 2023.03.26
MVC 패턴에 관하여  (0) 2023.03.26
tomcat 서버 설정  (0) 2023.03.25