일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- gtihub
- mysql
- PostgreSQL
- git pat
- API
- JPA
- 르세라핌
- 자바
- mssql
- IntelliJ
- ANTIFRAGILE
- db종류
- 데이터내보내기
- analytics4
- DBMS
- 애널리틱스4
- 11월순위
- oracle
- java
- codeium
- SQL
- 오블완
- spring
- docker
- 명령어
- pat발급
- macvlan
- Python
- 티스토리챌린지
- Today
- Total
hanker
Java - Java Servlet 이란? 본문
Servlet은 자바기반의 웹 애플리케이션을 개발하기 위해 사용되는 서버 측 기술로, 클라이언트의 요청을 처리하고 동적으로 결과를 생성하여 응답하는 역할을 한다.
Servlet은 Java EE (이전의 J2EE)의 핵심 구성 요소 중 하나이며, 주로 HTTP 요청과 응답을 처리하기 위해 사용된다.
(현재는 거의 사용하지 않음)
주요 특징
1. Java 기반
- 플랫폼 독립적인 Java로 작성되어 다양한 환경에서 실행 가능
2. 웹 요청 처리
- HTTP 프로토콜을 기반으로 클라이언트 요청(예: GET, POST 등)을 처리하고 동적으로 HTML, JSON 등 다양한 형식의 데이터를 생성
3. 컨테이너에서 실행
- 서블릿 컨테이너(Tomcat, Jetty 등) 내에서 실행되며, 요청 수명 주기를 관리
4. 확장성
- 객체 지향적으로 설계되어 다양한 웹 애플리케이션 기능을 쉽게 확장 가능
Servlet의 역할
- 클라이언트로부터 요청 수신
- 요청 처리 (비즈니스 로직 수행 또는 데이터베이스와의 연동)
- 처리 결과를 응답으로 반환
예제.
@WebServlet("/processRequest")
public class ProcessRequestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 클라이언트 요청 처리
String name = request.getParameter("name");
if (name == null || name.isEmpty()) {
name = "Guest";
}
String greetingMessage = "Hello, " + name + "! Welcome to the Servlet example.";
response.setContentType("text/html; charset=UTF-8");
response.getWriter().write("<html>");
response.getWriter().write("<head><title>Servlet Example</title></head>");
response.getWriter().write("<body><h1>" + greetingMessage + "</h1></body>");
response.getWriter().write("</html>");
}
}
Servlet 작동 방식
1. 클라이언트 요청: 브라우저 또는 다른 클라이언트가 HTTP 요청을 보냄.
2. 컨테이너: 서블릿 컨테이너가 요청을 받아 서블릿에 전달.
3. 요청 처리: 서블릿이 요청을 처리하고 필요한 응답 데이터를 생성.
3. 응답 반환: 처리된 결과를 HTTP 응답으로 클라이언트에게 전송.
Servlet 수명 주기 (Life Cycle)
Servlet은 특정 생명 주기 메서드를 통해 관리됩니다.
초기화 (init):
- 서블릿 객체가 처음 생성될 때 한 번 호출.
- 초기화 작업 수행.
서비스 (service):
- 클라이언트 요청마다 호출되며, doGet(), doPost()와 같은 메서드로 분기.
소멸 (destroy):
- 서블릿이 제거될 때 호출되며, 자원 해제 작업 수행.
Servlet의 장점
효율성: 서버 측에서 실행되어 클라이언트의 부담을 줄임
유연성: 동적 페이지와 다양한 데이터 형식을 생성 가능
안정성: Java의 강력한 예외 처리 및 보안 기능 활용
Servlet의 단점
1. 코드 복잡성: JSP, Spring MVC와 비교하면 직접적인 HTML 처리와 비즈니스 로직 분리가 어렵다.
2. 유지보수 어려움: 대규모 프로젝트에서는 코드의 가독성과 확장성이 떨어질 수 있음.
정리
Servlet은 여전히 사용되지만, 현재 웹 개발에서는 Spring Framework와 같은 프레임워크를 사용하는 것이 일반적이다.
이러한 프레임워크는 서블릿 기반이지만, 개발자가 직접 서블릿을 다룰 필요 없이 더 고수준의 구조와 기능을 제공한다.
끝.
'JAVA' 카테고리의 다른 글
Java - CheckedException과 UncheckedException이 뭐지? (0) | 2024.12.06 |
---|---|
Java - 컴파일타임(Compile Time)과 런타임(Run Time)이 뭘까? (0) | 2024.12.05 |
JAVA - JAVA에서 쓰레드란 무엇이며, 어떻게 생성할까? (0) | 2024.12.03 |
JAVA - JAVA에서 가비지 컬렉션(GC)이란 무엇일까? (0) | 2024.12.02 |
JAVA - JAVA에서 제네릭이란 무엇일까? (0) | 2024.12.01 |