CodeGym/Java Course/Modul 3/Pengantar Servlet

Pengantar Servlet

Level 12, Pelajaran 0
Tersedia

1.1 antarmuka Servlet

Hari ini kami memulai topik baru dan menarik - servlet . Itu adalah penambahan servlet ke Java yang menyebabkan Java menjadi standar de facto untuk aplikasi server besar. 80% dari semua perangkat lunak perusahaan di dunia ditulis dalam Java. Dan di Cina, semuanya 100%. Jadi apa itu servlet?

Servlet inilah yang mengubah program Java menjadi layanan web dan memungkinkannya memproses permintaan dari klien. Dan itu seperti ini ...

Di tahun 90-an, segera setelah munculnya World Wide Web, klien web (browser) dan server web muncul. Server web biasanya hanya mendistribusikan file yang mereka simpan melalui Internet: halaman html, skrip, gambar, dll.

Pada titik tertentu, semua orang sampai pada kesimpulan bahwa kedua belah pihak perlu dibuat lebih pintar. JavaScript ditambahkan ke halaman HTML, dan plugin ditambahkan ke server - skrip khusus yang dipanggil sebagai tanggapan atas permintaan tertentu dan membuat perilaku server lebih fleksibel dan lebih pintar.

Jadi servlet adalah plugin Java yang dibangun Java web-serverdan memungkinkannya mengeksekusi kode Java saat diminta untuk halaman tertentu. Dan kode Java ini, yang diwakili oleh kelas yang diwarisi dari kelas Servlet, melakukan apa yang dimaksudkan oleh pengembangnya.

Dan seperti yang sudah Anda ketahui, server web Java yang paling populer adalah Tomcat . Ngomong-ngomong, dinamai untuk menghormati kucing Tom dari kartun "Tom and Jerry".

Bagaimana Tomcat berinteraksi dengan servlet? Bahkan, proses ini dibakukan dan disebut siklus hidup servlet . Di dalamnya, servlet adalah objek yang dapat dimuat, dan server web adalah wadah servlet .

Jika servlet belum dimuat , maka:

  1. Kelas servlet dimuat oleh wadah.
  2. Wadah membuat turunan dari kelas (objek) dari servlet.
  3. Kontainer memanggil metode init()pada objek servlet. Metode ini dipanggil hanya sekali.

Siklus kerja standar - melayani permintaan klien :

  • Setiap permintaan diproses dalam utas terpisah.
  • Kontainer memanggil metode service()di servlet dan meneruskan objek ServletRequest dan ServletResponse ke sana.
  • Untuk mengakhiri servlet, sebuah metode dipanggil destroy()pada objek servlet. Disebut hanya sekali.

Ada banyak alasan mengapa servlet berakhir:

  • Pemrogram me-restart server web, semua servlet harus ditutup dengan anggun.
  • Pemrogram memuat versi baru dari servlet, yang lama harus dibongkar dengan benar.
  • Dan seterusnya.

Ingat hal utama: server web dan servletnya harus bekerja tanpa kegagalan dan restart selama berbulan-bulan, melayani ribuan permintaan per menit. Oleh karena itu, kode untuk memuat, dan bekerja, dan membongkar servlet harus selalu ditulis dengan kualitas sangat tinggi.

1.2 kelas HttpServlet

Kelas Servlet ada untuk membakukan cara kerja servlet dan wadah. Pemrogram tidak bekerja secara langsung dengan kelas ini. Yah, mereka jarang bekerja. Kelas yang paling umum digunakan HttpServletdiwariskan dari Servlet.

Kelas ini memiliki beberapa metode yang akan berguna bagi kita. Anda akan sering menggunakannya:

metode Keterangan
1 init() Dipanggil sekali saat servlet dimuat
2 destroy() Dipanggil sekali saat servlet dibongkar
3 service(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan baru ke servlet
4 doGet(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan GET baru ke servlet
5 doPost(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan POST baru ke servlet
6 doHead(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan HEAD baru ke servlet
7 doDelete(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan DELETE baru ke servlet
8 doPut(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan PUT baru ke servlet

Metode init()dan destroy()diwarisi dari kelas Servlet. Oleh karena itu, jika Anda memutuskan untuk menimpanya di servlet, Anda juga perlu memanggil implementasinya dari kelas dasar. Perintah digunakan untuk ini super.method name().

Contoh servlet:

public class FirstHttpServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // Getting the parameter “secret” from request
        String secret = request.getParameter("secret");

        // Put parameter “secret” into Http-session
        HttpSession session = request.getSession(true);
        session.setAttribute("secret", secret);

        // Print HTML as response for browser
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Header</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet example "+ secret +"</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}

1.3 metode layanan (HttpServletRequest, HttpServletResponse)

Jika Anda melihat pemrosesan permintaan klien dari sudut pandang servlet, maka semuanya menjadi seperti ini.

Untuk setiap permintaan klien, wadah (server web) membuat HttpServletRequestdan objek HttpServletResponse, lalu memanggil metode service(HttpServletRequest request, HttpServletResponse response)pada servlet yang sesuai. Objek-objek ini diteruskan sehingga metode dapat mengambil data yang diperlukan dari requestdan memasukkan hasil pekerjaan ke dalam response.

Metode ini service()memiliki implementasi default. Jika tidak didefinisikan ulang, maka akan dieksekusi. Itulah yang dia lakukan.

Metode service()menentukan jenis metode HTTP dari permintaan (GET, POST, ...) dan memanggil metode yang sesuai dengan permintaan.

metode Keterangan
1 service(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan baru ke servlet
2 doGet(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan GET baru ke servlet
3 doPost(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan POST baru ke servlet
4 doHead(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan HEAD baru ke servlet
5 doDelete(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan DELETE baru ke servlet
6 doPut(HttpRequest, HttpResponse) Dipanggil untuk setiap permintaan PUT baru ke servlet

Di kelas Anda, Anda dapat mendefinisikan ulang satu metode service(), atau membiarkannya, tetapi kemudian mendefinisikan ulang metode doGet(), doPost(), ... sesuai kebutuhan.

Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar