서블릿(Servlet)
- 웹 브라우저에서 실행되는 자바 응용프로그램으로 서버에서 클라이언트 쪽으로 실행 파일을 내려받아서 실행되는 방식
- 현재는 HTML5, CSS3, JavaScript 등의 기술들의 발전으로 애플릿을 사용하고 있지 않음
- Server Side Applet으로 자바 언어로 구현되는 서버 프로그램
- 서블릿은 웹 브라우저로부터 요청을 받아 처리하고 결과를 다시 웹 브라우저로 전송하는 역할
- 일반적인 자바 클래스와 다르게 javax.servlet.http.HttpServlet 클래스를 상속해야 함
- HttpServlet 클래스는 서블릿이 웹상에서 HTTP 프로토콜을 이용해 서비스를 처리하기 위해 반드시 상속해야 하는 클래스
public class 클래스명 extends HttpServlet {
...
}
- 클라이언트에서 GET 방식으로 요청이 전송될 경우 호출되는 메소드
- 데이터를 요청할 때, url(Query String)에 포함해서 보내는 방식
- head에 데이터를 포함
- 보안적으로 취약하며, 길이의 제한이 있음
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// GET 요청에 응답할 로직을 구현
}
- 클라이언트에서 POST 방식으로 요청이 전송될 경우 호출되는 메소드
- 데이터를 요청할 때, body에 포함해서 보내는 방식
- 데이터가 url에 보이지 않기 때문에 보안에 취약하지 않
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
// POST 요청에 응답할 로직을 구현
}
- 클라이언트(웹 브라우저)에서 서버에 보내는 요청 정보를 제공하는 객체
- javax.servlet.ServletRequest를 상속
- 주요 메소드
- 서버가 클라이언트(웹 브라우저)로 보내는 응답 정보를 처리하는 객체이다.
- javax.servlet.ServletResponse를 상속한다.
- 주요 메소드
- 클라이언트가 웹 브라우저를 통해 요청을 보냄
- 해당 요청이 서블릿에 대한 요청이면 서블릿 컨테이너에게 처리를 넘김
- 서블릿에서 요청에 대한 실행이 완료된 후에는 서블릿 컨테이너가 실행 결과를 웹서버에 전달
- 웹서버는 서비스를 요청한 클라이언트에 응답
- 컨테이너의 서블릿에 대한 설정은 배표 서술자(web.xml)에 작성
- 정적인 요소는 Web Server에서 처리하고 동적인 요소는 WAS에서 처리하는 것이 일반
- 첫 번째 요청일 경우, 서블릿 객체를 생성하고 init() 메소드를 호출
- 이후 요청에 대해서는 서블릿 객체 생성, init()메소드는 호출하지 않음
- 다음에 service() 메소드가 클라이언트 요청 방식에 따라 doGet() 또는 doPost() 메소드를 호출
- 최종적으로 서블릿이 서비스되지 않았을 때 destroy() 메소드를 호출
- destroy() 메소드는 보통 서버가 종료되었을 때, 서블릿의 내용이 변경되어 재 컴파일 될 때 호출
- 배포 서술자(Deployment Descriptor)는 애플리케이션에 대한 전체 설정 정보를 가지고 있는 파일
- 배포 서술자의 정보를 가지고 웹 컨테이너가 서블릿 구동
- 웹 애플리케이션 폴더의 WEB-INF 폴더에 web.xml 파일이 배포 서술자
- 설정 정보
- Servlet 정의, Servlet 초기화 파라미터
- Session 설정 파라미터
- Servlet/JSP 매핑, MIME type 매핑
- 보안 설정
- Welcome file list 설정
- 에러 페이지 리스트, 리소스, 환경 변수
- 사용자의 요청을 서블릿에게 전달하기 위해서는 서블릿을 등록하고 매핑해야 함
- 서블릿을 등록하고 매핑하는 방법은 web.xml과 @annotation을 이용하는 방법이 있음
<servlet>
<servlet-name>서블릿 이름</servlet-name>
<servlet-class>서블릿 클래스</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>서블릿 이름</servlet-name>
<url-pattern>접근 URL 패턴</url-pattern>
</servlet-mapping>
@WebServlet("접근 URL 패턴")
public class 서블릿이름 extends HttpServlet{
// servlet code
}
'servlet-jsp' 카테고리의 다른 글
[Servlet-JSP] MVC(Model-View-Controller) 패턴 / JDBC(Java DataBase Connectivity) (0) | 2024.07.04 |
---|---|
[Servlet-JSP] 웹 통신 개요 (0) | 2024.06.28 |
[Servlet-JSP] 톰캣(Tomcat) 설치 (0) | 2024.06.28 |