학습 목표
1. 아파치 톰캣을 실행 시켜 보자.
2. 톰캣 안에 구성되어 있는 각각에 폴더들을
1. 아파치 톰캣을 실행 시켜 보자.



2. 톰캣 안에 구성되어 있는 각각에 폴더들을 살펴 보자.
[Tomcat 설치 폴더]
├── bin # 실행 가능한 스크립트 및 실행 파일
├── conf # 구성 파일
├── lib # 톰캣 및 웹 애플리케이션에 필요한 라이브러리
├── logs # 로그 파일
├── temp # 임시 파일
├── webapps # 웹 애플리케이션 파일 (WAR 파일 및 압축 풀린 애플리케이션)
└── work # JSP 컴파일된 파일 및 임시 데이터 저장소
- bin (바이너리)
실행 가능한 스크립트 및 실행 파일이 포함된 곳입니다.
여기에는 톰캣을 시작하고 중지하는 스크립트 등이 있습니다. - conf (구성)
구성 파일이 있는 곳입니다.
여기에는 서버 설정, 웹 애플리케이션 설정, 사용자 정의 설정 등이 포함됩니다. - lib (라이브러리)
톰캣 및 웹 애플리케이션에서 사용하는 라이브러리가 있는 곳입니다.
이 라이브러리들은 클래스로더에 의해 로드되어 애플리케이션에 사용됩니다. - logs (로그)
톰캣의 로그 파일이 저장되는 곳입니다.
이곳에는 서버 작동에 대한 정보, 오류 및 경고 메시지 등이 포함됩니다. - temp (임시)
임시 파일이 저장되는 곳입니다.
예를 들어, 웹 애플리케이션의 업로드된 파일이 여기에 저장될 수 있습니다. - webapps (웹 애플리케이션)
웹 애플리케이션 (WAR 파일 또는 압축이 풀린 애플리케이션)이 배치되는 곳입니다.
이 디렉토리에 애플리케이션을 추가하면 톰캣이 자동으로 인식하고 실행합니다. - work
JSP 파일의 컴파일된 결과 및 임시 데이터가 저장되는 곳입니다.
톰캣은 JSP 파일을 처음 요청할 때 컴파일하여 여기에 저장합니다.
💡 Apache Tomcat 이란?
Apache Tomcat은 Apache Software Foundation에서 개발한 오픈 소스의 웹 애플리케이션 서버입니다.
Tomcat은 자바 Servlet과 JSP를 실행하기 위한 웹 애플리케이션 서버로, 클라이언트의 요청에 대해 정적인 웹 페이지를 제공하거나, Servlet과 JSP 등의 동적인 웹 페이지를 생성하여 제공합니다.
Tomcat은 Apache 웹 서버와 같은 방식으로 동작하며, 클라이언트의 요청을 처리하기 위해 HTTP 프로토콜을 사용합니다. Tomcat은 웹 애플리케이션을 실행하기 위한 웹 컨테이너(Web Container)로서, 서블릿 컨테이너(Servlet Container)와
JSP 컨테이너(JSP Container)를 포함합니다.
Tomcat은 자바 EE(Enterprise Edition) 기술을 사용하여 Servlet, JSP, JDBC 등의 자바 기술들을 사용할 수 있습니다. Tomcat은 다른 웹 서버와 마찬가지로, 웹 서버와 연동하여 사용할 수 있습니다. 또한, Tomcat은 모듈화되어 있어
필요한 기능들을 선택적으로 사용할 수 있습니다.
Tomcat은 무료이며, 오픈 소스로 제공되어 누구나 자유롭게 사용할 수 있습니다.
Tomcat은 여러 운영체제에서 실행할 수 있으며, 안정성과 성능면에서 우수한 성능을 발휘합니다.
프로젝트 및 패키지 생성



vscode 폴더 만들어( work_vscode )서 a.html 파일 만들기
서블릿과 JSP 파일 만들어 보기
echo2.java
package com.tenco;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet(name = "echo2", urlPatterns = {"/echo2"}) // 요청을 응답을 처리하는 클래스
public class Echo2 extends HttpServlet {
public Echo2() {
super(); // 상위 생성자
}
// http:// <-- 프로토콜 요청
// http://localhost:8080 <-- 서버 컴퓨터의 호스트 주소
// get 요청 방식
// http://localhost:8080/demo_3/echo2
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// request -> req(
System.out.println("doGet 메서드 호출 확인 ");
// 자바.io 객체 (스트림을 통해 데이터를 넣을 예정)
PrintWriter pw = resp.getWriter();
// pw.print("안녕 반가워 ~ abc");
pw.print("<!DOCTYPE html>");
pw.print("<html>");
pw.print("<head>");
pw.print("<meta charset=\"UTF-8\">");
pw.print("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">");
pw.print("<title>Document</title>");
pw.print("</head>");
pw.print("<body>");
pw.print("<section>");
pw.print(" <p style=\"color: red;\">Hello First Servlet 반가워</p>");
pw.print("</section>");
pw.print("</body>");
pw.print("</html>");
resp.setContentType("text/html; charset=utf-8"); // html 형식 uft-8
}
// post 요청 방식
// http://localhost:8080/deom_3/echo2
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
}
http://localhost:8080/demo_3/echo2 << 주소창 검색
echo.java
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;
@WebServlet(name = "echo", urlPatterns = {"/echo"})
public class Echo extends HttpServlet {
private static final long serialVersionUID = 1L;
public Echo() {
super();
}
@Override
public void init() throws ServletException {
System.out.println("Echo 서블릿 클래스가 --> 컴파일 --> .class 파일로 변환");
System.out.println("init() 메서드는 인스턴스화 될 때 딱 한번 호출 되는 메서드");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
// 객체를 재사용하는 방식
}
// POST 요청시 동작 하는 메서드
// 주소 설계
// http://localhost:8080/demo_3/echo
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("안녕 서버측 콘솔에서 출력을 합니다.");
}
@Override
public void destroy() {
System.out.println("메모리에서 내려갈 때 호출 되는 메서드");
}
}
Home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>home.jsp 파일 입니다</h1>
<p>주소 설계 : http://localhost:8080/demo_3/home.jsp</p>
</body>
</html>
http://localhost:8080/demo_3/home.jsp << 입력


'Java' 카테고리의 다른 글
| 2024.06.28 JSP 프로그래밍 기본 서블릿 Life Cycle 이란? (0) | 2024.06.28 |
|---|---|
| 2024.06.28 JSP 프로그래밍 기본 서블릿 이란? (0) | 2024.06.28 |
| 2024.06.27 JSP 프로그래밍 기본 아파치 톰캣 설치하기 (0) | 2024.06.27 |
| 2024.06.27 JSP 프로그래밍 기본 WAS와 웹 컨테이너의 역할 (0) | 2024.06.27 |
| 2024.06.27 JSP 프로그래밍 기본 웹 서버와 웹 애플리케이션 서버(WAS)란? (0) | 2024.06.27 |