-
웹 애플리케이션 - 서블릿& 톰캣IT/Spring-JSP&Servlet 2020. 10. 12. 22:59
1. Server & Clinet
- 이 세상의 모든 단말기(PC, 스마트폰, 태블릿, .. )는 클라이언트이다.
- 인터넷으로 연결된 네트워크 상에서 필연적으로 정보를 요청(request)하는 쪽과 응답(response)하는 쪽이 있기 마련인데 이 때 요청하는 쪽을 클라이언트, 응답하는 쪽을 서버라 구분한다.
- 특히 서버는 웹 서버를 통해 클라이언트가 요청한 웹 페이지를 보내는 역할을 한다.
2. 정적HTML & 동적HTML
- 클라이언트에서 URL을 호출하면 웹 서버는 HTML 문서를 생성하는 프로그램을 호출해서 해당 결과를 보내주는데
- 이때 호출되는 프로그램을 "웹 애플리케이션" 이라고 부르며, JSP/Servlet이 그 기술 중 하나이다.
- 웹 애플리케이션이 생성하는 HTML 문서를 "동적 HTML 문서"라고 부르며
- 웹 서버 쪽에 파일 형태로 저장되어 있는 HTML 문서를 "정적 HTML 문서"라고 부른다.
3. 서블릿
- JAVA를 기반의 웹 애플리케이션 프로그래밍 기술로써 자바 클래스 형태로 작성된 클래스를 서블릿 클래스라고 한다.
3-1. 서블릿 작성 기술
(서블릿 규격서 기술 사항)1) 서블릿 클래스는 javax.servlet 패키지에 속하는 Servlet 인터페이스를 구현해야 한다.
- 보다 쉬운 방법으로 Servlet 인터페이스를 구현한 javax.servlet.http.HttpServlet 클래스의 서브클래스를 작성
2) doGet/doPost 메서드를 선언하고, 서블릿 클래스가 호출되었을 때 해야할 일을 정의해야 한다.
- 두 메서드는 두 개의 파라미터를 받아야 하며 아래의 타입이어야 함
첫 번째 파라미터 : javax.servlet.http.HttpServletRequest 타입
두 번째 파라미터 : javax.servlet.http.HttpServletRequest 타입
- 두 메서드는 익셉션 처리를 하여야 한다.
java.io.IOException, javax.servlete.ServletException
3) 동적 HTML 문서 생성을 위해 doGet/doPost의 두 번째 파라미터를 이용해야 한다.
- 해당 파라미터의 getWriter 라는 메서드를 호출하면 PrintWriter 타입의 객체가 리턴되며,
- 그 객체에 대해 print, println, printf 등의 메서드를 호출하면 웹 브라우저로 HTML 코드 출력 가능
4. 톰캣
- 웹 서버 안에서 서블릿과 JSP를 지원하는 부분을 "웹 컨테이너" 라고 하며
- 웹 컨테이너를 갖춘 웹 서버는 여러 종류가 있고, 그 중 톰캣을 주로 사용함
4-1. 톰캣 구조
- 톰캣이 설치된 디렉토리 내 webapps 라는 서브디렉토리가 있고 다시 ROOT 라는 서브디렉토리가 있는데, 해당 디렉토리에 있는 HTML 문서는 www.foo.com:xxxx/abc.html 과 같이 호출 가능함
(톰캣설치디렉토리\webapps\ROOT)
- 보안상, 관리상 등의 이유로 ROOT 디렉토리가 아닌 별도의 서브디렉토리를 만들어 관리하고, 해당 디렉토리에 있는 HTML 문서는 www.foo.com:xxxx/foobar/abc.html 과 같이 호출 가능함
(톰캣설치디렉토리\webapps\foobar)
5. 서블릿 클래스 설치
- 서블릿 클래스 또한 java 파일이기 때문에 컴파일하면 .class 파일이 생성됨
- 톰캣의 ROOT 디렉토리(톰캣설치디렉토리\webapps\ROOT)가 아닌 별도 서브디렉토리 아래 WEB-INF\classes 구조의 디렉토리에 .class 파일을 설치
- 해당 .class 파일을 웹 컨테이너 등록 필요
6. 서블릿 클래스 등록
- 서블릿 클래스는 "웹 애플리케이션 디플로이먼드 디스크립터(web application deployment descriptor)"에 등록 필요
- 대상파일: WEB-INF\web.xml
- web.xml 파일은 웹 애플리케이션 디렉토리마다 딱 하나씩만 만들 수 있음
- web.xml 작성 시 문서의 root 엘리먼트(문서의 최상위 엘리먼트)는 <web-app> 이어야 한다.
6-1. 서블릿 클래스 수정
- 서블릿 클래스 수정 후 톰캣을 재시작하여 메모리 상의 서블릿을 지우고 다시 로딩(reloading)해야 함
- 만약 web.xml 수정하였다면 자동으로 모든 웹 자원을 reaload하므로 재시작 필요 없음
(다만, 다소 시간이 소요되므로 즉각 반영을 원한다면 재기동 해야 함)
'IT > Spring-JSP&Servlet' 카테고리의 다른 글
[JSP/Servlet] 익셉션 처리(2/2) - web.xml 파일 처리 (0) 2020.10.28 [JSP/Servlet] 익셉션 처리(1/2) - 에러 페이지 처리, JSP/Servlet에서 에러 페이지 호출 (0) 2020.10.28 JSP 정리 (0) 2020.04.01 [java] 쿠키와 세션 (0) 2020.03.29 [인프런] 자바 스프링 프레임워크 - DI (0) 2020.03.04