1. Servlet
웹 애플리케이션에서 HTTP 프로토콜을 이용해 요청을 처리하고 응답을 하는 자바 클래스 Server + application + let(작은) = 작은 애플리케이션 서버 웹서버와 소켓으로 통신한다.
- Web server에 붙어서 뭔가를 처리해준다. WAS는 servlet을 지원해준다.
2. HTTP 프로토콜
2-1. HTTP 프로토콜
- 클라이언트와 서버가 데이터를 주고받을 때 사용하는 통신규약이다. 거의 모든 형태로의 데이터 전송이 가능하다.
2-2. HTTP 메시지 구조
- html, text, json, xml 등 거의 모든 형태로의 데이터로 전송이 가능하다.
3. WAS(Web Application Server) 의 역할
- 통신에 필요한 부가적인 것들을 대신 처리해준다. Web에 붙어서 Client의 요청을 처리하고 그 결과를 반환하는데 도움을 주는 기술이다.
- WAS로는 대표적으로 톰캣이 있다.
- WAS의 기능 중에 Servlet Container가 있다.
4. 서블릿 동작 흐름
- HTTP 요청이 오면
- WAS내부의 servlet container에서 Request, Response 객체를 새로 만들어서 서블릿 객체 호출하고
- 서블릿 객체에서 Request 객체에서 HTTP 요청 정보를 꺼내서 비즈니스 로직을 수행하고
- 다시 Response 객체에 HTTP 응답 정보를 담아서
- WAS의 servlet container가 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성해서 다시 클라이언트에 보내준다.
- !! 물론 웹 브라우저와 WAS 사이에 웹 서버가 존재한다 !!
5. 실제로 사용하려면 어떻게 하나?
- 서블릿 코드를 작성하고 컴파일할 때는 톰캣 없이도 할 수 있다. 하지만, 웹 애플리케이션으로 실행하려면 서블릿 컨테이너가 필요하다. 그래서 Tomcat을 다운받는다.
- 서블릿을 컨테이너에 등록하려면 Deployment Descriptor(배포서술자 : web.xml)을 이용한다.
6. Servlet mapping
6-1. Servlet mapping 방법
- client가 servlet에 접근할 때 원본 클래스명이 아닌 다른 명칭으로 접근할 수 있다.
- 별칭 사용 설정 방법은 web.xml을 이용한 적용과 @annontation으로 두 가지 방법이 있다.
6-2. Servlet mapping 구조
- 클라이언트가 서블릿의 url로 요청을 보내면, 톰캣이 이를 해석해 매핑된 서블릿으로 연결하는 구조이다.
- mapping 경로 잘못되면 tomcat 실행 자체가 되지 않는다.
- 정의되지 않은 경로이거나 중복된 경로를 사용하면 톰캣 서버 실행 오류가 발생한다.
6-3. web.xml 이용
- xml 파일로 매핑 정보를 관리하면 한눈에 확인하고 관리할 수 있다는 장점이 있지만, 새로운 서블릿을 추가할 때마다 파일을 이동해 매핑하고 일일이 확인해야 하는 단점이 있다.
- <servlet>과 <servlet-mapping>은 묶어서 함께 설정해야 한다.
- 사용법
- <servlet> <servlet-name>*mapping명칭<*/servlet-name> <servlet-class>*실제 클래스명*</servlet-class> </servlet> <servlet-mapping> <servlet-name>*mapping명칭*</servlet-name> <url-pattern>*사용자 접근명칭*</url-pattern> </servlet-mapping>
6-4. @annotation 이용
- 어노테이션(Annotation)이란
- 사전적 의미로는 ‘주석’을 뜻한다.
- 실제로 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다.
- 프로그램에 추가 정보를 제공해주는 메타데이터로 볼 수 있다.
- (meta data : 데이터를 위한 데이터)
- 서블릿을 새로 개발할 때 클래스 바로 윗쪽에 어노테이션만 추가하면 되므로 간편하다는 장점이 있다.
- 하지만 별도의 문서 등으로 관리하지 않으면 시스템의 모든 서블릿 매핑 정보를 한눈에 볼 수 없다는 단점이 있다.
- 사용법
- @WebServlet(“/*mapping명칭*”) public class *Servlet명* extends HttpServlet { *(Servlet code)* }
7. Servlet의 LifeCycle과 구동
7-1. Servlet LifeCycle
7-2. Servlet 구동
'Java' 카테고리의 다른 글
[Servlet] Web 통신 - Web Server 와 WAS (0) | 2025.03.18 |
---|---|
[Java] 자바 Math.pow() 함수 (0) | 2025.03.05 |
[Java] replace와 replaceAll의 차이 (0) | 2025.03.05 |
[Java] Set을 List로, List를 Set으로 (0) | 2025.03.01 |
[Java] 10진수 <-> 2진수, 8진수, 16진수 변환 (0) | 2025.03.01 |