Servlet 파일생성
1. server 등록!
일단, servlet 파일을 사용하려면 server 를 등록해주어야 합니다.
프로젝트를 지정해주고 마우스 오른쪽 클릭 -> 속성 -> Targeted Runtime
-> Apache Tomcat v7.0 선택해주고 확인!
2. servlet 파일 생성
프로젝트를 지정해주고 마우스 오른쪽 클릭 -> New -> Servlet
java package 이름 지정해주고
클래스 이름 지정해주고 Finish
(url 매핑 명령어를 다르게 지정해주고 싶다면 => Next -> name에 url 매핑 명령어를 입력해 준후 Finish)
/*
* 웹 : 처음에는 정적이 html로만 구성. 시간이 지나면서 동적인 컨텐츠의 표현요구가 생성
* 서버와 외부의 기관 또는 프로그램(동적 컨텐츠 제공) 을 연결하기 위한 표준이 필요
* CGI(Common Gateway Interface) 가 만들어지고 프로그래밍 (단점 : 어렵다.)
* -> 서블릿, asp, php 등의 2세대 기술이 만들어진다.
*
* 서블릿 : 자바 클래스 형태의 웹 어플리케이션
* 웹 서버는 서블릿을 실행할 수 없기때문에 서블릿을 실행해주는 서버가 필요
* -> 컨테이너라고 부른다.
* HttpServlet을 상속하여 요청을 처리하는 자바 클래스
* 스스로 main을 가지지 않고 요청 발생시 컨테이너가 객체를 생성
*
* 서블릿/jsp 컨테이너 톰캣
* html 요청을 처리하는 웹 서버와 협력하여 동적으로 html 을 만들어 내는 역할
* 사용자가 jsp/서블릿에 대한 요청을 하면 아파치, IIS, nginX와 같은 웹 서버는
* 자신이 처리할 요청이 아니라는 사실을 파악하고 컨테이너에 요청을 전달
* 컨테이너는 서블릿 객체를 이용해 처리한 다음 html을 웹 서버로 돌려준다.
*
* 서블릿의 동작 과정
* 1. 요청이 들어왔는데 서블릿이 존재하지 않는다면 서블릿 클래스 로딩
* 2. 생성자를 호출하여 인스턴스를 생성
* 3. 인스턴스의 init() 메소드 호출
* 서블릿 생명주기에서 단 한번만 실행되며 각종 초기화 작업을 수행
* 생성자와 뭔 차이? 프로그래머는 생성자를 사용하지 않음 (super()를 지우면 안되는 상황이 있기 때문에.)
* 4. 스레드를 생성해 사용자 별 요청을 처리
* 요청을 처리하는 메소드는 service()
* 요청에 따라 service()에서 doPost(), doGet()이 호출
* 5. 서블릿 종료 시 destroy() 호출
* 효율을 위해 컨테이너는 서블릿을 메모리에 계속 유지한다.
* destroy() 실행을 확인하기는 어렵다.
* */
<!-- 서블릿의 Life Cycle(수명주기)
사용자의 첫 요청일 때 컨테이너가 서블릿 객체를 생성
초기화: init()
처리 : service() -> doPost(), doGet()
뒷정리 : destroy() -->
3. 실행
마우스 오른쪽 클릭 -> run as -> run on server -> 서버 선택 후 finish
결과화면
<xml 파일에서 url 매핑>
HelloWorld.java 파일에 있던 어노테이션 '@WebServlet("/HelloWorld1") ' 을 지우고!
WebContent 의 WEB_INF 의 web.xml 파일로 가도록 합니다.
<servlet>
<servlet-name>param</servlet-name>
<servlet-class>ch1.HelloWorld1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>param</servlet-name>
<url-pattern>/HelloWorld1</url-pattern>
</servlet-mapping>
그리고 이 코드를 추가해주세요.
서블릿 네임은 같은 값으로 해주고,
서블릿 클래스는 '패키지명.클래스명' 으로,
url 패턴은 '/url매핑명령어' 로 써주도록 합니다.
완성!!