-
코드 분석과 웹 동작 과정공부/리눅스 2024. 6. 17. 17:14test.zip1.46MB
1. jar 파일
cos.jar
- Java 서블릿 애플리케이션에서 파일 업로드를 처리하는데 사용되는 라이브러리
jstl.jar
- JSTL 태그 라이브러리를 정의하는데 필요한 인터페이스와 클래스를 제공
- 실제 태그 라이브러리를 구성하기 위한 기본 정의를 포함
mysql-connector-java-5.1.47.jar
- Java 애플리케이션이 MySQL 데이터베이스와 통신할 수 있게 해주는 JDBC 드라이버
- Java 애플리케이션에서 MySQL 데이터베이스에 연결하고, 쿼리를 실행, 데이터를 처리 가능
standard.jar
- JSTL 태그 라이브러리의 실제 구현을 제공
- JSP 페이지에서 사용되는 태그 라이브러리의 실제 구현 제공
2. source 파일
META-INF
- JAR 파일, WAR 파일, EAR 파일 등에서 메타데이터와 설정 정보를 포함하는 디렉토리
- 자바 애플리케이션의 배포 및 구성을 관리하는데 중요한 역할
context.xml
- JDBC : Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API
<Context> <Resource name="jdbc/MySQLDB" -- 이 이름을 통해 데이터베이스 리소스에 접근 auth="Container" -- 인증 방식 지정 (Tomcat)이 인증을 관리한다는 의미 -- 애플리케이션은 인증 정보를 제공하지 않고 컨테이너가 대신 처리 type="javax.sql.DataSource" -- 데이터베이스 연결 풀을 의미함 username="minuk" password="minuk" driverClassName="com.mysql.jdbc.Driver" -- 드라이버 클래스 이름을 지정 -- com.mysql.jdbc.Driver를 사용 factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory" -- 데이터베이스 연결 풀을 생성할 때 사용할 팩토리 클래스 지정 -- BasicDataSourceFactory를 사용하여 연결 풀을 생성 url="jdbc:mysql://localhost:3308/micom" -- 데이터베이스에 연결할 때 사용할 JDBC URL을 지정 -- localhost의 포트 3308에서 micom이라는 데이터베이스에 연결하도록 설정 maxActive="500" -- 동시에 연결할 수 있는 최대 활성 연결 수를 지정 /> </Context>
WEB-INF
- Java 웹 애플리케이션에서 중요한 설정 파일들과 라이브러리들을 포함하는 특별한 디렉토리
- WEB-INF 디렉토리는 애플리케이션의 루트 디렉토리 아래에 위치하며, 외부에서 직접 접근할 수 없도록 보호
web.xml
- Java 웹 애플리케이션의 배포 설명자
- 서블릿, 서블릿 매핑, 환영 파일 목록 등을 정의하여 애플리케이션의 동작을 설정
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>Chapter15</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>ServletTest</servlet-name> <servlet-class>ServletTest</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletTest</servlet-name> <url-pattern>/sTest</url-pattern> -- /sTest로 시작하는 URL 요청은 ServletTest 서블릿으로 라우팅 </servlet-mapping> <servlet> <servlet-name>ServletLifeCycle</servlet-name> <servlet-class>ServletLifeCycle</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletLifeCycle</servlet-name> <url-pattern>/sCycle</url-pattern> -- /sCycle로 시작하는 URL 요청은 servletLifteCycle 서블릿으로 라우팅 </servlet-mapping> <!-- 2020.02.26. by jwlee <servlet> <servlet-name>ServletLifeCycle</servlet-name> <servlet-class>ServletLifeCycle</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletLifeCycle</servlet-name> <url-pattern>/ServletLifeCycle</url-pattern> </servlet-mapping> <servlet> <servlet-name>BoardFrontControllerClass</servlet-name> <servlet-class>controller.BoardFrontController</servlet-class> </servlet> <servlet-mapping> <servlet-name>BoardFrontControllerClass</servlet-name> <url-pattern>*.bo</url-pattern> </servlet-mapping> --> </web-app>
서블릿
- Java 기반의 웹 애플리케이션에서 클라이언트의 요청을 하고, 동적 웹 콘텐츠를 생성
- HTTP 요청과 응답을 처리하는데 사용
- 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과를 전송
init()
- 초기화
- 서블릿 요청 시 맨 처음 한 번만 호출
- 서블릿 생성 시 초기화 작업을 주로 수행
service()
- HTTP 요청을 처리
- 요청에 따라 적절한 메서드를 처리
doGet(), doPost()
- 작업 수행
- 서블릿 요청 시 매번 호출
- 실제로 클라이언트가 요청하는 작업을 수행
destory()
- 종료
- 서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출
- 서블릿의 마무리 작업을 주로 수행
참고 블로그
https://velog.io/@falling_star3/Tomcat-%EC%84%9C%EB%B8%94%EB%A6%BFServlet%EC%9D%B4%EB%9E%80
[Servlet] 서블릿(Servlet)이란?
서블릿의 개념과 동작 과정, 생명주기(메서드), 인터페이스, 서블릿 컨테이너에 대해 공부하고 정리한 내용입니다.
velog.io
서블릿 매핑
- 웹 애플리케이션의 URL 구조와 서블릿 클래스를 연결
classes
- 컴파일 된 Java 클래스 파일이 포함
- 배포된 애플리케이션에서 실행
src
- Java 소스 코드 파일을 포함하며, 개발 및 컴파일 단계에 사용
동작 과정
- 개발자는 src에 코드를 작성
- ServletLifeCycle.java 등 파일은 javac 컴파일러를 사용하여 컴파일 됨
- 컴파일된 클래스 파일(.class)은 'classes' 디렉토리에 저장됨
- 바이트코드 파일로 변환됨 이는 JVM에 의해 실행
- web.xml에서 클래스 파일을 매핑하여 주어서 classes에 파일에 있는 바이트코드를 참조
'공부 > 리눅스' 카테고리의 다른 글
리눅스 환경 기반 JSP 웹 서버 구축 2 (0) 2024.06.13 리눅스 환경 기반 JSP 웹서버 구축 (0) 2024.06.12 [리눅스/Ubuntu] 셸 스크립트 프로그래밍 (0) 2023.12.14 [리눅스/Ubuntu] 리눅스 기본 사용법 (0) 2023.12.14 [리눅스] 실습 (0) 2023.09.13