나의개발일지

Servlet 본문

Back-End/JSP | Servlet

Servlet

아. 이렇게 하면 될거 같은데.. 2024. 3. 25. 00:38
728x90



Servlet이란

자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말한다.

서블릿은 JSP와 비슷한 부분이 있지만, JSP가 HTML 문서안에 JAVA 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다.

 

Servlet 동작 흐름

  1. 클라이언트의 요청
    • 클라이언트가 웹 브라우저를 통해 서블릿에 대한 요청을 보낸다. 이 요청은 HTTP 프로토콜을 통해 전송된다.
  2. 웹 컨테이너(서블릿 컨테이너)의 요청 처리
    • 클라이언트의 요청이 웹 컨테이너에 도착하면, 컨테이너는 해당 요청을 처리하기 위해 적절한 서블릿을 찾는다.
  3. 서블릿 인스턴스화 및 초기화
    • 요청에 대응하는 서블릿이 아직 인스턴스화되지 않은 경우, 웹 컨테이너는 해당 서블릿의 인스턴스를 생성하고 초기화한다. 이 과정은 서블릿의 init() 메서드를 호출하여 이루어진다.
  4. 서블릿의 서비스 메서드 호출
    • 요청을 처리하기 위해 서블릿의 service() 메서드가 호출된다. 이 메서드는 HTTP 요청의 메서드(GET, POST 등)에 따라 doGet(), doPost() 등과 같은 적절한 메서드를 호출하게 됩니다.
  5. 요청 처리 및 응답 생성
    • 서블릿은 요청을 처리하고, 필요한 데이터베이스 액세스나 비즈니스 로직을 수행한다. 그 결과로 클라이언트에게 응답을 생성한다.

 

Servlet (Web.xml)

웹 애플리케이션의 web.xml은 서블릿 및 필터의 매핑, 세션 구성, 오류 페이지 설정 등과 같은 웹 애플리케이션의 구성 정보를 정의한다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
         
    <!-- 서블릿 매핑 -->
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.example.HelloServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
    <!-- 필터 설정 -->
    <filter>
        <filter-name>LoggingFilter</filter-name>
        <filter-class>com.example.LoggingFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>LoggingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- 오류 페이지 설정 -->
    <error-page>
        <error-code>404</error-code>
        <location>/error404.jsp</location>
    </error-page>
    
    <!-- 세션 구성 -->
    <session-config>
        <session-timeout>30</session-timeout> <!-- 세션 타임아웃 시간(분) -->
    </session-config>
    
</web-app>

 

Servlet (@WebServlet 어노테이션)

@WebServlet 어노테이션은 Servlet 3.0 스펙 이후부터 사용 가능한 것으로, web.xml 파일을 대체할 수 있는 방법 중 하나이다. 이 어노테이션을 사용하면 서블릿을 선언하고 매핑할 수 있다.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>Hello, Servlet!</h1>");
        out.println("</body></html>");
    }
}

Servlet Life-Cycle

init()

서블릿이 메모리에 로드 될때 한번 호출.

( 코드 수정으로 인해 다시 로드 되면 다시 호출 )

doGet()

GET방식으로 data 전송 시 호출.

doPost()

POST방식으로 data 전송 시 호출.

service()

모든 요청은 service()를 통해서 doXXX()메소드로 이동

destroy()

서블릿이 메모리에서 해제되면 호출

( 코드가 수정되면 호출)


Servlet Parameter

Parameter 처리

반환타입 메서드
String getParameter( String name )
String[] getParameterValues( String name )

 

728x90
반응형

'Back-End > JSP | Servlet' 카테고리의 다른 글

JSP ) JSTL Core Tag(c tag)  (0) 2023.11.16