Apa itu servlet Java? Minta penanganan untuk aplikasi web Java

Penanganan permintaan adalah roti dan mentega dari pengembangan aplikasi web Java. Untuk menanggapi permintaan dari jaringan, aplikasi web Java pertama-tama harus menentukan kode apa yang akan menanggapi URL permintaan, kemudian marshal tanggapan. Setiap tumpukan teknologi memiliki cara untuk menyelesaikan penanganan respons permintaan. Di Java, kami menggunakan servlet (dan Java Servlet API) untuk tujuan ini. Pikirkan servlet sebagai server kecil yang tugasnya menerima permintaan dan mengeluarkan respons.

URL vs titik akhir

Sebagai pengguna Internet, Anda terbiasa dengan URL sebagai alamat situs web di browser Anda. Sebagai pengembang, Anda mungkin juga mengenal URL sebagai titik akhir untuk layanan web. Sebuah URL (uniform resource locator) adalah cara standar untuk menggambarkan dan menemukan sumber daya Internet menggunakan teks. Istilah endpoint mengacu pada URL yang menunjukkan layanan web. Istilah endpoint dan URL sering kali digunakan secara bergantian, meskipun merujuk pada domain penggunaan yang berbeda.

Software sebagai lapisan

Seperti yang saya jelaskan dalam pengantar saya ke Java Runtime Environment, kita dapat melihat perangkat lunak sebagai rangkaian lapisan. Setiap lapisan dalam sistem perangkat lunak memiliki kemampuan tertentu yang dibutuhkan oleh lapisan di atasnya. Sebagai contoh, lapisan perangkat keras berada di bawah lapisan firmware, mendukung fungsinya. Demikian pula, lapisan firmware (BIOS di PC atau EFI di Mac) diperlukan untuk menjalankan sistem operasi. Gambar 1 menunjukkan ketiga komponen ini dalam diagram berlapis.

Matthew Tyson

Anda juga dapat melihat sistem perangkat lunak sebagai rangkaian wadah , di mana lapisan bawah bertindak sebagai wadah untuk wadah yang lebih tinggi. Setiap lapisan bertindak sebagai konteks untuk menjalankan tingkat fungsionalitas berikutnya: perangkat keras berisi firmware, dan firmware berisi sistem operasi.

Java sisi server

Sebuah server-side Java aplikasi adalah salah satu kelas yang luas dari aplikasi yang berfungsi sebagai titik akhir jaringan, menerima permintaan HTTP dari URL tertentu dan mengirimkan data kembali dalam format interchange seperti HMTL atau JSON. Java sisi server terdiri dari server Java standar dan teknologi untuk berinteraksi dengan server tersebut. Java Servlet API adalah standar yang digunakan untuk berinteraksi dengan server Java.

Server Java dan JVM

Dalam sistem berbasis Java, sistem operasi (OS) berisi JVM, yang menyediakan lingkungan yang konsisten untuk menjalankan aplikasi Java. Server Java berada di atas JVM. Sama seperti JVM adalah perantara antara OS dan aplikasi Java Anda, server Java menyediakan akses yang konsisten dan efisien ke jaringan sistem operasi dan kemampuan pemrosesan. Aplikasi Java berjalan di dalam server, menggunakan Java Servlet API untuk mengakses kemampuan server.

Gambar 2 menunjukkan tumpukan perangkat lunak untuk Java sisi server.

Matthew Tyson

Spesifikasi Java Servlet

Spesifikasi Java Servlet memberikan definisi yang mendasari untuk server Java dan komponen terkait. Ini mendefinisikan bagaimana server akan mengirim permintaan dan tanggapan selama interaksi jaringan melalui HTTP. Semua server Java harus kompatibel dengan spesifikasi Java Servlet. Sebagian besar server Java saat ini kompatibel dengan Servlet 4.0.

Servlet 4.0

Setiap versi spesifikasi Java Servlet menghadirkan fitur-fitur baru. Servlet 4.0 menyertakan dukungan untuk protokol HTTP / 2 dan mekanisme server push-nya. Server push memungkinkan server memuat aset yang dibutuhkan oleh halaman web, daripada menunggu permintaan tertentu. Spesifikasi Servlet 4.0 juga menggabungkan kemampuan untuk menemukan pemetaan URL saat runtime, fitur yang dikenal sebagai penemuan runtime .

Eclipse Enterprise untuk Java

Servlet 4.0 adalah bagian dari inisiatif open source EE4J (Eclipse Enterprise for Java), yang mencakup penggantian yang diusulkan untuk JCP.

Untuk pemahaman praktis tentang bagaimana spesifikasi Servlet bekerja, pertimbangkan artikel yang sedang Anda baca. Di suatu tempat di inti infrastruktur JavaWorld, artikel ini diformat dan dikirim untuk publikasi. Itu diberi URL, dirutekan melalui jaringan, dan tiba di server. Server menghubungkan artefak (artikel) dengan URL dan menentukan bahwa ketika permintaan GET tiba untuk URL tersebut, itu akan menyajikan kembali artikel ini sebagai HTML.

Saat Anda membuat aplikasi web Java, Anda membuat perangkat lunak yang berjalan di dalam server Java. Aplikasi tersebut memanfaatkan fasilitas yang disediakan oleh konteks server, dan salah satu fasilitas tersebut adalah Servlet API. Untuk alasan ini, server Java yang mengimplementasikan spesifikasi Servlet terkadang disebut wadah servlet .

Untuk membuat servlet, Anda mengimplementasikan Servletantarmuka dan menerapkannya di dalam wadah servlet. Gambar 3 menunjukkan bagaimana aplikasi Anda bergantung pada servlet.

Matthew Tyson

Menulis servlet dengan Tomcat

Sekarang setelah Anda memiliki gambaran umum konseptual, mari kita mulai menulis tentang pembuatan servlet Java.

Hal pertama yang Anda perlukan adalah wadah servlet, atau dikenal sebagai server aplikasi Java. Tomcat dan Jetty adalah dua kontainer servlet paling populer. Kami akan menggunakan Tomcat karena ini adalah salah satu server aplikasi yang paling lama berdiri untuk Java. Tomcat gratis dan berisi sedikit lonceng dan peluit, yang akan membuat semuanya tetap sederhana untuk contoh kita. (Omong-omong, "Bel dan peluit" adalah istilah teknis.)

Unduh dan instal Tomcat

Jika Anda belum memiliki Tomcat, mulailah dengan membuka halaman unduh Tomcat. Di sana, Anda dapat memilih penginstal Windows atau unduhan ZIP yang paling sesuai untuk komputer Anda (misalnya, saya mengunduh zip Windows 64-bit).

Itu dia: Anda baru saja menambahkan lapisan server Java ke sistem operasi Anda!

Pastikan Tomcat sedang berjalan

Sebelum melangkah lebih jauh, pastikan Anda dapat menjalankan Tomcat. Mulai layanan Windows atau jalankan startup.shatau startup.batfile dari baris perintah.

Jika Anda sekarang membuka browser web dan pergi ke localhost:8080, Anda akan disambut oleh layar berikut:

Matthew Tyson

Jika Anda mengalami masalah saat menjalankan Tomcat, Anda dapat mengunjungi dokumentasi Tomcat untuk pemecahan masalah.

Jalankan contoh servlet Tomcat

Sekarang mari kita lihat servlet Java. Mudahnya, Tomcat telah menyertakan beberapa contoh sederhana.

Klik tautan Contoh yang Anda lihat di bagian Mulai Cepat Pengembang di halaman selamat datang Tomcat. Setelah Anda berada di sana, klik tautan Contoh Servlet .

Now you can see a simple Servlet in action by clicking the Hello World sample's Execute link. That will bring your browser to the //localhost:8080/examples/servlets/servlet/HelloWorldExample URL, where you will see the perennial programmer's salutation.

Viewing the servlet source code

Click the Back arrow in your browser, then click the source link for the HelloWorld app. The source is shown in Listing 1.

Listing 1. Source code for HelloWorld example

 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println("Hello World!"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); } } 

This very simple code listing contains the basic components of a Java servlet. Let's consider it step by step.

The first line calls the standard Java imports. After that, the program defines a new class, which extends the HttpServlet class. This is critical because servlets must implement the Servlet interface in order to run inside a servlet container.

Next, the HelloWorld class defines a method called doGet(). This is a standard method on servlets: it tells the server to route HTTP GET requests to this method. Other HTTP methods, like POST, are handled by similarly named methods, like doPost.

Notice that that doGet() has two parameters: (HttpServletRequest request, HttpServletResponse response). These two objects represent the request and response. They provide access to everything your code needs to deal with the request and issue a response. In the HelloWorld.doGet servlet method, for example, the response object is used to inform the server what content type header to issue. In this case, it's response.setContentType("text/html");.

Finally, the program obtains a Java Writer object from the response response.getWriter(). The Writer is then used to create a simple HTML response to return to the browser.

URL mapping

The structure and code flow in Listing 1 are fairly intuitive, but there is a glaring omission. How does the server know to associate the //localhost:8080/examples/servlets/servlet/HelloWorldExample URL to the HelloWorld.doGet method?

You will find the answer to this mystery in the application meta-data. Every Java web application includes a standard meta-data file, called web.xml, which tells the server how to map URLs to servlets.

What is meta-data?

Meta-data is any information that is used to control the operation of software from outside the software itself.

In the Tomcat example apps, the web.xml is found at \apache-tomcat-9.0.11\webapps\examples\WEB-INF\web.xml. The \WEB-INF\web.xml is the standard location of the meta-data file for servlets. If you open this file, you'll see how the server is configured.

The abbreviated web.xml in Listing 2 has just the information we need for our discussion.

Listing 2. Source code for the Tomcat HelloWorld example

     HelloWorldExample HelloWorldExample   HelloWorldExample /servlets/servlet/HelloWorldExample    

Listing 2 shows a typical XML file header referencing the schema for a Java web application descriptor. This is followed by two entries: and.

The call to assigns a logical name, HelloWorldExample, to the HelloWorldExample class, via the and fields.

The call to assigns that logical name to the value, thereby associating the code to the URL.

Note that the field supports wild cards in order to handle a variety of flexible URL mappings.

Other servlet capabilities

Selain pemetaan URL, servlet memberikan kemampuan tambahan untuk pemfilteran dan otentikasi. Filter digunakan untuk memproses permintaan, dan otentikasi digunakan untuk menetapkan pengguna dan peran sederhana ke pola URL. Spesifikasi JavaServer Pages (JSP) memberikan dukungan untuk menghasilkan HTML dengan cara yang jauh lebih canggih.

Kesimpulan

Artikel ini telah menjadi gambaran umum konseptual tentang servlet Java, termasuk permintaan URL dan penanganan respons di dalam server Java. Memahami elemen dasar Java sisi server ini akan membantu Anda mengintegrasikan konsep yang lebih maju seperti dorongan server dan penemuan runtime pemetaan URL, yang baru di Servlet 4.0.

Artikel ini, "Apa itu servlet Java? Permintaan penanganan untuk aplikasi web Java" pada awalnya diterbitkan oleh JavaWorld.