Web
[공부] Servlet
아이탬
2020. 5. 4. 17:40
Servlet프로그래밍
- 서블릿의 특징
- 여러가지 애플리케이션 기반의 응요프로그램을 개발
- 주로 HTTP 프로토콜 사용,
- 독립된 스레드 기반으로 서비스, 다중 스레드 서비스가 기본적으로 제공
- HTTP
- 특징
- Stateless(비연결상태) : 접속유지를 최소화, 클라이언트 이전의 상태를 알 수 없다.
- Keep Alive : 요청을 계속해서 보낼 수 있게 된다.
- Servlet 동작과정
- 웹 클라이언트는 웹서버에게 요청을 보냅니다.
- 요청을 해석하여, 서블릿에 대한 요청일 경우 서브릿 컨테이너에게 네트워크를 통해서 요청을 전달,
- 서블릿은 서블릿 컨테이너에 의해 인스턴스가 생성되어 필요에 따라 init()메소드가 호출되어 초기화, 서비스를 수행하기 위한 service()메소드가 호출
- 웹 서버는 서블릿 컨테이너로부터 전달받은 결과를 페이지를 웹 클라이언트에게 HTTP응답으로 되돌려 줌.
- Servlet과 JSP 변천과정
- Servlet 등장, 프레젠테이션로직와 비즈니스 로직이 분리가 안됨. 개발 및 관리가 어려움
- 위의 단점을 보완하기 위해서 JSP가 등장, JAVA, HTML .및 JavaScript코드가 혼재되니 프로그램 관리가 더 복잡해
- 모델-2 아키텍처, 모델- JAVA클래스, 뷰- JSP,, 컨트롤러- Servlet
- 프레임워크 등장, Spring, mybatis
- Servlet Life Cycle
- init() : servlet객체가 생성될 때 호출
- service() : servlet이 요청되었을 때 호출 , 객체는 한번만 생성되고, service는 여러번 가능하다
- destroy() : servlet객체가 파괴될 때 호출, (메모리에서 제거 됐을 때)
- Method 방식
- GET
- 데이터를 읽기전용으로 조회하고자 사용
- 쿼리 스트링 형태로 전달
- POST
- 요청 body에 입력 스트링을 통해서 정보를 전달하는 방식
- 전달되는 데이터의 양에 제한이 없다.
- 같은 데이터 양이면 전송 패킷 body에 데이터를 구성해야 하므로 get 방식보다 속도가 느리다.
- ServletConfig
- Servlet마다 ServletConfig객체가 별도로 대응되어 생성됨.
- ServletContext
- 서블릿이나 JSP간에 자원을 공유해서 사용하기 위한 객체
- 서블릿 페이지 이동
- Forward
- 동일 서버 내부의 서블릿 간 페이지 이동
- 동일한 서버내에서 이동하기에 최초의 request객체가 그대로 유지되어 forward
- 브라우저 상의 URL은 변화가 없다
- Redirect
- 타 서버까지 자유롭게 이동할 수 있음.
- 새로운 URL을 브라우저의 클라이언트에게 전달하여 새로운 request 생성
- 2번의 request,response가 일어남
- request 객체가 소실되어 저장 불가 (session, cookie객체에 저장)
- include
- 현재 페이지에 다른 페이지를 포함하는 것
- 최종 response에 포함됨.
- ServletContextListener
- 서블릿 컨텍스트의 상태나 HTTP 세션 객체의 상태변화에 응담하는 클래스
- SevletFilter
- 사용자 인증이나 로깅과 같은 기능들을 모든 서블릿이나 JSP가 필요로 하는 기능들
- 전처리, 후처리
- 어노테이션
- compiler 또는 JVM을 위한 주석
- 실행에 필요한 것은 아니지만 컴파일러에게 해당 클래스에 대한 정보를 알려주거나 자바 크로그램 실행에 관한 내용을 설정하는 용도로 사용
- 종류
- @WebServlet
- @WebListener
- @Webfilter