서블릿

제이·2023년 5월 15일
0

서블릿

  • init() : 최초로 만들어질때 딱 한번 생성.- 서블릿 객체 생성시 기본 실행 메서드. 생성자대신에 쓰는 것 같음.
  • destroy() : 종료될 때 딱 한번 생성.
  • service()메서드로 요청이 들어왔을 때 get방식인지 post방식인지 체크하고 deGet()과 doPost()가 나온다.
    service()를 직접 오버라이드 하지 않고, doGet()과 doPost()를 사용한다. 그냥 service()안에 doGet()과 doPost()가 있는데 service()사용하지 않고 바로 저 두개를 쓴다고 생각하기.


서블릿 만들 때 마법사 이용하면 이렇게 만들어 진다.
마법사는 프레임워크같은 느낌.


http://localhost:8080/05_15/FirstServlet -> urlpattern ->servletname -> <servlet의 태그안의 name> -> servletclass의 순서대로 실행된다.


url-pattern = 요청.
'.do' 뒤에 .do로 끝나면 무조건 쟤가 나온다 -> 전형적인 사용방법
을 한다라는 뜻. .do앞에 무엇이 오든지 상관없다.


서블릿이 여러개 존재할 수 있는데,
그때마다 servlet태그servlet-mapping이 만들어질 것이다.
서블릿 3.0부터는 web.xml말고 annotation에 하게도 하는데 길이도 길어지고 복잡해짐.

인위적으로 서블릿태그안의 url-pattern를 내가 만들 수 있다.
url-pattern을 내가 마음대로 바꿀 수 있다.
http://localhost:8080/05_15/a/b/c/d/FirstServlet
05_15안에 a안에 b안에 c안에 d가 실제로 존재하지 않아도 사용할 수 있다.
이것의 좋은점은? 실제로 있는 경우인지 없는 경우인지에 대한 것을 우리만 알 수 있다. 내맘대로 바꿀 수 있다. 보안상에 좋다.
유저별 페이지를 한번에 해결할 수 있다. -> 한번에 처리 가능해짐.
choonsik.jsp?class=a&age=39&gender=male
classA/male/39/choonsik.member 이렇게 바꿀 수 있다.


  • context_param : 어플리케이션전체에서.아무데서나 다 쓸 수 있음.
  • init_param : FirstServlet서블릿 내부에서만. -config.getInitParameter() or getInitParameter()로 들고 올 수 있다.
    같은 게 아니다!! 주체가 다르다.

이걸 배우는 이유는 move.jsp(모든 기능이 모여있는 jsp)같은 것들 대신에 서블릿을 사용할 거다.
사용자의 눈에 보이지 않는 jsp는 의미가 없다.

서블릿객체도 서버가 꺼질 때까지 유지가 된다.

init()이 첫 요청이 들어왔을 때 만들어진다.
web.xml에서
<load-on-startup>0</load-on-startup>를 추가하고 다시 실행하면,
init()이 요청을 안해도 init이 생긴다.
서버가 사작될 때 init으로 간다.
오래 걸리는 작업들은 미리 처리해놓은 거다.
서블릿이 여러개 있을 수 있는데 <load-on-startup>0</load-on-startup> 것이 init되는 순번이다.
그래서 0을 넣으면 제일 처음으로 시작이 된다.
init()을 적긴 적어야 하는듯.

인잇끝나면 get, post같은 게 거쳐보게 된다. init이 양이 많으면 오래 기다려야 된다. 인잇은 한번만 하면 되니까 서버가 시작될 때 미리 시작해놓는다.

걍) 세션이랑 어플리케이션 만들기
HttpSession session = request.getSession();
ServletContext application = session.getServletContext();

profile
Hello :)

0개의 댓글