클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해주는 자바 프로그램.
서블릿 개발과정
- 서블릿 규약에 따라 자바 코드 작성
- 자바 코드를 컴파일 하여 클래스 파일 생성
- 클래스 파일을 /WEB-INF/classess 폴더에 패키지에 알맞게 위치시킨다.
- web.xml파일에 서블릿 클래스를 설정한다.
- 톰캣 등 컨테이너를 실행한다.
- 웹브라우저에서 확인한다.
서블릿 클래스를 구현하려면 먼저
HttpServlet 클래스를 상속받은 클래스를 작성해야 한다.
처리하고자 하는 HTTP방식에 따라 알맞은 메서드를 재정의 해서 구현해야 한다.
예를 들어 서블릿이 GET 방식의 요청을 처리해야 하면, doGet 메서드를 오버라이드 하면 된다.
doGet() 메서드는 HttpServletRequest, HttpServletResponse의 두개의 파라미터를 갖는데, 이 두 파라미터는 각각 JSP request 기본 객체와 response 기본 객체에 해당한다.
재정의한 메소드는 request를 이용해서 브라우저의 요청 정보를 읽어오던가 response를 이용해서 응답을 전송할 수 있다.
response.setContentType 을 통해 컨텐츠 타입을 지정 해야 한다.
여기서 setContentType()에 전달되는 값은 디렉티브의 contentType과 동일하다.
응답의 컨텐츠 타입을 지정 했다면 그 다음으로 응답 결과를 웹브라우저에 전송하는 것이다.
웹 브라우저에 데이터를 전송하려면 response, getWritier()로 문자열 데이터를 출력할 수 있는 PrintWriter를 구해야 한다.
PrintWriter out = response.getWriter();
out.println("<html>")
이런식으로 전송할 응답 데이터를 전달한다.
2.2 web,xml로 매핑하기
서블릿 클래스를 생성했다면
WEB-INF폴더의 web.xml 파일에 서블릿 클래스에 등록하는 것이다.
서블릿으로 사용할 클래스
서블릿과 URL간의 매핑
<servlet> 태그를 이용해서 서블릿 클래스를 등록하고
<servlet-name>서블릿을 참조할 때 사용할 이름을 입력
<servlet-class>는 서블릿으로 사용할 클래스의 완전한 이름을 입력
사용할 서블릿을 지정했다면 그 다음은 어떤 URL을 처리할 지에 대한 매핑 정보를 등록하는 것이다.
<servlet-mapping>
<servlet-name> </servlet-name>
<url-pattern> </url-pattern>
</servlet-mapping>
2.3 어노테이션을 매핑하기
3.0부터는 어노테이션을 사용하면 서블릿으로 등록된다.
@WebServlet(urlPatterns ="/hello")
이런식으로 해당 서블릿과 매핑될 URL 패턴을 지정할 때 사용한다.
두개 이상 처리하려면 배열로 선언하면 됨
어노테이션을 사용할 때 서블릿이 범용적으로 사용되는 서블릿인지 여부를 생각해봐야 한다.
MVC 프레임워크는 어떤 URL을 서블릿이 처리할 지 미리 알 수 없다.
단지 다양한 요청 URL을 MVC 프레임워크가 처리할 수 있는 기능을 구현할 수 있을 뿐이다.
이는 어노테이션을 이용할 경우 URL이 변경될 때마다 자바 소스코드의 urlPatterns의 값을 변경하고 다시 컴파일 해야 한다.
web.xml을 사용하면 해당 파일만 변경하면 된다.
2.4 HTTP 각 방식별 구현 메서드
GET, POST, HEAD, PUT, DELETE지원
각 방식에 맞게 오버라이드 하면 된다
2.5 서블릿 로딩과 초기화
/now로 패밍하면 웹브라우저에서 /now 경로로 접근하면 NowServlet을 실행하고 서블릿 컨테이너는 처음 서블릿을 실행할 때 서블릿 객체를 생성함.
웹컨테이너가 서블릿 객체를 생성하고 init() 메서드를 호출하는 과정을 서블릿 로딩과정이라고 한다. 서블릿 로딩 과정을 보면 init()을 호출함.
'개발 > Spring' 카테고리의 다른 글
필터 (0) | 2021.04.11 |
---|---|
MVC 패턴 구현 (0) | 2021.04.11 |
데이터베이스 (0) | 2021.04.11 |
자바 ConcurrentHashmap (0) | 2021.04.11 |
자바 Hashtable, HashMap (0) | 2021.04.11 |