JavaRush /Java Blog /Random-KO /자바의 톰캣

자바의 톰캣

Random-KO 그룹에 게시되었습니다
어느 시점에서 모든 개발자는 자신의 지식을 실제로 적용하기 위해 자신만의 프로젝트를 만드는 것에 대해 생각할 만큼 충분한 기술을 얻습니다. 웹 애플리케이션의 구현은 데스크탑 애플리케이션과 같은 어떤 제한에도 의해 제한되지 않기 때문에 웹 프로젝트를 수행하는 것이 가장 쉽습니다. 클라이언트에는 브라우저만 필요하며 배포판을 다운로드하지 않고도 애플리케이션과 상호 작용할 수 있습니다. 그들이 말하는 것처럼 등록 및 SMS가 없습니다 (단, 이는 애플리케이션 자체에 따라 다릅니다). Java의 Tomcat - 1따라서 Java로 좋은 웹 애플리케이션을 구현하려면 Tomcat이라는 도구 없이는 할 수 없습니다. 콘텐츠:

Tomcat은 Javarush를 인식합니다.

Tomcat은 JavaRush 과정의 Java 컬렉션 퀘스트 레벨 9에서 학습됩니다. 2개의 강의에서 Bilaabo는 Tomcat을 다운로드하고 구성하는 방법첫 번째 웹 애플리케이션을 구축하는 방법을 알려줄 것입니다 .

톰캣 - 그게 뭐죠?

Tomcat은 웹 서버 역할도 하는 오픈 소스 서블릿 컨테이너입니다. 언뜻보기에 Tomcat은 다소 무거운 주제처럼 보이지만 그렇지 않습니다. 대부분의 Java 애플리케이션은 명령줄을 사용하여 시작되고 일부 작업을 수행합니다. 이러한 응용 프로그램은 미리 정의된 하나의 기능을 구현한 후 더 이상 실행되지 않습니다. 이러한 프로그램에는 일반적 main으로 실행할 수 있는 방법이 있습니다. 웹 애플리케이션은 클라이언트와 상호 작용하도록 설계되었습니다. 클라이언트로부터 요청이 있으면 이를 처리하고 사용자에게 응답을 보냅니다. 그렇지 않은 경우 애플리케이션은 유휴 상태입니다. 세션을 지원하고 HTTP 요청을 수락해야 하는 경우 표준 애플리케이션에서 이러한 논리를 어떻게 구현합니까? 사이클 while-true? 아니요, 여기에는 안정적인 솔루션이 필요합니다. 이것이 Tomcat의 목적입니다. 실제로 클라이언트 상호 작용을 위한 포트 열기, 세션 설정, 요청 수, 헤더 길이 및 기타 여러 작업을 관리하는 것은 Java 애플리케이션입니다.

톰캣 구성요소

Tomcat에는 알아 둘 가치가 있는 특정 기능을 수행하는 구성 요소가 있습니다. 좀 더 자세히 살펴보겠습니다.

카탈리나

이 구성 요소 덕분에 개발자는 자신의 프로그램을 컨테이너에 배포할 수 있습니다. Catalina는 Java 웹 프로그래밍의 핵심 웹 기술인 Servlet API 사양을 구현합니다. 실제로 Catalina는 Tomcat 내부의 서블릿 컨테이너 입니다 (이 개념은 아래에서 자세히 살펴보겠습니다).

벽옥

이 구성 요소 덕분에 프로그래머는 JSP 기술을 사용합니다. 이는 HTML 파일과 비슷하지만 페이지가 사용자에게 전송될 때 실행할 수 있는 Java 코드가 포함되어 있습니다. 이를 통해 모든 데이터를 페이지에 동적으로 포함할 수 있습니다. Jasper는 Java 코드를 HTML로 변환하고 변경 사항을 추적하고 자동으로 업데이트합니다.

코요테

이는 특정 포트에서 클라이언트의 HTTP 요청을 수신하고 애플리케이션에서 처리할 데이터를 제공하며 사용자에게 응답을 반환하는 중요한 구성 요소입니다. 즉, Coyote는 HTTP 서버의 기능을 구현합니다. 이러한 구성 요소는 다음 다이어그램으로 구조적으로 설명될 수 있습니다. Java의 Tomcat - 2여기에서는 구성 요소의 상호 작용에 대한 대략적인 다이어그램이 "손가락에" 표시됩니다. 실제로 Tomcat의 작동 방식은 훨씬 더 복잡하지만 기본적인 이해에는 이것으로 충분합니다.

톰캣 설치

Java에서 Tomcat을 사용하려면 시스템에 Tomcat을 설치해야 합니다. 이 문서에서 Tomcat을 설치하는 방법을 읽을 수 있으며 다른 응용 프로그램 서버도 다루고 있습니다. 따라서 IDEA에 작동하는 Tomcat을 내장하면 첫 번째 서블릿을 준비할 수 있습니다.

웹 애플리케이션을 만드는 방법

웹 애플리케이션을 생성하려면 특정 폴더 구조를 준수해야 합니다. IntelliJ IDEA는 프로젝트 생성 메뉴에 웹 애플리케이션 생성 기능이 있습니다. 이런 방식으로 프로젝트를 생성하면 간단한 구조를 볼 수 있습니다. Java의 Tomcat - 3src에는 언제나 그렇듯 소스가 있고, 웹 폴더에는 web.xml과 index.jsp가 생성됩니다. web.xml은 요청 처리기 및 기타 정보를 찾는 Tomcat에 대한 지침입니다. index.jsp는 사용자가 가장 먼저 이동해야 하는 웹 애플리케이션의 기본 페이지입니다(이것이 기본 구성입니다). 처음 실행하면 간단히 index.jsp 파일을 편집할 수 있습니다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
IDEA에 Tomcat을 직접 설치하면 애플리케이션 서버를 시작할 수 있습니다. Java의 Tomcat - 4클라이언트는 '/', 즉 메인 페이지로 이동하면 브라우저에서 index.jsp 파일의 내용을 받습니다. 이제 현재 서버 시간이 위치할 페이지에 대한 링크를 추가해 보겠습니다. 첫 번째 서블릿을 생성하려면 Tomcat과 함께 제공되는 servlet-api.jar 라이브러리(lib 폴더에서 찾을 수 있음)를 사용해야 합니다. 페이지에 현재 서버 시간을 표시하는 서블릿을 만들어 보겠습니다. 이렇게 하려면 클래스를 만들어야 합니다 TimeWorker. src/ru/javarush/tomcat 폴더에 넣으세요:
package ru.javarush.tomcat;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

public class TimeWorker extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     Date date = new Date();
     req.setAttribute("date", date.toString());
     req.getRequestDispatcher("time.jsp").forward(req, resp);
  }
}
TimeWorker클래스에서 상속 HttpServlet받고 doGet. request이 방법에서는 두 개의 매개변수( 및 ) 를 받습니다 response. 예를 들어, request이름이 data있고 현재 날짜의 문자열 표현을 포함하는 속성이 저장됩니다. 그런 다음 호출되고 매개변수 가 requestDispatcher전달됩니다 . 핸들러가 생성되었습니다. 이제 그에게 구체적으로 요청을 보내야 합니다. 어떤 전환이라도 time.jsp 페이지로 연결되도록 하세요. web.xml을 열고 태그 사이에 다음 구성을 삽입합니다. requestresponse/time<web-app>
<servlet>
   <servlet-name>timeWorker</servlet-name>
   <servlet-class>ru.javarush.tomcat.TimeWorker</servlet-class>
   </servlet>

<servlet-mapping>
   <servlet-name>timeWorker</servlet-name>
   <url-pattern>/time</url-pattern>
</servlet-mapping>

<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
첫 번째 태그 - servlet-는 서블릿의 이름을 정의하고 요청을 처리할 서블릿 클래스의 경로를 지정합니다. 두 번째 태그 - servlet-mapping-는 요청이 있을 때 해당 이름의 서블릿이 timeWorker호출됨을 나타냅니다. URL/시간. 세 번째 태그 - welcome-file-list-는 로 전환할 때 호출될 파일을 나타냅니다 url /. 기본 파일을 변경해야 하는 경우 이를 구성해야 합니다. 여기에는 예시로 포함되어 있습니다. 이제 로 이동하면 클래스의 메소드가 /time호출되어 존재하지 않는 time.jsp... 페이지가 반환됩니다. index.jsp 옆에 생성해 보겠습니다. doGet TimeWorker
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>Hello</title>
</head>
<body>
   <h1>Current server time: <%=request.getAttribute("date")%></h1>
</body>
</html>
시작은 고전적이지만 태그에는 h1개체에 대한 호소력이 포함되어 있으며 request이는 <%=및 으로 구성됩니다 %>. 템플릿 태그입니다. 이러한 태그에 포함된 코드는 클라이언트에 전송되기 전에 호출됩니다. 글쎄, 객체는 모든 JSP 파일의 이러한 태그에서 사용할 수 있습니다 request. response이 예에서는 서블릿이 전송하는 현재 서버 시간이 해당 위치로 대체됩니다 TimeWorker. 편의를 위해 index.jsp 파일에 대한 링크를 만듭니다 /time.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
   <a href="/time">Узнать текущее время serverа</a>
 </body>
</html>
예제를 실행해 보겠습니다. Java의 Tomcat - 5링크를 따라가세요. Java의 Tomcat - 6좋습니다. 모든 것이 작동합니다. 예제에서는 기본 페이지에서 매개변수가 전달되어 사용자에게 표시되는 보조 페이지로의 전환을 구현했습니다. 서블릿을 실행하는 데 문제가 있는 경우 이 문제를 해결하기 위한 팁을 제공하는 이 게시물을 읽어 보시기 바랍니다 . 서블릿에 대한 보다 완전한 소개를 보려면 저자가 서블릿과 jsp를 사용하여 간단한 애플리케이션을 만드는 방법을 자세히 설명하는 기사( 1부 , 2부 )를 읽어 보는 것이 좋습니다.

실행 중인 서버에 애플리케이션을 포함시키는 방법

IDEA에 내장된 Tomcat은 편리한 기능이지만 웹 애플리케이션을 다른 서버와 다른 컨테이너로 이동할 수 있습니다. 이미 실행 중인 서버에 애플리케이션을 포함해야 하는 경우 옵션을 고려해 보겠습니다. 먼저, 서블릿 컨테이너의 목적과 기능을 좀 더 이해할 필요가 있다 . 위의 예에 표시된 프로그램은 웹 애플리케이션입니다. 클래스 TimeWorker는 서블릿입니다. 구성요소는 독점적으로 요청 처리를 수행합니다. 이러한 구성 요소는 특수 서블릿 컨테이너에 내장되어야 합니다. 서블릿 컨테이너의 목적은 서블릿을 지원하고 수명주기를 보장하는 것입니다. Tomcat 작동 방식에 대한 가장 간단한 예는 특정 폴더를 검색하여 새 서블릿이 해당 폴더에 나타나는지 확인하는 것입니다. 그렇다면 이를 초기화하고 클라이언트로부터 요청을 받을 수 있도록 준비하십시오. 서블릿이 업데이트된 경우 다시 초기화하여 구성 요소를 업데이트합니다. 서블릿을 삭제할 때 요청 처리를 중지하고 Tomcat에서 서블릿을 제거하십시오.

서블릿 컨테이너 기능

  1. 서블릿과 클라이언트 간의 데이터 교환
  2. 클라이언트 세션 구성
  3. 서블릿 기능을 위한 소프트웨어 환경 생성
  4. Идентификация и авторизация клиентов;
  5. В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Во-вторых, необходимо разобраться, How установить свой сервлет.

Установка сервлета

Tomcat принимает для обработки веб-applications на Java, которые имеют расширение .war. Это How jar, только web. Файлы такого типа объединяют в себе JSP-файлы, сервлеты, class-файлы, статические ресурсы и прочее. При установке такого file в Tomcat происходит его распаковка, а затем запуск, поэтому существует строгое требование к структуре файлов в проекте. Если проект был создан в IDEA, вся структура создана автоматически. Файл war можно создать стандартными средствами IDEA. Для этого необходимо зайти в ProjectStructure -> Artifacts -> Нажать “ +” -> WebApplication: Archive. В открывшемся поле задать Name для итогового war-file, например deployed_war. Ниже необходимо нажать на кнопку Create Manifest… Далее необходимо указать way to папке web проекта. В ней будет создана папка META-INF, в которую будет помещен файл MANIFEST.MF. Далее следует нажать Apply и Ok. Whatбы собрать проект в war-файл, следует во вкладке Build выбрать опцию Build Artifact: Java의 Tomcat - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Java의 Tomcat - 8Теперь можно деплоить этот файл в Tomcat. Деплой applications проще всего выполнить из веб-интерфейса Tomcat. Просто нажмите кнопку выбора file на вкладке Deploy, перейдите к местоположению file WAR и выберите его, затем нажмите кнопку развертывания. В обоих случаях, если все пойдет хорошо, консоль Tomcat сообщит нам, что развертывание прошло успешно примерно таким выводом в консоль: INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms

Польза Tomcat для разработки

Для разработчиков контейнеры сервлетов имеют огромную роль, так How решают целый спектр проблем. Для программирования на Java Tomcat обеспечивает несколько серьезных преимуществ:
  1. Самое главное, Tomcat может выполнять роль полноценного web-serverа. Благодаря этому развертывание приложений происходит гораздо быстрее, чем было раньше.Также Tomcat может выступать в роли классического контейнера сервлетов, который можно встроить в более крупный веб-server.

  2. Tomcat способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.

  3. JSP 페이지의 매우 편리한 관리를 제공합니다. 실제로 웹 서버는 HTML만 제공할 수 있습니다. Tomcat의 구성 요소인 Jasper는 JSP 페이지 템플릿 태그에 포함된 코드를 클라이언트가 수신하는 유효한 HTML 파일로 컴파일합니다. 모든 템플릿 로직은 Tomcat 내에 상주하므로 고전적인 HTML 양식에 복잡한 생성자도 추가할 수 있습니다.

마지막으로 main 초보 개발자는 -method 없이 Java 애플리케이션을 실행할 수 있는지에 대한 질문을 자주 받습니다 . 얼핏 보면 위의 예를 보면 가능하다는 생각이 든다. 우리 서블릿은 main. 그러나 그렇지 않습니다. mainTomcat에는 서버가 시작될 때 호출되는 자체 메서드가 있습니다 . 면접에서 이런 질문을 하면 잡힐 수 있습니다.

추가 링크:

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION