Apakah servlet Java? Meminta pengendalian untuk aplikasi web Java

Penanganan permintaan adalah roti dan mentega pengembangan aplikasi web Java. Untuk menanggapi permintaan dari jaringan, aplikasi web Java harus terlebih dahulu menentukan kod apa yang akan merespons URL permintaan, kemudian marshal respons. Setiap timbunan teknologi mempunyai cara untuk menyelesaikan permintaan-permintaan. Di Java, kami menggunakan servlet (dan Java Servlet API) untuk tujuan ini. Fikirkan servlet sebagai pelayan kecil yang tugasnya adalah untuk menerima permintaan dan mengeluarkan respons.

URL vs titik akhir

Sebagai pengguna Internet, anda biasa dengan URL sebagai alamat laman web di penyemak imbas anda. Sebagai pembangun, anda mungkin juga mengetahui URL sebagai titik akhir untuk perkhidmatan web. A URL (uniform pencari sumber) adalah satu cara standard untuk menerangkan dan mencari sumber Internet menggunakan teks. Istilah titik akhir merujuk kepada URL yang menunjukkan perkhidmatan web. Istilah titik akhir dan URL sering digunakan secara bergantian, walaupun merujuk kepada domain penggunaan yang berbeza.

Perisian sebagai lapisan

Seperti yang saya jelaskan dalam pengenalan saya ke Java Runtime Environment, kita dapat melihat perisian sebagai rangkaian lapisan. Setiap lapisan dalam sistem perisian mempunyai kemampuan tertentu yang diperlukan oleh lapisan di atasnya. Sebagai contoh, lapisan perkakasan berada di bawah lapisan firmware, menyokong fungsinya. Begitu juga, lapisan firmware (BIOS pada PC atau EFI pada Mac) diperlukan untuk menjalankan sistem operasi. Rajah 1 menunjukkan ketiga-tiga komponen ini dalam rajah berlapis.

Matthew Tyson

Anda juga dapat melihat sistem perisian sebagai rangkaian bekas , di mana lapisan bawah berfungsi sebagai wadah untuk yang lebih tinggi. Setiap lapisan berfungsi sebagai konteks untuk menjalankan tahap fungsi seterusnya: perkakasan mengandungi firmware, dan firmware mengandungi sistem operasi.

Java sisi pelayan

A Java-pelayan permohonan adalah salah satu kelas luas aplikasi yang berfungsi sebagai titik hujung rangkaian, menerima permintaan HTTP dari URL yang diberikan dan menghantar data kembali dalam format pertukaran seperti HMTL atau JSON. Java sisi pelayan terdiri daripada pelayan dan teknologi Java standard untuk berinteraksi dengan pelayan tersebut. Java Servlet API adalah standard yang digunakan untuk berinteraksi dengan pelayan Java.

Pelayan Java dan JVM

Dalam sistem berbasis Java, sistem operasi (OS) berisi JVM, yang menyediakan lingkungan yang konsisten untuk menjalankan aplikasi Java. Pelayan Java berada di atas JVM. Sama seperti JVM sebagai perantara antara OS dan aplikasi Java anda, pelayan Java menyediakan akses yang konsisten dan lancar ke kemampuan rangkaian dan pemprosesan sistem operasi. Aplikasi Java berjalan di dalam pelayan, menggunakan Java Servlet API untuk mengakses kemampuan pelayan.

Gambar 2 menunjukkan timbunan perisian untuk Java sisi pelayan.

Matthew Tyson

Spesifikasi Servlet Java

Spesifikasi Java Servlet memberikan definisi yang mendasari untuk pelayan Java dan komponen yang berkaitan. Ini menentukan bagaimana pelayan akan menghantar permintaan dan respons semasa interaksi rangkaian melalui HTTP. Semua pelayan Java mesti serasi dengan spesifikasi Servlet Java. Sebilangan besar pelayan Java kini serasi dengan Servlet 4.0.

Servlet 4.0

Setiap versi spesifikasi Servlet Java menghadirkan fitur baru. Servlet 4.0 merangkumi sokongan untuk protokol HTTP / 2 dan mekanisme tolak pelayannya. Push server membolehkan pelayan memuatkan lebih awal aset yang diperlukan oleh laman web, dan bukannya menunggu permintaan tertentu. Spesifikasi Servlet 4.0 juga menggabungkan kemampuan untuk menemukan pemetaan URL pada waktu runtime, fitur yang dikenal sebagai penemuan runtime .

Eclipse Enterprise untuk Java

Servlet 4.0 adalah sebahagian daripada inisiatif sumber terbuka EE4J (Eclipse Enterprise for Java), yang termasuk cadangan penggantian untuk JCP.

Untuk pemahaman praktikal tentang bagaimana spesifikasi Servlet berfungsi, pertimbangkan artikel yang sedang anda baca. Di suatu tempat dalam infrastruktur JavaWorld, artikel ini diformat dan diserahkan untuk diterbitkan. Ia diberi URL, disalurkan melalui rangkaian, dan tiba di pelayan. Pelayan menghubungkan artifak (artikel) dengan URL dan menentukan bahawa apabila permintaan GET tiba untuk URL itu, ia akan mengembalikan artikel ini sebagai HTML.

Apabila anda membuat aplikasi web Java, anda membuat perisian yang berjalan di dalam pelayan Java. Aplikasi ini menggunakan kemudahan yang disediakan oleh konteks pelayan, dan salah satu kemudahan tersebut adalah Servlet API. Atas sebab ini, pelayan Java yang menerapkan spesifikasi Servlet kadang-kadang disebut sebagai servlet container .

Untuk membuat servlet, anda melaksanakan Servletantara muka dan menyebarkannya ke dalam wadah servlet. Gambar 3 menunjukkan bagaimana aplikasi anda bergantung pada servlet.

Matthew Tyson

Menulis servlet dengan Tomcat

Sekarang setelah anda mendapat gambaran keseluruhan konseptual, mari kita pergi ke perniagaan menulis servlet Java.

Perkara pertama yang anda perlukan adalah bekas servlet, atau dikenali sebagai pelayan aplikasi Java. Tomcat dan Jetty adalah dua bekas servlet yang paling popular. Kami akan menggunakan Tomcat kerana ia adalah salah satu pelayan aplikasi paling lama untuk Java. Tomcat percuma dan mengandungi loceng dan wisel yang minimum, yang akan menjadikan perkara-perkara mudah menjadi contoh. ("Lonceng dan peluit" adalah istilah teknikal.)

Muat turun dan pasang Tomcat

Sekiranya anda belum mempunyai Tomcat, mulakan dengan membuka halaman muat turun Tomcat. Di sana, anda boleh memilih pemasang Windows atau muat turun ZIP yang paling sesuai untuk komputer anda (contohnya, saya memuat turun zip Windows 64-bit).

Itu sahaja: anda baru sahaja menambahkan lapisan pelayan Java ke sistem operasi anda!

Sahkan Tomcat sedang berjalan

Sebelum melangkah lebih jauh, pastikan anda dapat menjalankan Tomcat. Sama ada mulakan perkhidmatan Windows atau jalankan startup.shatau startup.batfail dari baris perintah.

Sekiranya anda sekarang membuka penyemak imbas web dan pergi ke localhost:8080, anda harus disambut oleh skrin berikut:

Matthew Tyson

Sekiranya anda menghadapi masalah menjalankan Tomcat, anda boleh mengunjungi dokumentasi Tomcat untuk menyelesaikan masalah.

Jalankan contoh servc Tomcat

Sekarang mari kita lihat servlet Java. Dengan senang hati, Tomcat telah memasukkan beberapa contoh mudah.

Klik pada pautan Contoh yang anda lihat di bahagian Pemula Pantas Pembangun di halaman selamat datang Tomcat. Setelah anda berada di sana, klik pautan 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 menyaring dan mengesahkan. Penapis digunakan untuk memproses permintaan, dan pengesahan digunakan untuk menetapkan pengguna dan peranan sederhana ke pola URL. Spesifikasi JavaServer Pages (JSP) memberikan sokongan untuk menghasilkan HTML dengan cara yang jauh lebih hebat.

Kesimpulannya

Artikel ini telah menjadi gambaran umum konsep servlet Java, termasuk permintaan URL dan pengendalian respons di dalam pelayan Java. Memahami elemen asas Java sisi pelayan ini akan membantu anda mengintegrasikan konsep yang lebih maju seperti push server dan penemuan runtime pemetaan URL, yang baru di Servlet 4.0.

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