1. 서블릿 (Servlet)
클라이언트의 HTTP 요청을 동적으로 처리하고, 그 결과를 반환하는 자바 웹 서버 애플리케이션 컴포넌트 (서블릿이 자바 웹 서버 애플리케이션 그 자체 또는 구성 단위)
2. Servlet 생성
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FirstServlet extends HttpServlet{
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
System.out.println("Hello Servlet");
}
}
3. GET / POST 요청 처리
public class Myservlet extends HttpServlet{
@Override
protected void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
if(req.getMethod().equals.("GET")){
System.out.println("GET 요청이 왔습니다.");
}
else if(req.getMethod().equals.("POST")){
System.out.println("POST 요청이 왔습니다.");
}
}
}
@Override
protected void doGet(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("GET 요청이 왔습니다.");
}
@Override
protected void doPost(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("POST 요청이 왔습니다.");
}
1. 서블릿 컨테이너 (Servlet Container)
서블릿을 관리하는 컨테이너, 즉 클라이언트의 요청에 맞게 서버의 서블릿을 구동시키는 역할
2. Apache Tomcat
3. Servlet Mapping
서블릿 컨테이너가 클라이언트의 요청을 지정된 Servlet 으로 Mapping 하는 것
web.xml 방식
- 톰캣폴더/webapps/ROOT/WEB-INF/web.xml 파일 수정
<web-app> 태그 안에 지정
<servlet>
<servlet-name> myservlet </servlet-name> // 어떤 이름으로 사용할 것인지 지정
<servlet-class> Myservlet </servlet-class> // 지정할 서블릿 클래스명 지정 (패키지포함)
</servlet>
<servlet-mapping>
<servlet-name> myservlet </servlet-name> // 해당 이름의 서블릿을
<servlet-class> /hello </servlet-class> // URL /hello 요청이 왔을 때 구동
</servlet-mapping>
</web-app>
<web-app> 태그 metadata-complete="false" 지정 // 메타 데이터를 모두 xml 에 하지 않았다는 의미
- 서블릿 클래스에 @WebServlet 어노테이션 지정
@WebServlet("/hello")
public class Myservlet extends HttpServlet{
...
}
4. Servlet 동작 과정
① 클라이언트의 요청을 서블릿 컨테이너가 받음
② web.xml 또는 어노테이션을 확인하여 지정된 서블릿을 구동
③ service() 메서드를 수행하여 Get 또는 Post 요청에 맞게 비지니스 로직 처리
④ 서블릿 처리 결과를 서블릿 컨테이너가 클라이언트에게 반환함