Spring, Servlet

Uno·2024년 1월 5일
0

java

목록 보기
2/2

Servlet 이란?

Java언어로 작성된 클래스로, HTTP Request에 Response를 리턴한다.

(출처: https://m.blog.naver.com/ka28/221985380809)

그림에 대한 설명

  1. 사용자가 데이터를 달라고하든, 페이지를 달라고하든, HTTP 라는 약속에 맞는 요청을 보낸다.
  2. WAS는 HTTP 요청을 수신하고, URL 및 요청의 종류에 따라 적절한 Servlet을 선택하여 요청을 전달한다
  3. Servlet은 요청을 처리하기 위해 필요한 로직(데이터베이스 조회, 비즈니스 로직 처리 등)을 수행하고 Servlet은 처리 결과를 HTTP 응답 형태로 구성하여 WAS에 전달하고, WAS는 이를 클라이언트에게 전송한다.

"WAS는 HTTP 요청을 수신하고, URL 및 요청의 종류에 따라 적절한 Servlet을 선택하여 요청을 전달한다."

이 문장 중에서 "적절한 Servlet을 선택하여 요청" 부분이 web.xml 이라는 웹서버에게 전달하는 상세 지시서에 작상한다.

<servlet>
	<servlet-name>HomeServlet</servlet-name>
	<servlet-class>Home.HomeServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>HomeServlet</servlet-name>
	<url-pattern>/home</url-pattern>
</servlet-mapping>
  • web.xml 는 말그대로 WAS가 이것을 읽고, Web Application 설정대로 배포하는 것이다. 그러므로 변경이 있으면 재배포과정이 필수다.
  • Servlet 3.0 버전 부터는 어노테이션으로 지원으로 web.xml 기술하지 않아도 된다.
    - @WebServlet("/home") 이 어노테이션이다.(아래코드참조)

Servlet 구현

@WebServlet("/home")  
public class HomeServlet extends HttpServlet {  
    @Serial  
    private static final long serialVersionUID = 1L;  
    private List<String> contents;  
  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        // do something...  
    }  
}
  • 어노케이션으로 @WebServlet 이 사용되고, 여기어 web.xml에 추가했던 <url-pattern> 이 들어간다
  • serialVersionUID의 경우, 설명하자면 긴데, 요약하면 필드 변경에 대한 기록을 하여, 직렬화와 역직렬화 관련한 버전관리를 한다.
  • doGet 매서드에서 요청에 대한 응답을 구성한다.

참고자료

profile
iOS & Flutter

0개의 댓글