HTTP = Hyper Text Transfer Protocol
HTTP Application
http server (= web server)
http client (= web browser)
*web Application Architecture
컴파일 방식 / 인터프리터 방식

===============================================================
* CGI (Common Gateway Interface)
- web Server 와 web Application 사이에 Data를 주고받는 규칙.

*도서
- 빌게이츠 생각의 속도
- 스티브 잡스
* Servlet Container 와 Application
- 규칙 정의 => Java EE Spec
Servlet / JSP / EJB(분산컴퓨팅 컴포넌트) / web service
/ web socker(ver.7) / DBConnection 관리 / 리소스 관리
==================================================================
Tomcat 설치
www.apache.org 에 접속하여 하단에서 Tomcat 클릭.

Tomcat7.0 클릭.

Core 에서 환경에 맞는 파일 선택.

다음 경로에 압축을 풀어준다.

이클립스와 연동하기 위해 Preferences에서 Server - Runtime Environments 에서 Add클릭.
그림 순서대로 실행.



이클립스 오른쪽 상단에서 Java EE 선택

선택하면 아래쪽 창에 Servers 가 나올것이다. 창안에 마우스 오른쪽 클릭해서
New Server 클릭하여 서버를 추가해준다.



마우스 오른쪽 클릭하여 서버를 스타트 시킨다.


================================================================
* web browser의 요청 url
* web browser의 요청 url
프로토콜://서버주소:포트번호/리소스 ID
http://localhost:9999

* web Application 배치 (deployment)
- 서버마다 배치 폴더가 다르다.
- Tomcat ( 톰캣은 Java로 만들었다.)
ex) C:\javaide\server\apache-tomcat-7.0.42
\bin 톰캣 실행 관련 파일
\conf 실행파일
\lib Tomcat java library
\work 실행 중에 임시 생성하는 파일
\webapps web app 배치 폴더

Eclipse 연동 시
- 원래 폴더 및 파일을 손대지 않는다.
- 개발을 위해 다양한 서버 환경을 구축한다.
- 설정 파일을 별도 프로젝트로 관리한다.
- 배치 폴더도 별도로 관리한다. (workspace폴더)
=====================================================================
서블릿 만들기 1
- javax.servlet.Serrvlet 인터페이스 구현
- 이 인터페이스에 선언된 메서드를 서블릿 컨테이너의 스레드가 호출한다.
서블릿의 인스턴스 생성 시점
- 클라이언트가 요청할 때
- 서버가 시작될 때 만들어지는 것이 아님!!!
- 한번 만들면 다시 만들지 않음.
서블릿 등록
- 서블릿이 실행되려면 web.xml에 등록되어야 한다.
- 1) 서블릿 선언: <servlet></servlet>
- 2) 서블릿에 url 부여: <servlet-mapping></servlet-mapping>

* 서블릿 메소드
@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
- 서블릿 인스턴스 생성 시 호출됨.
- 서블릿이 사용되기 전에 준비함.
- 딱 한번만 호출됨 => 서블릿은 하나만 생성된다.
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
}
- 클라이언트의 요청이 들어올 때 마다 호출됨.
- 실제 서비스할 작업을 기술한다.
@Override
public void destroy() {
// TODO Auto-generated method stub
}
- 웹 어플리케이션이 종료될 때 마무리 작업을 위해서 호출된다.
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
- 서블릿 컨테이너의 관리자 메뉴에서 서블릿 정보를 얻기 위해 호출한다.
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
- 서블릿 컨테이너의 관리자 메뉴에서 서블릿 정보를 얻기 위해 호출한다.
서블릿 만들기 2
- 매번 서블릿을 만들 때 마다 구현에 관심없는 메서드들도 만들기 때문에
짜증난다. ex) init(), destroy(), getServletConfig(), getServletInfo()
- 주로 어떤 작업을 수행할 것인지 service() 메서드를 구현하는데 집중할 필요가 있다.
- 대안? 도우미 클래스를 정의하여 상속 받는다.

BaseServlet 이라는 도우미 클래스를 상속받아서 사용한다.

* javax.servlet.GenericServlet 클래스
- 서블릿 생성 시 모든 메서드를 구현하는 번거로움을 막기 위해
- 미리 4개의 메서드 init(), destroy(), getServletConfig(), getServletInfo() 를 구현한
추상클래스 이다.
- 이전에 우리가 직접 만들었던 BaseServlet과 같은 역할을 한다.
한글은 깨진다...
