2023. 10. 10. 14:02ㆍStudy/KB IT's your life 4기
2023.08.16 수업 이슈
- Servlet API
- Servlet Life Cycle 과 컨테이너 메카니즘
- 클라이언트 화면의 폼갑 프로그램으로 받아서 처리하기
- 서버내에서 페이지 이동하기
▶Servlet API
[Servlet]
➜ CGI 기술이다. 컨테이너 환경에서 실행되는 프로그램… ASP, PHP, Perl 등등
init: 기본 생성자 직후 초기화
destory : container 종료하면 호출. 서버를 강제 종료하면 안보임, 서블릿에 대한 요청을 하고(생성자 / init 실행) 난 후 수정하면, 서버가 자동으로 리스타트하는 데 이 때 보임
[ServletConfig]
➜ 한 개의 서블릿을 초기화하는 역할을 한다. 개발자가 객체 생성을 할 수 없으니, 생성자 호출이 불가능하다. 그래서 ServletConfig가 그 역할을 대신한다.
[HttpServlet]
➜ 인터넷 환경에서의 통신에 맞는 프로토콜
doGet, doPost... service함수를 재호출해서 만들어진 함수이다.
[그 이외...]
➜ servlet vs httpservlet
javax.servlet : 프로토콜 독립적 패키지, GenericServlet상속 받으면 모든 통신에서 사용가능
javax.servlet.http : 프로토콜 종속적 패키지, HttpServlet상속 받으면 http 통신에서만 사용가능 → 기능이 더 Http 프로토콜에 특화되어있다.
➜ ServletConfig vs ServletContext
ServletConfig : 한개의 서블릿을 초기화 담당
ServletContext : 글로벌 초기화 담당
▶서블릿에서 폼값 받아오기
▶요청의 기본방식 GET
form태그에서 method 요청 방식은 2가지 존재
1) get ("get it")
단순한 페이지의 연결이 주목적(데이터 전달이 주목적이 아님)
데이터 전달시 용량, 길이에 제약이 있다...
만약에 데이터 전달시 주소창에 스트링으로 붙여서 날라간다...
보안상 우려있는 데이터는 get방식 사용하면 안된다...
doGet() { 서비스 받는다... }
2) post ("post office")
서버측 프로그램에 데이터 전달이 주목적
"내가 ~~이러이러한 데이터를 전송할테니 이 데이터를 처리한 결과를 다시 보내줘"
많은 양의 데이터이거나 / 보안상 노출되면 안되는 경우 반드시 post방식 사용
데이터 용량, 길이에 제약이 없다...
doPost() { 서비스 받는다... }
▶Get, Post 요청방식에 따른 HttpServletRequest 객체의 차이점
doProcess, doHandle 메서드를 만들어서 get, post 둘다 처리할 수 있도록 한다.
▶Servlet LifeCycle Method
▶Load on startup
서블릿은 브라우저에서 최초 요청시 init() 메서드를 실행한 후 메모리에 로드되어 기능을 수행한다. 따라서, 최초요청에 대해서 실행시간이 길어질 수 있는 단점이 있다. 이런 단점을 보완하기 위해서 생긴 기능이 load-on-startup
➜ 특징
- 톰캣 컨테이너가 실행되면서 미리 서블릿을 실행
- 지정한 숫자가 0보다 크면 톰켓 컨테이너가 실행되면서 서블릿이 초기화된다.
- 지정한 숫자는 우선순위를 의미하며, 작은 숫 자부터 초기화된다.
▶Servlet이 값을 받는 통로
- Ready On 상태 --- 컨테이너 차원의 Extra Resource
- 클라이언트 요청시 --- 웹브라우저 화면의 폼값
Ect...
- 패키지는 포함 관계로 생각하면 안된다.
ex) javax.servlet 과 javax.servlet.http의 관계
- XML정보를 줄인 마킹… 이것을 ‘어노테이션’이라고 한다…