KodeGym/Blog Jawa/Acak/Part 6. wadhah Servlet
John Squirrels
tingkat
San Francisco

Part 6. wadhah Servlet

Diterbitake ing grup
Materi iki minangka bagéan saka seri "Introduction to Enterprise Development". Artikel sadurunge: Bagean 6. Wadah Servlet - 1Ing artikel pungkasan, kita kenal karo servlet lan sinau carane nggunakake kanggo nggawe aplikasi web. Wektu wis teka kanggo nliti bagean penting saka kesenengan iki: kontaner servlet.

Daftar isi:

Apa wadhah servlet?

Iku program sing mlaku ing server lan bisa sesambungan karo servlets kita digawe. Ing tembung liyane, yen kita pengin mbukak aplikasi web kita ing server, kita pisanan masang servlet wadhah banjur sijine servlets ing. Alur kerja kasebut gampang: nalika klien ngakses server, wadhah kasebut ngolah panjaluke, nemtokake servlet sing kudu diproses, lan banjur ngirim panjaluk kasebut. Bagean 6. Wadah Servlet - 2

Kepiye kontaner servlet digunakake?

Saliyane panjaluk rute, wadhah servlet nindakake fungsi liyane:
  1. Iku kanthi dinamis ngasilake kaca HTML saka file JSP.
  2. Iku encrypts / decrypts pesen HTTPS.
  3. Iki menehi akses diwatesi kanggo administrasi servlet.
Umumé, iki kabeh muni apik. Saiki kita mung kudu ngerteni carane nindakake kabeh. Inggih, kanggo sinau carane nggunakake soko, mung nyilem lan nyoba kanggo nggunakake :) Dadi, dina iki kita arep latihan! Wadah servlet sing paling populer yaiku Apache Tomcat . Iki minangka sumber terbuka lan bisa digunakake kanthi gratis. Download Tomcat kanggo sistem operasi sampeyan ing kene lan kita bakal njelajah nggarap kontainer "ing tumindak".

Nginstal lan miwiti Tomcat

  1. Kanggo nginstal Tomcat, mung unzip arsip sing diundhuh menyang direktori sing dikarepake.

  2. Elinga yen Tomcat mbutuhake Java versi 8 utawa luwih dhuwur kanggo miwiti lan mbukak. Verifikasi yen variabel lingkungan JAVA_HOME referensi versi JDK saiki.

  3. Sabanjure, sampeyan kudu ngatur akses pangguna menyang Tomcat . Iki rampung ing file tomcat-users.xml, sing dumunung ing folder conf.

    Ana papat peran prasetel ing Tomcat:

    • manager-gui - Akses menyang antarmuka grafis lan kaca status
    • manager-script - Akses menyang antarmuka teks lan kaca status
    • manager-jmx - Akses menyang JMX lan kaca status
    • manager-status - Akses mung menyang kaca status

    Ing tag <tomcat-users>, kita kanthi jelas nemtokake peran kasebut lan menehi menyang pangguna:

    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <user username="user" password="password"
        roles="manager-gui, manager-script, manager-jmx, manager-status"/>

    Saiki kabeh wis siyap diluncurake!

  4. Ing folder bin, mbukak file startup.bat (startup.sh ing Linux).

  5. Sawise sawetara detik, bukak link http://localhost:8080/ ing browser sampeyan. Sampeyan bakal weruh dashboard grafis:

    Bagean 6. Wadah Servlet - 3

    Yen sampeyan ndeleng menu kaya iki, banjur Tomcat mlaku.

  6. Yen ora mlaku, priksa variabel lingkungan JAVA_HOME lan CATALINA_HOME kanthi manual:

    • JAVA_HOME - Iki kudu ngrujuk versi Java 8+ saiki.
    • CATALINA_BASE - Iki kudu ngrujuk Tomcat utawa ora ana (ora kudu ngrujuk versi Tomcat liyane).

Masang aplikasi ing Tomcat

Kita bisa ngluncurake Tomcat, mula saiki wektune kanggo nyebarake sawetara proyek kasebut. Ayo nggunakake servlets saka artikel sadurunge . MainServlet:
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/hello")
public class MainServlet extends HttpServlet {

   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
       HttpSession session = req.getSession();
       Integer visitCounter = (Integer) session.getAttribute("visitCounter");
       if (visitCounter == null) {
           visitCounter = 1;
       } else {
           visitCounter++;
       }
       session.setAttribute("visitCounter", visitCounter);
       String username = req.getParameter("username");
       resp.setContentType("text/html");
       PrintWriter printWriter = resp.getWriter();
       if (username == null) {
           printWriter.write("Hello, Anonymous" + "");
       } else {
           printWriter.write("Hello, " + username + "");
       }
       printWriter.write("Page was visited " + visitCounter + " times.");
       printWriter.close();
   }
}
IndexServlet:
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/")
public class IndexServlet extends HttpServlet {

   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
       resp.sendRedirect(req.getContextPath() + "/hello");
   }
}
Sadurunge deploying, kita kudu paket servlets kita ing file WAR. Maven biasane digunakake kanggo nindakake iki, nanging kanggo nggawe file WAR sampeyan kudu file web.xml sing duwe pemetaan kanggo kabeh servlets. Kita nggunakake anotasi @WebServlet anyar kanggo nulis servlets, supaya kita ora duwe file web.xml. Untunge, IDEA bisa nindakake pakaryan sing reged kanggo kita, mbungkus proyek kita ing file WAR. Kanggo nindakake iki, bukak struktur proyek (Ctrl + Shift + Alt + S) -> Artefak -> Pilih file WAR sing dikarepake -> Pilih kothak centhang ing jejere "Kalebu ing mbangun proyek" -> Klik "OK". Bagean 6. Wadah Servlet - 4Ayo mbangun proyek nggunakake kombinasi tombol Ctrl + F9. Saiki file WAR kita ana ing direktori target Bagean 6. Wadah Servlet - 5.kita lebokake ing wadhah . Ana rong cara kanggo nindakake iki.
  1. Nggunakake antarmuka grafis

    Kanggo nindakake iki, tindakake link iki: http://localhost:8080/manager/html . Tomcat kudu njaluk jeneng pangguna lan sandhi.

    Yen sampeyan ngetutake aku nganti saiki, jeneng pangguna yaiku "pangguna", lan tembung sandhi yaiku "sandi" .

    Sawise kasil mlebu, sampeyan bakal weruh Manajer Aplikasi Web Tomcat. Bagean "Aplikasi" wis ngemot 5 aplikasi - iki minangka utilitas Tomcat, sing nggawe Tomcat luwih gampang digarap. Padha bisa dibusak ing mangsa.

    Part 6. Wadhah Servlet - 6

    Ing ngisor iki bagean "Panyebaran". Ing kene sampeyan bisa milih arsip WAR kanggo disebarake. Ayo ketik path lan konteks kanthi manual:

    Bagean 6. Wadah Servlet - 7

    Klik "Panyebaran" lan kita weruh yen aplikasi kita wis katon ing bagean "Aplikasi":

    Part 6. Wadhah Servlet - 8Nggunakake antarmuka grafis Tomcat, kita bisa mungkasi, miwiti maneh, lan mbusak sesi, uga nyetel dawa sesi. Nalika nyebarke, kita nemtokake konteks / demo, sing tegese aplikasi kita diakses nggunakake http: // localhost: 8080/demo . Mriksa. Kabeh kudu bisa.

  2. Liwat sistem file

    Kanggo nyebarake aplikasi kanthi cara iki, sampeyan kudu mbukak direktori ing ngendi Tomcat dibukak. Banjur pindhah menyang folder "webapps". Ing kene sampeyan bakal nemokake utilitas sing wis ditemoni:

    Bagean 6. Wadah Servlet - 9

    Kabeh sing dibutuhake yaiku mindhah file servlet.war ing kene.

    Kita ngenteni sawetara detik banjur ndeleng folder "servlet" anyar wis katon. Iki tegese aplikasi kita wis disebarake. Pindhah menyang antarmuka Manajer Aplikasi ing http://localhost:8080/manager/ . Ing kene kita bisa ndeleng manawa aplikasi kita disebarake ing konteks / servlet:

    Part 6. Wadhah Servlet - 10

    Nalika disebarake kanthi cara iki, konteks kasebut ditugasake kanthi otomatis adhedhasar jeneng file WAR sing disebarake. Kanggo ngganti konteks, sampeyan bisa ngganti jeneng folder sing mentas digawe sing ngemot aplikasi kasebut, nanging sadurunge nindakake, sampeyan kudu mbusak file WAR. Yen ora, Tomcat bakal redeploy aplikasi kanthi jeneng arsip.

    Kaya sing sampeyan ngerteni, nggunakake aplikasi ing Tomcat luwih gampang tinimbang sing katon. Nanging fungsi liyane uga gampang digunakake. Ayo priksa.

Nggunakake HTTPS tinimbang HTTP

Yen sampeyan ngelingi, kita ndeleng prabédan antarane HTTP lan HTTPS ing artikel sing kapisah . HTTPS minangka protokol sing padha karo HTTP, nanging ngenkripsi data sing dikirim. Ing sisih klien, browser tanggung jawab kanggo enkripsi, nanging kita kudu nyedhiyakake enkripsi ing sisih server. Wiwit Tomcat nampa lan nuntun panjalukan HTTP, mula kudu didelegasikan enkripsi kasebut. Kanggo nindakake iki, kita kudu:
  1. Nggawe sertifikat sing ditandatangani dhewe
  2. Nggawe setelan server tambahan
Ayo latihan nindakake iki.

Nggawe sertifikat

Preduli saka versi, JDK kalebu nomer akeh keperluan. Salah sijine yaiku keytool . Iki minangka alat kanggo ngasilake lan nggarap kunci enkripsi. Kanggo nggunakake, ing baris printah, pindhah menyang C:\\Program Files\\Java\\jdk1.8.0_181\\bin direktori lan mbukak printah keytool -genkey -alias tomcat -keyalg RSA .
  • keytool - Jeneng utilitas sing kita lakoni kanthi pilihan baris perintah
  • -genkey - Tandhani yen kita pengin nggawe kunci anyar
  • -alias tomcat - Nggawe alias tombol
  • -keyalg RSA - Pilih RSA minangka algoritma generasi tombol
Sawise nglakokake perintah kasebut, sarana miwiti dialog karo kita: Bagean 6. Wadah Servlet - 11Ketik informasi sing dibutuhake. Saiki kita wis nggawe keystore ing direktori ngarep (kanggo Windows, iki C:\\Users\\{username}\\.keystore) lan tombol Tomcat ing. Kita nggawe sertifikat prasaja sing umume browser bakal sambat. Sertifikat kasebut ora cocog kanggo aplikasi komersial: mung bisa digunakake kanggo tujuan tes. Ing server produksi, sampeyan kudu nggunakake sertifikat saka panguwasa sertifikasi (contone, https://letsencrypt.org/ ).

Konfigurasi server

Saiki sertifikat wis siyap, kita kudu nyetel setelan server, yaiku, konektor SSL. Iki rampung ing file server.xml, sing dumunung ing apache-tomcat-9.0.30/conf/ . Ing kono, kita nemokake blok kaya iki:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>
 </Connector>
lan kita sijine konfigurasi kita ing jejere wong-wong mau:
<Connector
       protocol="org.apache.coyote.http11.Http11NioProtocol"
       port="8443" maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="C:\Users\user\.keystore" keystorePass="mypass"
       clientAuth="false" sslProtocol="TLS"/>
We nemtokake nilai paling anyar kanggo keystoreFile lan keystorePass paramèter, nyimpen file, lan banjur miwiti maneh Tomcat nggunakake shutdown.bat lan file startup.bat. Saiki server wis siyap ngolah panjaluk HTTPS. Alamat wis diganti mung sethithik: https://localhost:8443/demo/hello . Nalika sampeyan ngeklik link sampeyan bakal nampa bebaya babagan kapercayan sertifikat, sing ora nggumunake. Kaya sing wis dakkandhakake sadurunge, sampeyan kudu nggunakake layanan salah sawijining panguwasa sertifikasi kanggo entuk sertifikat normal. Nanging saiki, kita wis entuk target: aplikasi kasebut nganggo protokol HTTPS, lan sing penting!

Ngasilake kaca HTML kanthi dinamis

Saiki kita bakal nerusake ringkesan wadhah servlet kanthi nimbang fitur liyane: generasi dinamis kaca HTML. Mbayangno donya sing sampurna, tinimbang kode HTML statis sing mboseni, sampeyan bisa nulis kode Java, nggunakake variabel, puteran, susunan lan konstruksi basa liyane. Apa sampeyan bisa mbayangno? Kabar apik yaiku ana sing padha. Kabar ala iku ora sakabehe entuk fantasi iki. Yen sampeyan durung ngira, kita ngomong babagan JavaServer Pages (JSP). Ing cendhak, iki teknologi sing ngidini sampeyan nglebokake potongan kode Jawa menyang kaca HTML. Bener, kode Jawa iki isih diowahi dadi HTML sadurunge dikirim menyang klien, nanging HTML kasebut bakal digawe kanthi dinamis, kanthi njupuk macem-macem faktor. Tuladhane, sampeyan bisa nggunakake statements kondisional lan bali isi beda gumantung ing sawetara kondisi. Tuladha kaca JSP:
<%@ page language="java"" %>
<html>
<head>
<title>JSP</title>
</head>

<body>
<%
String firstName="name";
String secondName="surname";

    if (firstName.equals("name")){
      out.print("Hello: "+firstName+"<br>");
    }

    if (firstName.equals("name") && secondName.equals("surname"))
    {
      out.print("Hello, my dear friend! <br>");
    }
    else
    {
      out.print("I don't know you. Go away! <br>");
    }
%>
</body>
</html>
Sampeyan bisa maca liyane babagan JSP kene. Ing pungkasan dina, artikel iki dudu babagan JSP - kita kene kanggo ngomong babagan wadhah servlet! Dadi kenapa kita nyebutake JSP? Iku prasaja: wadhah servlet yaiku ngowahi kode Jawa saka JSP dadi HTML. Nalika servlet bakal ngasilake konten JSP minangka respon, wadhah kasebut njupuk cathetan lan diowahi dadi kaca HTML sing ramah browser sadurunge ngirim konten kasebut menyang klien. Saiki, ana akeh analog karo teknologi JSP - Thymeleaf, FreeMarket, Kumis, lan liya-liyane. Kabeh padha makarya kanthi cara sing padha. Endi sing kudu dipilih kanggo karya sampeyan yaiku masalah rasa. Iki uga ditrapake kanggo milih wadhah servlet. Ing conto iki, kita nggunakake Tomcat, wadhah sing paling umum, nanging sawetara proyek nggunakake wadhah liyane. Iku migunani kanggo nliti sedhela sing paling populer lan nimbang kepiye bedane saka Tomcat.

Alternatif kanggo Tomcat

  1. GlassFish minangka wadah open source sing pangembangane didhukung Oracle.

    Ora kaya Tomcat, iku server web lengkap, sing, saliyane servlet, bisa digunakake karo komponen liyane saka kerangka JavaEE. Yen ngandika, iku nggunakake luwih akeh RAM. Ana keluwesan sing luwih gedhe nalika nyetel server, sing nggawe rumit panggunaane. Sampeyan kudu digunakake nalika ngembangake aplikasi ing kerangka JavaEE.

  2. WildFly sadurunge dikenal minangka JBoss . Iku uga mbukak sumber. Iki dikembangake dening Red Hat. Jeneng kasebut diganti supaya ora bingung karo produk perusahaan liyane - JBoss Enterprise Application Platform.

    Kaya GlassFish, WildFly minangka server web lengkap. Incidentally, ing hood, WildFly nggunakake Tomcat minangka wadhah servlet. Ora kaya GlassFish, WildFly luwih entheng lan gampang diatur.

  3. Jetty , kaya sing sadurunge, mbukak sumber. Iki dikembangake dening Eclipse.

    Kaya Tomcat, iku wadhah servlet sing prasaja, tanpa dhukungan kanggo kabeh komponen kerangka JavaEE. Ing wektu sing padha, iku luwih entheng lan malah bisa mbukak ing telpon seluler. Diwiwiti lan mandheg kanthi cepet lan timbangan kanthi apik. Ora kaya Tomcat, duwe komunitas lan basis pengetahuan sing luwih cilik.

  4. WebLogic minangka piranti lunak sing dilisensi sing kudu dituku sadurunge digunakake. Iku belongs kanggo Oracle.

    Nduwe fungsi sing luwih jembar tinimbang Tomcat. Bisa nganggo protokol FTP. Nanging ora fleksibel nalika ngembangake lan nguji aplikasi.

  5. WebSphere (WebSphere Application Server, luwih tepate) yaiku piranti lunak mbayar. Iki dikembangake dening IBM. Padha karo WildFly lan GlassFish, iku server aplikasi lengkap. Nanging nduweni antarmuka konfigurasi sing luwih ramah, plus linuwih ing operasi.

    Kekurangane kalebu kasunyatan sing nggunakake akeh sumber daya lan butuh wektu suwe kanggo miwiti lan mandheg, sing ora trep banget nalika ngembangake proyek cilik.

Pilihan saka wadhah servlet tengen utawa server aplikasi gumantung ing project tartamtu. Ana proyek sing malah underdog sing jelas bisa uga dadi pilihan sing apik, nanging ing wiwitan luwih becik sinau babagan siji wadhah servlet. Tomcat mbokmenawa calon sampurna kanggo sinau iki. Lan kita wis njupuk langkah pisanan kanggo sinau, nanging saka kene iku terserah sampeyan! Ing artikel pungkasan saka seri "Introduction to Enterprise Development", kita bakal ngerti pola MVC. Part 7. Ngenalke pola MVC (Model-View-Controller).
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar