CGI(Common Gateway Interface)
- 웹서버가 직접적으로 웹 프로그램을 실행하는 것을 말한다. 동일한 프로그램에 대한 요청이 있을 때마다 각각 프로그램을 실행. 요청과 프로그램이 1:1 매칭되어 실행
WAS
- 웹 서버가 웹 애플리케이션 서버에 요청하면 웹 애플리케이션 서버가 해당되는 프로그램을 실행하는 방식, 한 프로그램에 여러 요청이 있는 경우 한 개의 프로그램을 실행하여 그 프로그램을 다수 요청을 처리(동적)
Ex) 동시에 여러명이 똑같은 요청을 하더라도 병렬적으로 처리하는 행위
구분 | 장점 | 단점 |
Web Server | - 빠른 처리 속도 -> 요청에 대한 결과 페이지만 전송 - 구현이 쉬움 -> HTML같은 단순한 문서만으로 구성 |
- 한정적인 서비스 -> 만들어진 정보만 보여주기 때문에 서비스가 한정적이다. - 글의 추가, 수정, 삭제가 어려움 -> 문서의 내용이 벼경될 경우 직접 수정 |
WAS | - 서비스의 다양성 -> 여러 데이터를 활용할 수 있다. - 글의 추가, 수정, 삭제가 쉽다. -> 문서의 내용이 변경될 경우 직접 수정하지 않는다. |
- 느린 처리 속도 -> 데이터를 처리하여 결과를 전송함 - 구현이 어려움 -> 서비스에 해당하는 소스를 직접 작성 |
톰캣 다운로드
https://tomcat.apache.org/download-90.cgi
Apache Tomcat® - Apache Tomcat 9 Software Downloads
Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version
tomcat.apache.org
톰캣 9 다운로드(이미 9.0.58을 다운받아서 9.0.59로 뜨는듯)
Core 부분에서 zip파일 다운

이클립스 기본 설정
Window-Preferences
encoding 검색 후 workspace, css, html, jsp 모두 UTF-8로 적용(xml은 돼있음)

spelling 검색 후 UTF-8 설저

Server-Runtime Environment 선택 후 Apache Tomcat v9.0선택 후 next

Browse 선택 후 위에서 다운로드한 Tomcat 위치를 설정해준다.


기존에 자바를 해올땐 Java로 바꿔줬지만 기본 설정된 Java EE로 그대로 사용한다.

Servers 창에서 서버가 없다는 안내가 뜬다. 클릭

아까 Runtime Environment에서 설정한 톰캣이 자동으로 설정돼있다. Finish 클릭

추가된것 더블클릭 후, run클릭하면 서버가 시작됐다는 문구가 출력된다.

port번호 8080에서 8001로 수정해준다. (이미 사용하고있는 포트번호이니 다른 포트번호로 설정)
이미 수업때 8001을 쓰고 있어서 나는 8002로 재 설정 해주었다.

Server Options에서 첫번째 체크

Window-Perspective-Customize Perspective 클릭

필요한 것들 추가하고 필요없는 것들은 빼준다.. EJB, JPA, Maven, JavaEE체크해제/Java 체크

Web은 체크해제했다가 다시 체크(내부 전체 체크), XML까지 체크해준다.

서블릿 컨테이너가 서블릿의 생명 주기를 관리해준다.
생성, 초기화, 소멸과 같은 것들을 관리해주는데 이 부분을 확인하는 프로젝트
Dynamic Web Project를 만들어보자. 웹 모듈 버전은 3.1로 선택 후 Next 클릭

Default output folder 에서 수정해준다. 원래 있는 경로이니 오타없이 잘 쳐야한다.

root는 좀 더 간결하게 써준다. 디렉토리는 위에서 설정한 web을 선택해준것. 체크박스까지 체크 후 Finish

위에서 설정한 것 Navigator에서 확인된다. 만약 위에서 오타가나서 폴더가 여러개 더 생겼다면 다시 삭제하고 똑같이 재설정해준다.

web폴더 밑에 HTML 파일을 생성해준다. 이름은 index.html

지금 작성 중인 프로젝트가 서버 위에 올라갈 수 있도록 설정해준다. 서버 우클릭해서 Add and Remove 클릭

지금 작성하고 있는 프로젝트를 Add클릭해서 Configured에 올려준다. Finish

확인하기 위해 index.html에 내용을 입력하고 연결이 잘 됐는지 확인해보자.


127.0.0.1은 본인의 아이피를 뜻하는 것이다. local host로 써도 무방하다.
아까 설정해준 포트번호 8001을 뒤에 입력해주고 아까 context path 간단하게 바꿔준 chap01 입력 후 index.html까지 입력해준다.
html에서 입력해준 것 확인 뒤에 index.html을 지워줘도 문제없이 출력된다.

서블릿이란?
- Server + Applet의 합성어. JAVA언어를 이용하여 사용자의 요청을 받아 처리하고 그 결과를 다시 사용자에게 전송하는 역할의 Class 파일을 말한다. 즉 웹에서 동적인 페이지를 java로 구현한 서버측 프로그램이라고 보면 된다.
클래스를 하나 만들어주고 HttpServlet을 extends해준다. 그리고 HttpServlet을 컨트롤+클릭해서 들어간다.

소스를 넣어주기 전에 tomcat사이트에서 Source Code Distributions zip파일을 다운받는다.

Attach Source를 클릭해서 방금 다운받은 파일을 찾아서 설정해준다. (src파일임)


public class LifeCycleTestServlet extends HttpServlet {
// 메소드 호출 횟수를 카운트하기 위한 용도의 필드
private int initCount = 1;
private int serviceCount = 1;
private int destroyCount = 1;
// 서블릿의 요청이 최초인 경우 한 번 동작하는 메소드
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("xml 매핑 init() 메소드 호출 : " + initCount++);
}
//서블릿 컨테이너에 의해 호출되며 최초 요청시에는 init()이후에 동작하고, 두 번째 요청부터는 바로 service()를 호출
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException{
System.out.println("xml 매핑 service() 메소드 호출 : " + serviceCount++);
}
//컨테이너가 종료될 때 호출되는 메소드이며 주로 자원을 반납하는 용도로 사용
@Override
public void destroy() {
System.out.println("xml 매핑 destroy() 메소드 호출 : " + destroyCount++);
}
}
내가 원하는 서블릿 매핑을 추가한다.
밑에 문단 servlet매핑 추가

index-html에 테스트 a태그 추가

웹에서 a태그 추가하면 init(최초실행) service 메소드가 호출된 것 확인된다.

계속해서 새로고침하면 service메소드 계속 호출됨

서버 중지 시키면 destroy 메소드 호출됨

'TIL > Servlet' 카테고리의 다른 글
[Servlet] mvc-1 (0) | 2022.03.18 |
---|---|
[Servlet] forward, redirect, cookie (0) | 2022.03.10 |
[Servlet] response, exception-handler (0) | 2022.03.07 |
[Servlet] Parameter(getParameter..) (0) | 2022.03.03 |
[Servlet] annotation, service method (0) | 2022.03.03 |