반응형
서블릿의 동작 구조
- 클라이언트가 서버에 페이지(url)를 요청한다.
- 서버는 요청 url에 매핑되는 서블릿을 호출하면서 파라미터를 전달한다.
- 서블릿이 실행되고 파라미터로 전달된 값을 처리하거나 데이터베이스와 연동한다.
- HTML과 데이터를 조합하여 재구성한 다음 클라이언트에 전달한다.
- 웹 브라우저는 수신받은 HTML 내용(CSS, 자바스크립트 포함)을 해석해서 화면에 표시한다.
예제를 통해 서블릿의 동작 구조를 알아보자.
package hello.servlet.basic;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name="helloservlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HelloServlet.service");
System.out.println("request = " + request);
System.out.println("response = " + response);
}
}
사이트 url을 요청하면 반응하는 것을 확인할 수 있다.
쿼리파라미터를 조회할 수 있다.
package hello.servlet.basic;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name="helloservlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HelloServlet.service");
System.out.println("request = " + request);
System.out.println("response = " + response);
String username = request.getParameter("username");
System.out.println("username = " + username);
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
response.getWriter().write("hello" + username);
}
}
클라이언트가 localhost:8080/hello로 요청을 보낸다. 서버는 요청 url에 매핑되는 서블릿을 호출한다. 서블릿을 실행하기 위해서는 서블릿 컨테이너가 필요하다. WAS라고 불리기도 한다.
반응형
'Spring' 카테고리의 다른 글
IntelliJ 무료버전인 경우 War파일 Gradle 설정 (1) | 2023.07.08 |
---|---|
SpringBoot 기초 개념 정리. (2) | 2023.06.14 |
비즈니스 요구사항과 설계 (1) | 2023.04.30 |
intellij spring boot, gradle 오류 발생 및 해결 (0) | 2023.04.30 |
좋은 객체 지향 설계의 5가지 원칙 (SOLID) (0) | 2023.04.30 |