나의개발일지
Servlet 본문
728x90
Servlet이란
자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말한다.
서블릿은 JSP와 비슷한 부분이 있지만, JSP가 HTML 문서안에 JAVA 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다.
Servlet 동작 흐름
- 클라이언트의 요청
- 클라이언트가 웹 브라우저를 통해 서블릿에 대한 요청을 보낸다. 이 요청은 HTTP 프로토콜을 통해 전송된다.
- 웹 컨테이너(서블릿 컨테이너)의 요청 처리
- 클라이언트의 요청이 웹 컨테이너에 도착하면, 컨테이너는 해당 요청을 처리하기 위해 적절한 서블릿을 찾는다.
- 서블릿 인스턴스화 및 초기화
- 요청에 대응하는 서블릿이 아직 인스턴스화되지 않은 경우, 웹 컨테이너는 해당 서블릿의 인스턴스를 생성하고 초기화한다. 이 과정은 서블릿의 init() 메서드를 호출하여 이루어진다.
- 서블릿의 서비스 메서드 호출
- 요청을 처리하기 위해 서블릿의 service() 메서드가 호출된다. 이 메서드는 HTTP 요청의 메서드(GET, POST 등)에 따라 doGet(), doPost() 등과 같은 적절한 메서드를 호출하게 됩니다.
- 요청 처리 및 응답 생성
- 서블릿은 요청을 처리하고, 필요한 데이터베이스 액세스나 비즈니스 로직을 수행한다. 그 결과로 클라이언트에게 응답을 생성한다.
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 |
---|