ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코드 분석과 웹 동작 과정
    공부/리눅스 2024. 6. 17. 17:14

    test.zip
    1.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에 파일에 있는 바이트코드를 참조

Designed by Tistory.