1.1 antarmuka Servlet

Dina iki kita miwiti topik anyar lan menarik - servlets . Iki minangka tambahan servlet menyang Jawa sing ndadekake Jawa dadi standar de facto kanggo aplikasi server gedhe. 80% kabeh piranti lunak perusahaan ing donya ditulis ing Jawa. Lan ing China, kabeh 100%. Dadi apa servlets?

Servlet yaiku apa sing ngowahi program Java dadi layanan web lan ngidini kanggo ngolah panjaluk saka klien. Lan kaya iki ...

Ing taun 90-an, sanalika sawise munculé World Wide Web, klien web (browser) lan server web muncul. Server web biasane mung nyebarake file sing disimpen ing Internet: kaca html, skrip, gambar, lsp.

Ing sawetara titik, kabeh wong teka ing kesimpulan yen kudu nggawe loro-lorone luwih pinter. JavaScript ditambahake ing kaca HTML, lan plugin ditambahake menyang server - skrip khusus sing diarani kanggo nanggepi panjaluk tartamtu lan nggawe prilaku server luwih fleksibel lan luwih pinter.

Dadi servlet minangka plugin Java sing dibangun Java web-serverlan ngidini kanggo nglakokake kode Java nalika dijaluk kanggo kaca tartamtu. Lan kode Jawa iki, sing diwakili dening kelas sing diwarisake saka kelas Servlet, nindakake apa sing dikarepake para pangembang.

Lan kaya sing wis dingerteni, server web Java sing paling populer yaiku Tomcat . Dijenengi, kanthi cara, kanggo ngurmati kucing Tom saka kartun "Tom and Jerry".

Kepiye carane Tomcat sesambungan karo servlets? Nyatane, proses iki wis standar lan diarani siklus urip servlet . Ing kono, servlet minangka obyek sing bisa dimuat, lan server web minangka wadhah servlet .

Yen servlet durung dimuat , banjur:

  1. Kelas servlet dimuat dening wadhah.
  2. Wadhah nggawe conto kelas (obyek) servlet.
  3. Wadhah kasebut nelpon metode init()ing obyek servlet. Cara kasebut mung diarani sepisan.

Siklus kerja standar - nglayani panjaluk klien :

  • Saben panjalukan diproses ing utas sing kapisah.
  • Wadhah kasebut nelpon metode service()ing servlet lan ngliwati obyek ServletRequest lan ServletResponse ing kana.
  • Kanggo mungkasi servlet, sawijining metode diarani destroy()obyek servlet. Iki diarani mung sapisan.

Ana akeh alasan kenapa servlet mandheg:

  • Programmer miwiti maneh server web, perlu kanggo mateni kabeh servlet kanthi apik.
  • Programmer ngemot versi anyar saka servlet, sing lawas kudu dibongkar kanthi bener.
  • Lan sateruse.

Elingi bab utama: server web lan servlets kudu bisa tanpa gagal lan miwiti maneh kanggo sasi, nglayani ewu panjalukan saben menit. Mulane, kode kanggo loading, lan digunakake, lan unloading servlet kudu tansah ditulis kualitas dhuwur.

1.2 Kelas HttpServlet

Kelas Servlet ana kanggo standarisasi carane servlet lan wadhah bisa digunakake. Programer ora bisa langsung karo kelas iki. Inggih, dheweke arang kerja. Kelas sing paling umum digunakake HttpServletdiwarisake saka Servlet.

Kelas iki duwe sawetara cara sing bakal migunani kanggo kita. Sampeyan bakal kerep nggunakake:

Metode Katrangan
1 init() Disebut sapisan nalika servlet dimuat
2 destroy() Disebut sapisan nalika servlet dibongkar
3 service(HttpRequest, HttpResponse) Ditelpon kanggo saben request anyar kanggo servlet
4 doGet(HttpRequest, HttpResponse) Ditelpon kanggo saben panyuwunan GET anyar menyang servlet
5 doPost(HttpRequest, HttpResponse) Ditelpon kanggo saben request POST anyar kanggo servlet
6 doHead(HttpRequest, HttpResponse) Disebut kanggo saben request HEAD anyar kanggo servlet
7 doDelete(HttpRequest, HttpResponse) Disebut kanggo saben panyuwunan DELETE anyar menyang servlet
8 doPut(HttpRequest, HttpResponse) Ditelpon kanggo saben request PUT anyar kanggo servlet

Metode init()lan destroy()diwarisake saka kelas Servlet. Mulane, yen sampeyan mutusake kanggo ngilangi ing servlet sampeyan, sampeyan uga kudu nelpon implementasine saka kelas dhasar. Printah kasebut digunakake kanggo iki super.method name().

Tuladha 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 layanan (HttpServletRequest, HttpServletResponse) metode

Yen sampeyan ndeleng pangolahan panjaluk klien saka sudut pandang servlet, mula kaya ngono.

Kanggo saben panyuwunan klien, wadhah (server web) nggawe HttpServletRequestlan obyek HttpServletResponse, banjur nelpon metode service(HttpServletRequest request, HttpServletResponse response)ing servlet sing cocog. Objek kasebut diterusake supaya metode kasebut bisa njupuk data sing dibutuhake requestlan nglebokake asil karya kasebut response.

Cara kasebut service()nduweni implementasi standar. Yen ora ditetepake maneh, mula bakal dieksekusi. Mengkono sing ditindakake.

Cara kasebut service()nemtokake jinis metode HTTP saka panyuwunan (GET, POST, ...) lan nelpon cara sing cocog karo panyuwunan kasebut.

Metode Katrangan
1 service(HttpRequest, HttpResponse) Ditelpon kanggo saben request anyar kanggo servlet
2 doGet(HttpRequest, HttpResponse) Ditelpon kanggo saben panyuwunan GET anyar menyang servlet
3 doPost(HttpRequest, HttpResponse) Ditelpon kanggo saben request POST anyar kanggo servlet
4 doHead(HttpRequest, HttpResponse) Disebut kanggo saben request HEAD anyar kanggo servlet
5 doDelete(HttpRequest, HttpResponse) Disebut kanggo saben panyuwunan DELETE anyar menyang servlet
6 doPut(HttpRequest, HttpResponse) Ditelpon kanggo saben request PUT anyar kanggo servlet

Ing kelas sampeyan, sampeyan bisa nemtokake maneh siji metode service(), utawa ninggalake, nanging banjur nemtokake maneh metode doGet(), doPost(), ... yen perlu.