Servlet?
- 자바를 사용해서 웹페이지를 동적으로 만들 수 있는 서버 측 프로그램
- 자바 서블릿은 웹 서버의 성능 향상을 위해 사용되는 자바 클래스의 일종이다
JSP와의 차이점
- JSP : HTML in Java, *.jsp
- Servlet : Java in HTML, *.java
Servlet Life-Cycle

main 메소드가 없다 → 직접적 호출 불가능
객채의 생성&사용의 주체가 Servlet Container에 있음
- Client에서 요청(request)
- Servlet Container에서 Servlet 객체 생성&초기화
- Servlet 객체의 생성과 초기화는 한번만 일어난다!
- init() : 서블릿이 메모리에 로드 될 때 한번 호출
- 코드 수정으로 인해 다시 로드되면 다시 호출된다
- Servlet Container에서 요청에 대한 처리
- 요청시마다 반복
- service() : 모든 요청을 doXXX() 메소드로 이동시킴
- doGet() : GET 방식으로 data 전송 시 호출
- doPost() : POST 방식으로 data 전송 시 호출
- Servlet Container에서 Servlet 객체 제거
- destroy() : 서블릿이 메모리에서 해제되면 호출
- 코드가 수정되면 다시 호출된다
- destroy() : 서블릿이 메모리에서 해제되면 호출
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/LifeCycleTest")
public class LifeCycleTest extends HttpServlet {
private static final long serialVersionUID = 1L;
public LifeCycleTest() {
super();
System.out.println("객체 생성합니다.");
}
//alt + s -> override/Implement method를 통해 오버라이드 함
@Override
public void destroy() {
super.destroy();
System.out.println("객체 제거합니다.");
}
@Override
public void init() throws ServletException {
super.init();
System.out.println("객체 초기화합니다.");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("클라이언트 요청 서비스합니다.");
}
}
- 결과

Parameter 전송 방식
GET
특징
- URL 뒤에 Query String으로 데이터 전달
- 입력 값이 적은 경우나 데이터가 노출이 되어도 상관없는 경우 사용
장점
- 간단한 데이터를 빠르게 전송
- form tag & 직접 URL에 입력하는 형식으로 전송 가능
단점
- 데이터 양에 제한 있음
- location bar(url + parameters)를 통해 전송되는 데이터의 사이즈는 2048byte가 한계
POST
특징
- URL과 별도로 전송
- HTTP body에 입력 스트림 데이터로 전달
장점
- 데이터 양에 제한이 없음
- 최소한의 보안 효과
단점
- GET보다 느림
- 전송 패킷을 body에 데이터를 구성해야 하므로
URL 구조

Web Architecture
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HelloServlet implements Servlet{
@Override
//자원 해제 시 호출되는 메서드
public void destroy() {
// TODO Auto-generated method stub
}
@Override
//서블릿의 설정을 얻어오는 메서드
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
//서블릿의 설명가져오는 메서드
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
//초기화, 생성자에 해당하는 역할
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
}
@Override
//비즈니스 로직, 데이터 베이스
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
package com.ssafy.hello;
import javax.servlet.http.HttpServlet;
//HttpServlet은 추상 클래스지만... 오버라이드 하고 싶은 기능한 오버라이드 하면 된다!
public class HelloServlet extends HttpServlet{
}
'백엔드 > Servlet' 카테고리의 다른 글
| MVC 패턴으로 DB SELECT 하기 (0) | 2022.09.24 |
|---|---|
| MVC 패턴 (0) | 2022.09.24 |