[JSP] 서블릿 작성, 배포, web.xml 설정에 이해

2024. 7. 2. 16:17·JAVA/JSP 프로그래밍

서블릿 배포란 무엇인가?

서블릿 배포는 개발된 서블릿을 애플리케이션 서버(예: 아파치 톰캣)에 올려서 클라이언트가 접근할 수 있도록 준비하는 과정을 말한다. 배포된 서블릿은 클라이언트의 HTTP 요청을 받아 처리하고, 동적 웹 페이지를 생성하여 응답한다.

 

배포 과정의 주요 단계

  1. 웹 애플리케이션 구조 설정
    • 서블릿을 포함한 모든 웹 애플리케이션 파일을 특정 디렉토리 구조에 맞게 배치한다.
  2. 배포 기술
    • web.xml 파일 또는 애노테이션을 사용하여 서블릿, 필터, 리스너 등을 설정한다.
  3. WAR 파일 생성 및 배포
    • 웹 애플리케이션을 WAR (Web Application Archive) 파일로 패키징하여 배포할 수 있다.
  4. 서버 설정
    • 웹 서버 또는 애플리케이션 서버에 웹 애플리케이션을 등록하고 실행한다.

 

웹 애플리케이션 구조

웹 애플리케이션의 기본 디렉토리 구조는 다음과 같다

web.xml 파일 설정

web.xml 파일은 웹 애플리케이션의 배포 설명자로서, 서블릿과 URL 매핑을 정의한다. 예를 들어, 다음과 같은 web.xml 설정을 통해 HelloServlet을 /hello URL에 매핑할 수 있다

<servlet>
		<description></description>
		<display-name>HelloServlet</display-name>
		<servlet-name>HelloServlet</servlet-name>
		<servlet-class>com.tenco.HelloServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>HelloServlet</servlet-name>
		<url-pattern>/hello-servlet</url-pattern>
	</servlet-mapping>

 

WAR 파일 생성 및 배포 (Root Context 와 .war 이름을 동일하게 설정)

WAR (Web Application Archive) 파일은 Java 웹 애플리케이션을 패키징하기 위한 표준 형식이며, 웹 애플리케이션을 구성하는 모든 파일들을 하나의 압축 파일로 묶어 포장한 것. 추가적인 메타 정보와 함께 .jar 파일과 비 슷하게 META-INF, WEB-INF 디렉토리를 포함하여 패키징.

Eclipse를 사용한 WAR 파일 생성

  1. 프로젝트 선택:
    • Eclipse에서 Dynamic Web Project를 선택한다.
  2. WAR 파일로 내보내기:
    • 프로젝트를 우클릭하고 Export를 선택한다.
    • WAR file을 선택한 후 Next를 클릭한다.
  3. WAR 파일 설정:
    • Destination 필드에 WAR 파일을 저장할 경로를 지정한다.
    • Export source files 옵션을 선택하여 소스 파일을 포함할지 여부를 결정한다.
    • Finish 버튼을 클릭하여 WAR 파일을 생성한다.

 

 

도전과제 - 클라이언트에게 JSON 형식에 데이터를 내려 보자
package com.tenco;

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;
import java.io.PrintWriter;

import org.apache.tomcat.util.json.JSONParser;


public class TodoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

    public TodoServlet() {
        super();
    }
    
    // get 요청시 동작 
    // 주소설계 - http://localhost:8080/d4/todo-servlet
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("GET 요청 확인");
		
		Todo todo1 = new Todo();
		todo1.setId(100);
		todo1.setTitle("오늘은 JSON 리턴하기 연습");
		todo1.setCompleted(false);
		
		// Gson lib 사용 가능 
		
		response.setContentType("application/json");
//		String strJson = "{\r\n"
//				+ "  \"userId\": 1,\r\n"
//				+ "  \"id\": 1,\r\n"
//				+ "  \"title\": \"delectus aut autem\",\r\n"
//				+ "  \"completed\": false\r\n"
//				+ "}";
		PrintWriter pw = response.getWriter();
		pw.print(todo1.toString());
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}

}
package com.tenco;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter

public class Todo {
	private int id; 
	private String title; 
	private boolean completed; 
	
	@Override
	public String toString() {
		
		return "{ \"id\" : "+ id +"}";
	}
}

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

[JSP] 서블릿과 서블릿 컨텍스트란?  (0) 2024.07.04
[JSP] Get, Post 요청 방식에 이해  (0) 2024.07.02
[JSP] 서블릿 Life Cycle 이란?  (0) 2024.07.02
[JSP] 서블릿이란?  (0) 2024.07.01
[JSP] 아파치 톰캣 시작과 폴더 구조 확인  (0) 2024.06.28
'JAVA/JSP 프로그래밍' 카테고리의 다른 글
  • [JSP] 서블릿과 서블릿 컨텍스트란?
  • [JSP] Get, Post 요청 방식에 이해
  • [JSP] 서블릿 Life Cycle 이란?
  • [JSP] 서블릿이란?
미로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] 서블릿 작성, 배포, web.xml 설정에 이해
상단으로

티스토리툴바