Servlet Programming

Yung·2022년 9월 21일
0

Java223bitcamp

목록 보기
4/26

서블릿을 만드는 방법

javax.Servlet
Servlet Interface
: HTTP 클라이언트 요청이 들어왔을때 그 요청을 처리하는 객체에 대해 서블릿 컨테이너가 호출하는 메서드 규칙

destroy() : void
getServletConfig() : ServletConfig
getServletInfo() : String
init(ServletConfig) : void
service(ServletRequest, ServletResponse) : void
  1. WebBrowser에서 TomcatServer 요청(Http)
  2. TomcatServer에서 서블릿객체로 Service() 호출 Service()는 서블릿 인터페이스로 구현된 메소드
  3. 서블릿 객체는 작업을 수행해서 TomcatServer로 반환
  4. TomcatServer는 WebBrowser로 응답(Http)

Servlet 인터페이스의 메서드

서블릿 생명주기와(life cycle)관련된 메서드
init() : 서블릿 객체가 작업할 때 사용할 자원을 준비시키는 코드를 둔다.
service() : 요청을 처리하는 코드를 둔다.
destory() : init()에서 준비했던 자원을 해제시키는 코드를 둔다.
getServletInfo() : 서버관리 화면을 실행할때 호출한다.
getServletConfig() : 서블릿과 관련된 배치 정보를 조회할때 사용한다.

  1. Servlet Container(Tomcat Server) 에 요청이 들어오면
  2. 서블릿 객체는 최초 요청이 들어올때 생성된다.
    오직 한번만 생성한다. == 서블릿 객체는 한 개다.
    init()도 한번만 호출된다.
    		if(not exist) {
    			서블릿 객체 생성 -> init()
    		} 
  3. Service()를 호출한다.
    Service()는 :WelcomeServlet<<Servlet>> 호출한다.
  1. 서버 종료하거나 웹앱 중지시키면
  2. 생성된 모든 서블릿 destory()를 호출한다.
String s1 = new String("Hello")
s1:String <- UML 클래스 다이어그램 객체 표기법
  • 서블릿 컨테이너

    • 인사관리 웹 애플리케이션
    • 회계관리 웹 애플리케이션
    • 고객관리 웹 애플리케이션
  • 인사관리 서블릿

    • 직원등록 서블릿
    • 퇴사관리 서블릿
    • 경력조회 서블릿
      ...
서블릿 컨테이너
	웹 애플리케이션
    	서블릿
        필터
        리스너

GenericServlet

서블릿 객체의 Serialize

https://devlog-wjdrbs96.tistory.com/268
https://nesoy.github.io/articles/2018-04/Java-Serialize

HttpServlet = GenericServlet + HTTP 프로토콜 정보를 다루는 메서드를 추가

의존라이브러리 로딩

일반 App 실행 -> JVM -classpath *.jar; ... 파일 로딩

META-INF/Services/java.sql.Driver 파일에 적혀있는 클래스를 로딩한다.
-> service provider 실행 정책에 따라
즉 JDBC 들아ㅣ버 클래스를 자동으로 로딩한다.

service provider
https://kgvovc.tistory.com/38

서블릿 객체 생성과 init()

서블릿/JSP가 사용할 수 있는 공식 보관소

UML Activity 다이어그램

  • 웹앱 시작(start)
    • ServletContext(웹애플리케이션 하나당 ServletContext 한 개)
    • 세션 ID 없는 상태에서의 요청 --> HttpSession 객체가 생성 ---> 세션 종료(삭제,초기화) (로그아웃,타임아웃,무효화) | 세션 ID가 없거나, 세션 ID 무효
      : HttpSession 객체 생성(웹 브라우저당 한 개 생성)
    • 요청 -> ServletRequest 객체 생성 -> 응답(하는 순간 종료)
  • 웹앱 종료(stop)

로그인 한 동안 내내 사용할 데이터라면 httpsession
사용자의 상관없이 모든 서블릿들이 공유할 자원이라면 ServletContext에 담아라

ServletContext : DOA, Service, Connection 등
HttpSession : 로그인 사용자 정보, 여러 페이지에 걸쳐서 입력하는 데이터
ServletRequest : 요청을 처리하는 동안 서블릿 끼리 공유할 데이터
JspContext : JSP를 실행하는 동안 사용할 값

0개의 댓글