수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

load-on-startup1/load-on-startup에 대한 내용

알프레드

2023.04.01

지금 부터 쓰는 내용은 질문겸 강좌? 도 될듯 합니다. 틀린점이 있으면 지적 받고 싶기때문입니다.

load-on-startup 에 대해 확실한 계념이 없기때문에 이렇게 올립니다. 맞는 내용일수도 있고 틀린내용일수도 있습니다.

핑크 수다님께는 이자리에 올리는점 양해 부탁드립니다.
서블릿의 생명주기 는

1) init() 메소드로 서블릿을 초기화 하게되어있습니다. (딱한번호출)

2)그리고 service() 메소드를 통해 요청에 대한 처리를 하게 되어있구요

3)톰캣 서버가 종료될때 destory() 메소드가 호출되게 되어 있습니다.
그러면 우리는 init() 메소드를 사용자가 호출한적이 있느냐에 대한 생각을 해보아야 합니다.

정답은 없다 입니다.
그럼 init()메소드는 누가 호출하느냐 에 대한 답은 서블릿 컨테이너(톰캣서버)가 알아서 호출해주게 되는것이지요

그럼 init() 메소드는 딱 한번 호출 된다고 했는데 자바문법의 생성자와 똑같다는것을 생각할수 있습니다.

그렇다면 이런 가정을 할수 있습니다. 서버는 해당 서블릿클래스에 대한 요청이 왔을때 저 init() 메소드를 한번만 호출하게 되어있습니 다. 그다음부터는 service() 메소드를 호출해서 계속 서비스를 하게 되어 있지요.서론이 길었는데요..

본론은 load-on-startup 태그의 역활은 무엇이냐 하는건데요...

저건 해당 서블릿의 초기화(init()메소드의 호출)를 언제해라 라는 의미가 되는것입니다. 저값이 음수이면 처음 처음으로 해당 서블릿에 요청이 왔을때... 이구요

정수일 경우는 숫자가 낮을수록 빨리 실행하게 되는것입니다. (아마도 0 은 젤 마지막인거 같습니다.)

load-on-startup1/load-on-startup // test서블릿
load-on-startup2/load-on-startup//test2 서블릿

이런식으로 되어 있다면 test서블릿의 init() 메소드가 먼저 호출되게 되는것이죠.. 호출되는 시점은 톰캣 기동시에 호출 되게 됩니다.
자! 이제 부터 증명에 들어가보죠...
========================test.java============================================

package action;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import javax.servlet.servletexception;
import javax.servlet.servletconfig;
import javax.servlet.servletcontext;

import java.io.*;
public class test extends httpservlet{

public void init()throws servletexception{
system.out.println(터스트 서블릿실행합니다.);
}

public void doget(httpservletrequest request,httpservletresponse response)
throws servletexception,ioexception{

response.sendredirect(http://daum.net);
}
public void destroy(){
system.out.println(테스트 서블릿 종료합니다.);
}}

=======================test2.java===============================================

package action;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import javax.servlet.servletexception;
import javax.servlet.servletconfig;
import javax.servlet.servletcontext;

import java.io.*;
public class test2 extends httpservlet{

public void init()throws servletexception{
system.out.println(터스트2 서블릿실행합니다.);
}

public void doget(httpservletrequest request,httpservletresponse response)
throws servletexception,ioexception{

response.sendredirect(http://naver.com);
}
public void destroy(){
system.out.println(테스트2 서블릿 종료합니다.);
}}
============================web.xml============================================

servletservlet-nametest/servlet-name
servlet-classaction.test/servlet-class
load-on-startup1/load-on-startup
/servlet
servlet
servlet-nametest2/servlet-name
servlet-classaction.test2/servlet-class
load-on-startup2/load-on-startup
/servlet

servlet-mapping
servlet-nametest/servlet-name
url-pattern*.test/url-pattern
/servlet-mapping
servlet-mapping
servlet-nametest2/servlet-name
url-pattern*.test2/url-pattern
/servlet-mapping
===============파일은 이렇게 설정되어 있습니다.=================================

이렇게 해놓고 실행을 해보면 터스트2 서블릿실행합니다 라는 문자열이 톰캣의 콘솔창에 찍힌후에

터스트 서블릿실행합니다 라는 문자열이 찍히는걸 확인 할수 있을겁니다.

load-on-startup /load-on-startup 태그안의 숫자를 서로 바꿔보시면 출력되는 순서가 바뀌는것을

확인 할수 있을겁니다.

즉 load-on-startup 태그는 해당 서블릿의 init() 메소드가 호출되는 시기와 순서를 정한다고 생각 하면 될듯합니다.
틀린점있으면 지적해주시기 바랍니다.
긴글 읽어 주셔서 감사합니다.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 엘핀

    흠.. 셋팅되어 있는 환경에서만 작업을 해봐서 몰랐는데 이렇게 간결하게 정리르 해주시다니 감사합니다.

  • 그림자

    맞습니다. 서블릿 사이의 초기화 순서도 중요하겠지만, load-on-startup을 사용하는 목적도 중요하겠지요.

번호 제 목 글쓴이 날짜
2694724 코딩시 폰트 문제; ㅠ 후력 2025-05-13
2694696 텍스트박스 입력에 관한 문제입니다. 딥공감 2025-05-13
2694668 [질문] 페이퍼비전 PointLight 관련 질문 드려요.. 두바다찬솔 2025-05-13
2694611 Flash Lite 2.1에서 BitmapData와 Matrix 지원안하나요? (3) 이플 2025-05-12
2694582 IE & 파이어폭스 (2) 흙이랑 2025-05-12
2694553 무비클립안의 duplicate 발동이 안돼네요; 딥보라 2025-05-12
2694523 자바 애플릿 질문좀 ^^ (6) 동이 2025-05-12
2694494 [질문] JAVA 또는 C++ 로 프로그램 개발시.. 레지스터리 등록 관련 의문점? (3) 우람늘 2025-05-11
2694469 익스6에서 css버그 나오는것 해결방법좀요 !!!! (6) 원술 2025-05-11
2694442 로컬에선 잘 나오는데 운영에 반영하면 이상하게 나와요. (8) 목화 2025-05-11
2694412 [질문] 이미지 로딩후 사이즈 조절할때 (1) 아담 2025-05-11
2694391 설치형 블로그 쓰시는 분들 어떤거 쓰세요?? (7) AngelsTears 2025-05-10
2694362 Microsoft SQL Server에서 서버만드는법 어둠 2025-05-10
2694333 for문으로 돌린 이름의 제어 (4) 레이 2025-05-10
2694308 이미지 css 도와주세요 ㅠㅠ (2) 애기 2025-05-10
2694223 [급질문]스크롤스파이의 offset값 진나 2025-05-09
2694195 li에 이미지 넣고 세로로 메뉴 구성하는 경우 (1) 예님 2025-05-09
2694167 canvas 질문요. (4) 찬늘봄 2025-05-08
2694136 왜 이렇게 나오는지 이해가 잘 가지 않네요. 부탁드리겠습니다... (2) 세련 2025-05-08
2694111 div , css 공부하고있는데요 잘모르겠어요.. 도와주세요 ㅠ_ㅠ (10) 모람 2025-05-08
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com