[JSP] 서블릿이란?

2024. 7. 1. 17:07·JAVA/JSP 프로그래밍

서블릿(Servlet)은 자바 언어로 작성된 서버 측 컴포넌트로, 웹 애플리케이션에서 클라이언트의 HTTP 요청을 처리하고 동적인 웹 페이지를 생성하여 응답하는 역할을 한다.

서블릿은 Java EE (Enterprise Edition) 사양의 일부로, 주로 HTML 페이지를 생성하고 데이터베이스와 연동하여 데이터를 처리하는 데 사용된다.

 

❗컴포넌트란?

여기서 "컴포넌트"라는 개념은 독립적으로 작동할 수 있는 소프트웨어의 작은 단위이다. 서블릿은 웹 서버에서 독립적으로 실행되며, 클라이언트의 요청을 처리하고 응답을 생성하는 역할을 한다.

예를 들어, 데스크톱 프로그램이나 모바일 앱에 사용되는 메뉴바, 툴바, 본문 영역 등이 각각의 컴포넌트로 볼 수 있다.

 

서블릿의 역할

  1. HTTP 요청 처리
    • 서블릿은 클라이언트로부터 들어오는 HTTP 요청을 처리한다. 이 요청은 웹 브라우저, 모바일 애플리케이션 또는 다른 서버로부터 올 수 있다.
  2. 동적 웹 콘텐츠 생성
    • 서블릿은 데이터를 처리하여(연산) 동적으로 생성된 HTML, XML, JSON 등의 콘텐츠를 생성한다.
  3. 상태 유지
    • 서블릿은 세션을 통해 클라이언트와의 상태를 유지할 수 있다. 예를 들어, 로그인 상태 유지, 장바구니 기능 등을 구현할 수 있다.
  4. 비즈니스 로직 처리
    • 서블릿은 데이터베이스 연동, 파일 처리 등 다양한 서버 측 비즈니스 로직을 수행한다.

서블릿의 장점

  • 플랫폼 독립성: 자바로 작성되어 다양한 운영체제에서 실행될 수 있다.
  • 안정성: 자바의 강력한 예외 처리와 메모리 관리 기능을 활용할 수 있다.
  • 재사용성: 서블릿 클래스는 여러 웹 애플리케이션에서 재사용할 수 있다.
  • 확장성: 서블릿은 다양한 기능을 추가할 수 있는 확장성을 제공 있다.

서블릿의 단점

  • 복잡성: 초기 설정과 배포 과정이 복잡할 수 있다.
  • 학습 곡선: 자바와 서블릿 기술을 이해하고 사용하는 데 시간이 걸릴 수 있다.

 

package com.tenco;

import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;


/**
 * HttpServlet 클래스를 상속받아서 내가 정의한 클래스가 선언이 된다.
 * why? HTTP 프로토콜을 통한 request, response 처리를 할 수 있기 때문  
 * 
 * URL 맵핑에 대한 개념을 알자. 
 * 클라이언트가 특정 URL을 요청했을 때 해당 URL에 대응하는 서블릿을 
 * 실행하도록 설정하는 것을 의미 합니다.
 * URL 맵핑 - 2가지 방법 알아 보자.    
 */
//@WebServlet("/hello-servlet2")
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	
	// 생성자 
    public HelloServlet() {
        super();
    }

    // 해당 서블릿 클래스가 인스턴스화 될 때 단 한번 실행 하는 메서드이다. 
	public void init(ServletConfig config) throws ServletException {
	}
	
	// 메모리에서 내려가기 직전에 호출 되는 메서드이다. 
	public void destroy() {
		
	}
	
	// GET 요청으로 들어 올 때 동작 됨
	// 주소 설계 - http://localhost:8080/hello/hello-servlet 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// MIME TYPE - 인터넷 세상에서 데이터의 유형을 나타내는 표준 방식 
		
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		// 스트림을 어디에서 뽑아야 될까? 
		response.getWriter().write("<html><body><h1>HELLO</h1><body></html>");
	}

	
	// POST 요청으로 들어 올 때 동작 됨 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 문제 -> post 요청이 들어오는 것을 확인 하고 
		// 응용해서 데이터 또는 html 형식으로 응답처리 하시오!
	}

}

 

💡 MIME(Multipurpose Internet Mail Extensions) TYPE 이란?

인터넷에서 데이터의 유형을 나타내는 표준 방식이다. MIME TYPE은 주로 웹 브라우저와 웹 서버 간의 통신에서 사용된다.

MIME TYPE은 다음과 같은 형식 - "type/subtype"

주요 형식 확인

text/plain: 일반 텍스트 파일

text/html: html 형식

image/jpeg: JPEG 이미지 파일

application/pdf: PDF 문서

audio/mpeg: MP3 오디오 파일

video/mp4: MP4 동영상 파일

MIME TYPE은 웹 서버와 클라이언트 간의 통신에서 중요한 역할을 한다.

웹 서버는 요청받은 파일의 MIME TYPE을 알려주고, 클라이언트는 이 정보를 사용하여 파일을 올바르게 처리할 수 있다.

'JAVA > JSP 프로그래밍' 카테고리의 다른 글

[JSP] 서블릿 작성, 배포, web.xml 설정에 이해  (0) 2024.07.02
[JSP] 서블릿 Life Cycle 이란?  (0) 2024.07.02
[JSP] 아파치 톰캣 시작과 폴더 구조 확인  (0) 2024.06.28
[JSP] WAS와 웹 컨테이너의 역할  (0) 2024.06.28
[JSP] 웹 서버와 웹 애플리케이션 서버(WAS)  (0) 2024.06.28
'JAVA/JSP 프로그래밍' 카테고리의 다른 글
  • [JSP] 서블릿 작성, 배포, web.xml 설정에 이해
  • [JSP] 서블릿 Life Cycle 이란?
  • [JSP] 아파치 톰캣 시작과 폴더 구조 확인
  • [JSP] WAS와 웹 컨테이너의 역할
미로910
미로910
개발자를 꿈꾸는 민경이의 기록 블로그
  • 미로910
    개발 note
    미로910
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 설치 메뉴얼
      • HTML
      • JAVA
        • Java 기초
        • Java 응용
        • 자료구조
        • HTTP
        • JSP 프로그래밍
      • MySQL
        • MySQL 기본
        • 1일 1쿼리
      • CSS
      • Spring boot
      • JS
        • 게시판 만들기
      • Git
      • Flutter
        • MVVM 활용
        • 심화 버전
        • 1일 1 Flutter
      • 디자인 패턴의 활용
      • error note
      • My Project
        • [졸작] LLM 기반 특허 유사도 분석 시스템
        • 도서 관리 프로그램 (final project)
        • amigo
        • 친구 매칭 프로그램(FMP)
      • Python
      • 딥러닝
      • 네트워크
      • 공부 노트
        • 연구회
        • 자료구조
      • 기타
  • 블로그 메뉴

    • 홈
    • 전체보기
    • -----------------------
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미로910
[JSP] 서블릿이란?
상단으로

티스토리툴바