서블릿 배포란 무엇인가?
서블릿 배포는 개발된 서블릿을 애플리케이션 서버(예: 아파치 톰캣)에 올려서 클라이언트가 접근할 수 있도록 준비하는 과정을 말한다. 배포된 서블릿은 클라이언트의 HTTP 요청을 받아 처리하고, 동적 웹 페이지를 생성하여 응답한다.
배포 과정의 주요 단계
- 웹 애플리케이션 구조 설정
- 서블릿을 포함한 모든 웹 애플리케이션 파일을 특정 디렉토리 구조에 맞게 배치한다.
- 배포 기술
- web.xml 파일 또는 애노테이션을 사용하여 서블릿, 필터, 리스너 등을 설정한다.
- WAR 파일 생성 및 배포
- 웹 애플리케이션을 WAR (Web Application Archive) 파일로 패키징하여 배포할 수 있다.
- 서버 설정
- 웹 서버 또는 애플리케이션 서버에 웹 애플리케이션을 등록하고 실행한다.
웹 애플리케이션 구조
웹 애플리케이션의 기본 디렉토리 구조는 다음과 같다
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 파일 생성
- 프로젝트 선택:
- Eclipse에서 Dynamic Web Project를 선택한다.
- WAR 파일로 내보내기:
- 프로젝트를 우클릭하고 Export를 선택한다.
- WAR file을 선택한 후 Next를 클릭한다.
- 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 |