- Tomcat mengetahui Javarush
- Tomcat - apa itu?
- Komponen Tomcat
- Menginstal Tomcat
- Cara membuat aplikasi web
- Cara menyematkan aplikasi ke server yang sedang berjalan
- Manfaat Tomcat untuk pembangunan
- Tautan tambahan
Tomcat mengetahui Javarush
Tomcat dipelajari di level 9 dari pencarian Java Collections di kursus JavaRush. Dalam 2 kuliah, Bilaabo akan memberi tahu Anda cara mengunduh dan mengkonfigurasi Tomcat , serta membangun aplikasi web pertama Anda .Tomcat - apa itu?
Tomcat adalah wadah servlet sumber terbuka yang juga bertindak sebagai server web. Sekilas, Tomcat tampak seperti topik yang agak berat, namun sebenarnya tidak demikian. Sebagian besar aplikasi Java diluncurkan menggunakan baris perintah dan melakukan beberapa tindakan. Aplikasi semacam itu mengimplementasikan satu fungsi yang telah ditentukan sebelumnya, setelah itu tidak lagi dijalankan. Program semacam itu biasanya mempunyai metodemain
untuk meluncurkannya. Aplikasi web dirancang untuk berinteraksi dengan klien. Jika ada permintaan dari klien, maka diproses dan respon dikirimkan ke pengguna. Jika tidak, aplikasi akan menganggur. Bagaimana cara menerapkan logika seperti itu dalam aplikasi standar, mengingat Anda perlu mendukung sesi, menerima permintaan HTTP, dll.? Siklus while-true
? Tidak, kami memerlukan solusi yang andal di sini. Itulah gunanya Tomcat. Faktanya, ini adalah aplikasi Java yang menangani pembukaan port untuk interaksi klien, pengaturan sesi, jumlah permintaan, panjang header, dan banyak lagi operasi lainnya.
Komponen Tomcat
Tomcat memiliki komponen yang menjalankan fungsi tertentu yang perlu diketahui. Mari kita lihat lebih dekat.katalina
Berkat komponen ini, pengembang memiliki kesempatan untuk menyebarkan program mereka dalam sebuah wadah. Catalina mengimplementasikan spesifikasi Servlet API, teknologi web inti dalam pemrograman web Java. Faktanya, Catalina adalah wadah servlet di dalam Tomcat (kita akan melihat konsep ini lebih detail di bawah).jasper
Berkat komponen ini, programmer menggunakan teknologi JSP. Ini seperti file HTML, hanya saja mereka memiliki kode Java tertanam yang dapat dieksekusi ketika halaman dikirimkan ke pengguna. Ini memungkinkan Anda menyematkan data apa pun secara dinamis ke dalam halaman. Jasper mengubah kode Java menjadi HTML, dan juga melacak perubahan dan memperbaruinya secara otomatis.Anjing hutan
Ini adalah komponen penting yang mendengarkan permintaan HTTP dari klien pada port tertentu, menyediakan data untuk diproses dalam aplikasi, dan juga mengembalikan respons kepada pengguna. Artinya, Coyote mengimplementasikan fungsionalitas server HTTP. Komponen-komponen ini secara struktural dapat dijelaskan dengan diagram berikut: Di sini diagram perkiraan interaksi komponen ditampilkan “di jari”. Faktanya, cara kerja Tomcat jauh lebih kompleks, tetapi ini cukup untuk pemahaman dasar.Menginstal Tomcat
Untuk menggunakan Tomcat di Java, Tomcat harus diinstal pada sistem. Anda dapat membaca tentang cara menginstal Tomcat di artikel ini, yang juga membahas server aplikasi lainnya. Jadi, dengan memiliki Tomcat yang berfungsi di dalam IDEA, Anda dapat mencoba menyiapkan servlet pertama Anda.Cara membuat aplikasi web
Untuk membuat aplikasi web, Anda harus mengikuti struktur folder tertentu. IntelliJ IDEA memiliki fungsi pembuatan aplikasi web di menu pembuatan proyek. Setelah membuat proyek dengan cara ini, Anda dapat melihat struktur sederhana: Di src, seperti biasa, ada sumber, dan di folder web web.xml dan index.jsp dibuat. web.xml adalah instruksi untuk Tomcat tempat mencari penangan permintaan dan informasi lainnya. index.jsp adalah halaman utama aplikasi web, tempat pengguna harus pergi terlebih dahulu (ini adalah konfigurasi default). Saat pertama kali dijalankan, Anda cukup mengedit file 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 diinstal langsung di IDEA, Anda dapat memulai server aplikasi: Klien menerima konten file index.jsp di browser ketika menavigasi ke '/', yaitu ke halaman utama. Sekarang mari tambahkan tautan ke halaman tempat waktu server saat ini berada. Untuk membuat servlet pertama Anda, Anda perlu menggunakan perpustakaan servlet-api.jar yang disertakan dengan Tomcat (dapat ditemukan di folder lib). Mari kita buat servlet yang akan menampilkan waktu server saat ini di halaman. Untuk melakukan ini, Anda perlu membuat kelas TimeWorker
. Mari kita letakkan di 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 dari kelas HttpServlet
dan menimpa doGet
. Dalam metode ini kita mendapatkan dua parameter - request
dan response
. Sebagai contoh, request
atribut dengan nama data
dan berisi representasi string dari tanggal saat ini disimpan. Kemudian dipanggil dan parameter dan requestDispatcher
diteruskan ke sana . Penangan telah dibuat. Sekarang Anda perlu mengirimkan permintaan khusus kepadanya. Biarkan transisi apa pun mengarah ke halaman time.jsp. Buka web.xml, masukkan konfigurasi berikut di antara tag: 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
- mendefinisikan nama servlet dan menentukan jalur ke kelas servlet yang akan memproses permintaan. Tag kedua - servlet-mapping
- menunjukkan bahwa servlet dengan nama tersebut timeWorker
akan dipanggil ketika ada permintaanwelcome-file-list
- menunjukkan file yang akan dipanggil saat beralih ke
url /
. Ini harus dikonfigurasi jika ada kebutuhan untuk mengubah file default. Termasuk di sini sebagai contoh. Sekarang, ketika Anda masuk, metode di kelas
/time
akan dipanggil dan mengembalikan halaman time.jsp... yang tidak ada. Mari kita buat di sebelah 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>
Permulaannya klasik, tetapi tagnya
h1
berisi daya tarik terhadap objek
request
, yang dibingkai oleh
<%=
dan
%>
. Ini adalah tag templat. Kode yang disertakan dalam tag ini dipanggil sebelum dikirim ke klien. Ya, objek
request
tersedia
response
dalam tag tersebut di file JSP mana pun. Dalam contoh ini, waktu server saat ini yang dikirimkan oleh servlet akan diganti di sana
TimeWorker
. Untuk kenyamanan, kami membuat link ke file 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>
Mari kita jalankan contohnya:
Ikuti tautannya:
Bagus, semuanya berfungsi. Dalam contoh ini, kami menerapkan transisi dari halaman utama ke halaman tambahan, ke mana parameter diteruskan dan ditampilkan kepada pengguna. Jika Anda mengalami masalah dalam menjalankan servlet, saya sarankan membaca
posting ini , yang memberikan tips untuk memecahkan masalah ini. Untuk pengenalan lebih lengkap tentang servlet, kami sarankan membaca artikel (
part 1 ,
part 2 ), dimana penulis menjelaskan secara detail pembuatan aplikasi sederhana menggunakan servlets dan jsp.
Cara menyematkan aplikasi ke server yang sedang berjalan
Meskipun Tomcat bawaan di IDEA adalah fitur yang mudah digunakan, aplikasi web dapat dipindahkan ke server lain dan ke wadah lain. Mari pertimbangkan opsi ketika Anda perlu menyematkan aplikasi Anda ke server yang sudah berjalan. Pertama, perlu dipahami lebih jauh maksud dan fungsi container servlet . Program yang ditunjukkan pada contoh di atas adalah aplikasi web. KelasnyaTimeWorker
adalah servlet. Komponen melakukan pemrosesan permintaan secara eksklusif. Komponen-komponen ini harus dibangun ke dalam wadah servlet khusus.
Tujuan dari wadah servlet adalah untuk mendukung servlet dan memastikan siklus hidupnya. Contoh paling sederhana tentang cara kerja Tomcat adalah memindai folder tertentu untuk menentukan apakah servlet baru telah muncul di dalamnya. Jika ya, inisialisasi dan persiapkan untuk menerima permintaan dari klien. Jika servlet telah diperbarui, inisialisasi ulang untuk memperbarui komponen. Saat menghapus servlet, hentikan pemrosesan permintaan dan hapus servlet dari Tomcat.
Fungsi Kontainer Servlet
- Pertukaran data antara servlet dan klien;
- Organisasi sesi klien;
- Penciptaan lingkungan perangkat lunak agar servlet berfungsi;
- Идентификация и авторизация клиентов;
- В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Установка сервлета
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 pengelolaan halaman JSP yang sangat nyaman. Faktanya, web server hanya dapat melayani html. Jasper, komponen Tomcat, mengkompilasi kode yang terdapat dalam tag templat halaman JSP menjadi file HTML valid yang diterima oleh klien. Semua logika templating berada di dalam Tomcat, memungkinkan Anda menambahkan konstruktor yang rumit ke formulir HTML klasik.
main
metode -. Sekilas, jika melihat contoh di atas, hal itu mungkin saja terjadi. Servlet kami dieksekusi tanpa
main
. Namun ternyata tidak. Tomcat memiliki metodenya sendiri
main
yang dipanggil saat server dimulai. Anda mungkin ketahuan menanyakan pertanyaan ini saat wawancara.
GO TO FULL VERSION