記錄

Servlet) Life Cycle, @WebServlet 설정 본문

Web/Servlet

Servlet) Life Cycle, @WebServlet 설정

surhommejk 2018. 3. 29. 10:12






service는 항상 먼저 읽히며 없을시 doGet과 doPost중 하나를 찾아가고 service가 있으면 doGet과 doPost를 건너 뛴다




public void init(ServletConfig config) throws ServletException {
    //초기화 함수(자동으로 호출되는 함수)
    //호출시점 : NowServlet 클래스 파일에 대한 [최초 요청시 한번 실행 ]
    //하지만 서버의 재시작 , 개발자가 코드 수정했을 경우
    //다시 init부터 cycle이 재실행
    
    //ex)
    //서버 오픈(it.co.kr) -> WAS(서블릿:NowServlet.java)
    
    //최초 접근
    //홍길동 첫 접속자 -> it.co.kr/NowServlet 서버요청
    //NowServlet 컴파일 -> 실행(class) -> init호출 -> doGET() or doPOST()
    //둘째 접근
    //김유신 (접속자) -> it.co.kr/NowServlet 서버요청
    //메모리 (실행(class)) -> doGET() or doPOST()
    
    //init의 용도?
    //: 다른 클래스 , 함수의 공통자원 초기화 , load 하는 역활
    //ex)
    //Class.forName() 드라이버 로딩과 같이 한 번만 실행되길 원하는 처리
    //@WebInitParam 자원들을 init 함수에서 사용
    
    String drivername = config.getInitParameter("jdbcDriver");
    System.out.println("최초 요청 한번 실행 : 드라이버 로딩" + drivername);
    
}

무조건 최초 실행 한 뒤 두번째 접근부터는 init은 뛰어 넘게 되지만 만약 코드의 변경이 생기면 그 순간 이후의 최초 접근에서 다시 init이 실행되고 그 뒤부터는 init을 뛰어 넘는다





protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    System.out.println("service 함수 호출(doGET, doPOST 운명은 ???");
    doGet(request,response);
}

service함수가 만들어져 있으면 doGet과 doPost는 뛰어넘게 되지만 위 코드와 같이 강제로 doGet을 호출하면 service가 실행되다가 doGet이 실행된다





+ a

@WebServlet(
        description = "서블릿은 서버 시간을 처리하는 클래스입니다",
        urlPatterns = {
                "/NowServlet",
                "/Now.do",
                "/Now.action",
                "/Now.star"
        },
        initParams = {
                @WebInitParam(name = "id", value = "kosta",
description = "id 초기값 설정"),
                @WebInitParam(name = "jdbcDriver",value = "oracle.jdbc.OracleDriver",
description = "오라클 드라이버 클래스 제공")
        })

description : 설명

urlPatterns : 여기 형식에 맞춰 매핑된 모든 것들이 접근 주소가 된다

initParams : 초기 파라미터 설정


Comments