JavaRush /Blog Java /Random-MS /Tomcat di Jawa

Tomcat di Jawa

Diterbitkan dalam kumpulan
Pada satu ketika, setiap pembangun memperoleh kemahiran yang mencukupi yang dia fikirkan tentang mencipta projek sendiri untuk mempraktikkan pengetahuannya. Ia adalah paling mudah untuk menjalankan projek web, kerana pelaksanaan aplikasi web tidak dikekang oleh sebarang sekatan, seperti aplikasi desktop. Pelanggan hanya memerlukan pelayar dan boleh berinteraksi dengan aplikasi tanpa memuat turun sebarang pengedaran. Tanpa pendaftaran dan SMS, seperti yang mereka katakan (walaupun ini bergantung pada aplikasi itu sendiri). Tomcat di Jawa - 1Jadi, untuk melaksanakan aplikasi web yang baik di Jawa, anda tidak boleh melakukannya tanpa alat yang dipanggil Tomcat. Kandungan:

Tomcat sedar tentang Javarush

Tomcat dipelajari pada tahap 9 pencarian Java Collections dalam kursus JavaRush. Dalam 2 kuliah, Bilaabo akan memberitahu anda cara memuat turun dan mengkonfigurasi Tomcat , serta membina aplikasi web pertama anda .

Tomcat - apa itu?

Tomcat ialah bekas servlet sumber terbuka yang juga bertindak sebagai pelayan web. Pada pandangan pertama, Tomcat kelihatan seperti topik yang agak berat, tetapi ini tidak berlaku. Kebanyakan aplikasi Java dilancarkan menggunakan baris arahan dan melakukan beberapa tindakan. Aplikasi sedemikian melaksanakan satu fungsi yang telah ditetapkan, selepas itu ia tidak lagi dilaksanakan. Program sedemikian biasanya mempunyai kaedah mainyang boleh dilancarkan. Aplikasi web direka untuk berinteraksi dengan pelanggan. Jika terdapat permintaan daripada pelanggan, ia diproses dan respons dihantar kepada pengguna. Jika tidak, aplikasi terbiar. Bagaimana untuk melaksanakan logik sedemikian dalam aplikasi standard, memandangkan anda perlu menyokong sesi, menerima permintaan HTTP, dsb.? Kitaran while-true? Tidak, kami memerlukan penyelesaian yang boleh dipercayai di sini. Itulah gunanya Tomcat. Malah, ia adalah aplikasi Java yang menjaga pembukaan port untuk interaksi pelanggan, menyediakan sesi, bilangan permintaan, panjang pengepala dan banyak lagi operasi.

Komponen Tomcat

Tomcat mempunyai komponen yang melaksanakan fungsi tertentu yang patut diketahui. Mari kita lihat lebih dekat.

Catalina

Terima kasih kepada komponen ini, pembangun mempunyai peluang untuk menggunakan program mereka dalam bekas. Catalina melaksanakan spesifikasi API Servlet, teknologi web teras dalam pengaturcaraan web Java. Malah, Catalina ialah bekas servlet di dalam Tomcat (kita akan melihat konsep ini dengan lebih terperinci di bawah).

Jasper

Terima kasih kepada komponen ini, pengaturcara menggunakan teknologi JSP. Ini adalah seperti fail HTML, hanya ia telah membenamkan kod Java yang boleh dilaksanakan apabila halaman dihantar kepada pengguna. Ini membolehkan anda membenamkan sebarang data ke dalam halaman secara dinamik. Jasper menukar kod Java kepada HTML, dan juga menjejaki perubahan dan mengemas kininya secara automatik.

Coyote

Ini ialah komponen penting yang mendengar permintaan HTTP daripada klien pada port tertentu, menyediakan data tersebut untuk diproses dalam aplikasi, dan juga mengembalikan respons kepada pengguna. Iaitu, Coyote melaksanakan fungsi pelayan HTTP. Komponen ini boleh diterangkan secara struktur melalui rajah berikut: Tomcat di Jawa - 2Di sini gambar rajah anggaran interaksi komponen ditunjukkan "pada jari". Sebenarnya, cara Tomcat berfungsi jauh lebih kompleks, tetapi ini sudah cukup untuk pemahaman asas.

Memasang Tomcat

Untuk menggunakan Tomcat dalam Java, ia perlu dipasang pada sistem. Anda boleh membaca tentang cara memasang Tomcat dalam artikel ini, yang juga meliputi pelayan aplikasi lain. Jadi, mempunyai Tomcat yang berfungsi terbina dalam IDEA, anda boleh cuba menyediakan servlet pertama anda.

Cara membuat aplikasi web

Untuk membuat aplikasi web, anda mesti mematuhi struktur folder tertentu. IntelliJ IDEA mempunyai fungsi penjanaan aplikasi web dalam menu penciptaan projek. Setelah mencipta projek dengan cara ini, anda boleh melihat struktur ringkas: Tomcat di Jawa - 3Dalam src, seperti biasa, terdapat sumber, dan dalam folder web web.xml dan index.jsp dijana. web.xml ialah arahan untuk Tomcat tempat mencari pengendali permintaan dan maklumat lain. index.jsp ialah halaman utama aplikasi web, di mana pengguna harus pergi dahulu (ini ialah konfigurasi lalai). Sebagai larian pertama, anda hanya boleh mengedit fail index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Jika Tomcat dipasang terus dalam IDEA, anda boleh memulakan pelayan aplikasi: Tomcat di Jawa - 4Pelanggan menerima kandungan fail index.jsp dalam penyemak imbas apabila ia menavigasi ke '/', iaitu, ke halaman utama. Sekarang mari tambahkan pautan ke halaman di mana masa pelayan semasa akan ditempatkan. Untuk mencipta servlet pertama anda, anda perlu menggunakan perpustakaan servlet-api.jar yang disertakan dengan Tomcat (boleh didapati dalam folder lib). Mari buat servlet yang akan memaparkan masa pelayan semasa pada halaman. Untuk melakukan ini, anda perlu membuat kelas TimeWorker. Mari letakkan dalam folder 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);
  }
}
TimeWorkermewarisi daripada kelas HttpServletdan mengatasi doGet. Dalam kaedah ini kami menerima dua parameter - requestdan response. Sebagai contoh, requestatribut dengan nama datadan mengandungi perwakilan rentetan tarikh semasa disimpan. Kemudian ia dipanggil dan parameter dan requestDispatcherdihantar kepadanya . Pengendali telah dibuat. Sekarang anda perlu menghantar permintaan khusus kepadanya. Biarkan sebarang peralihan untuk menuju ke halaman time.jsp. Buka web.xml, masukkan konfigurasi berikut antara teg: 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>
Tag pertama - servlet- mentakrifkan nama servlet dan menentukan laluan ke kelas servlet yang akan memproses permintaan. Tag kedua - servlet-mapping- menunjukkan bahawa servlet dengan nama timeWorkerakan dipanggil apabila permintaan untuk url /time. Третий тег — welcome-file-list — указывает файл, который будет вызван при переходе на url /. Это необходимо настраивать, если существует потребность изменить файл по-умолчанию. Здесь включен для примера. Теперь при переходе на /time будет вызываться метод doGet в классе TimeWorker и отдавать page time.jsp… которой нет. Создадим ее рядом с index.jsp:
<%@ 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 идет обращение к an objectу request, которое обрамлено <%= и %>. Это теги шаблонизации. Код, заключенный в данные теги, вызывается до того, How будет отправлен клиенту. Ну а an objectы request и response доступны в таких тегах в любом jsp-файле. В данном примере туда будет подставлено текущее время serverа, которое передает сервлет 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>
Запускаем пример: Tomcat di Jawa - 5Переходим по ссылке: Tomcat di Jawa - 6Отлично, все работает. В примере мы реализовали переход с главной pages на вспомогательную, в которую был передан параметр и отображен для пользователя. При наличии проблем с запуском сервлетов рекомендую прочитать этот пост, где дают советы по решению этой проблемы. Для более полного ознакомления с сервлетами, рекомендуем прочитать статьи ( часть 1, часть 2), где автор подробно расписывает создание простейшего applications на сервлетах и jsp.

Как встроить приложение в работающий server

Несмотря на то, что встроенный Tomcat в IDEA — удобная фича, веб-приложение может быть перенесено на другой server и в другой контейнер. Рассмотрим вариант, когда необходимо встроить свое приложение в уже работающий server. Во-первых, необходимо дополнительно разобрать цель и функции контейнера сервлетов. Программа, которая приведена в примере выше — это веб-приложение. Класс TimeWorker — сервлет. Компоненты выполняют исключительно обработку requestов. Данные компоненты должны быть встроены в специальный контейнер сервлетов. Цель контейнера сервлетов — поддержка сервлетов и обеспечение их жизненного цикла. Простейший пример работы Tomcat — сканирование определенной папки с целью определить, появился ли в ней новый сервлет. Если да — инициализировать его и подготовить к приему requestов от клиентов. Если сервлет был обновлен, провести повторную инициализацию для обновления компонентов. При удалении сервлета — остановить обработку requestов, удалить сервлет из Tomcat.

Функции контейнера сервлетов

  1. Обмен данными между сервлетом и клиентами;
  2. Организация клиентских сессий;
  3. Creation программной среды для функционирования сервлета;
  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: Tomcat di Jawa - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Tomcat di Jawa - 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. Menyediakan pengurusan halaman JSP yang sangat mudah. Sebenarnya, pelayan web hanya boleh melayani html. Jasper, komponen Tomcat, menyusun kod yang terkandung dalam teg templat halaman JSP ke dalam fail HTML yang sah yang diterima oleh klien. Semua logik templat berada di dalam Tomcat, membolehkan anda menambah pembina yang kompleks pada bentuk HTML klasik.

Dan akhirnya: selalunya pemaju pemula ditanya soalan: adakah mungkin untuk menjalankan aplikasi Java tanpa mainkaedah -. Sekali pandang, kalau tengok contoh-contoh di atas memang boleh. Servis kami telah dilaksanakan tanpa main. Walau bagaimanapun, ia tidak. Tomcat mempunyai kaedah sendiri mainyang dipanggil apabila pelayan bermula. Anda boleh terperangkap bertanya soalan ini semasa temu duga.

Pautan tambahan:

Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION