- Tomcat sedar tentang Javarush
- Tomcat - apa itu?
- Komponen Tomcat
- Memasang Tomcat
- Cara membuat aplikasi web
- Bagaimana untuk membenamkan aplikasi ke dalam pelayan yang sedang berjalan
- Faedah Tomcat untuk pembangunan
- Pautan tambahan
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 kaedahmain
yang 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: Di 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: Dalam 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: Pelanggan 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);
}
}
TimeWorker
mewarisi daripada kelas HttpServlet
dan mengatasi doGet
. Dalam kaedah ini kami menerima dua parameter - request
dan response
. Sebagai contoh, request
atribut dengan nama data
dan mengandungi perwakilan rentetan tarikh semasa disimpan. Kemudian ia dipanggil dan parameter dan requestDispatcher
dihantar 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: request
response
/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 timeWorker
akan dipanggil apabila permintaan untukwelcome-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>
Запускаем пример:
Переходим по ссылке:
Отлично, все работает. В примере мы реализовали переход с главной pages на вспомогательную, в которую был передан параметр и отображен для пользователя. При наличии проблем с запуском сервлетов рекомендую прочитать
этот пост, где дают советы по решению этой проблемы. Для более полного ознакомления с сервлетами, рекомендуем прочитать статьи (
часть 1,
часть 2), где автор подробно расписывает создание простейшего applications на сервлетах и jsp.
Как встроить приложение в работающий server
Несмотря на то, что встроенный Tomcat в IDEA — удобная фича, веб-приложение может быть перенесено на другой server и в другой контейнер. Рассмотрим вариант, когда необходимо встроить свое приложение в уже работающий server. Во-первых, необходимо дополнительно разобрать цель и функции контейнера сервлетов. Программа, которая приведена в примере выше — это веб-приложение. КлассTimeWorker
— сервлет. Компоненты выполняют исключительно обработку requestов. Данные компоненты должны быть встроены в специальный контейнер сервлетов.
Цель контейнера сервлетов — поддержка сервлетов и обеспечение их жизненного цикла. Простейший пример работы Tomcat — сканирование определенной папки с целью определить, появился ли в ней новый сервлет. Если да — инициализировать его и подготовить к приему requestов от клиентов. Если сервлет был обновлен, провести повторную инициализацию для обновления компонентов. При удалении сервлета — остановить обработку requestов, удалить сервлет из Tomcat.
Функции контейнера сервлетов
- Обмен данными между сервлетом и клиентами;
- Организация клиентских сессий;
- Creation программной среды для функционирования сервлета;
- Идентификация и авторизация клиентов;
- В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Установка сервлета
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: В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Теперь можно деплоить этот файл в 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 обеспечивает несколько серьезных преимуществ:-
Самое главное, Tomcat может выполнять роль полноценного web-serverа. Благодаря этому развертывание приложений происходит гораздо быстрее, чем было раньше.Также Tomcat может выступать в роли классического контейнера сервлетов, который можно встроить в более крупный веб-server.
-
Tomcat способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.
-
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.
main
kaedah -. Sekali pandang, kalau tengok contoh-contoh di atas memang boleh. Servis kami telah dilaksanakan tanpa
main
. Walau bagaimanapun, ia tidak. Tomcat mempunyai kaedah sendiri
main
yang dipanggil apabila pelayan bermula. Anda boleh terperangkap bertanya soalan ini semasa temu duga.
GO TO FULL VERSION