개발메모장

Servlet 파일생성

dorosy 2014. 12. 18. 17:13

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매핑명령어' 로 써주도록 합니다.

 

완성!!