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

Tomcat di Jawa

Dipublikasikan di grup Random-ID
Pada titik tertentu, setiap pengembang memperoleh keterampilan yang cukup sehingga ia berpikir untuk membuat proyeknya sendiri untuk mempraktikkan pengetahuannya. Cara termudah untuk mengerjakan proyek web, karena implementasi aplikasi web tidak dibatasi oleh batasan apa pun, misalnya aplikasi desktop. Klien hanya memerlukan browser dan dapat berinteraksi dengan aplikasi tanpa mengunduh distribusi apa pun. Tanpa registrasi dan SMS, begitu kata mereka (walaupun ini tergantung aplikasi itu sendiri). Tomcat di Jawa - 1Jadi, untuk mengimplementasikan aplikasi web yang baik di Java, Anda tidak dapat melakukannya tanpa alat bernama Tomcat. Isi:

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 metode mainuntuk 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: Tomcat di Jawa - 2Di 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: Tomcat di Jawa - 3Di 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: Tomcat di Jawa - 4Klien 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);
  }
}
TimeWorkermewarisi dari kelas HttpServletdan menimpa doGet. Dalam metode ini kita mendapatkan dua parameter - requestdan response. Sebagai contoh, requestatribut dengan nama datadan berisi representasi string dari tanggal saat ini disimpan. Kemudian dipanggil dan parameter dan requestDispatcherditeruskan 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: 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- mendefinisikan nama servlet dan menentukan jalur ke kelas servlet yang akan memproses permintaan. Tag kedua - servlet-mapping- menunjukkan bahwa servlet dengan nama tersebut timeWorkerakan dipanggil ketika ada permintaan url/waktu. Tag ketiga - welcome-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 /timeakan 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 h1berisi 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 requesttersedia responsedalam 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: Tomcat di Jawa - 5Ikuti tautannya: Tomcat di Jawa - 6Bagus, 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. Kelasnya TimeWorkeradalah 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

  1. Pertukaran data antara servlet dan klien;
  2. Organisasi sesi klien;
  3. Penciptaan lingkungan perangkat lunak agar servlet berfungsi;
  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 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.

Dan terakhir: sering kali pengembang pemula ditanyai pertanyaan: apakah mungkin menjalankan aplikasi Java tanpa mainmetode -. Sekilas, jika melihat contoh di atas, hal itu mungkin saja terjadi. Servlet kami dieksekusi tanpa main. Namun ternyata tidak. Tomcat memiliki metodenya sendiri mainyang dipanggil saat server dimulai. Anda mungkin ketahuan menanyakan pertanyaan ini saat wawancara.

Tautan tambahan:

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