JavaRush /Blog Jawa /Random-JV /Part 6: Wadhah Servlet

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 nggawe aplikasi web kanthi bantuan. Iku wektu kanggo njupuk dipikir nyedhaki apa liburan iki ora bakal bisa tanpa - servlet containers .

Isi:

Apa wadhah servlet

Iki minangka program sing mlaku ing server lan bisa sesambungan karo servlet sing digawe. Ing tembung liyane, yen kita pengin mbukak aplikasi web kita ing server, kita pisanan masang servlet wadhah banjur sijine servlets ing. Cara kerjane gampang: nalika klien ngubungi server, wadhah kasebut ngolah panjaluke, nemtokake servlet sing kudu diproses lan diterusake. Bagean 6. Wadah Servlet - 2

Cara nggunakake wadhah servlet

Saliyane panjaluk rute, wadhah servlet nindakake fungsi liyane:
  1. Ngasilake kaca HTML kanthi dinamis saka file JSP.
  2. Enkripsi / dekripsi pesen HTTPS.
  3. Nyedhiyani akses diwatesi kanggo administrasi servlet.
Umumé, muni apik, sing isih ana yaiku kanggo nemtokake cara ngetrapake kabeh. Nah, kanggo sinau carane nggunakake soko, sampeyan mung perlu ... nyoba kanggo nggunakake :) Dadi dina iki kita bakal latihan! Wadah servlet sing paling populer yaiku Apache Tomcat . Iku open source lan gratis kanggo nggunakake. Download Tomcat kanggo sistem operasi saka link iki , lan ayo kang ndeleng carane bisa karo kontaner ing tumindak.

Nginstal lan mbukak Tomcat

  1. Kanggo nginstal Tomcat, cukup unpack arsip sing diundhuh menyang direktori sing dikarepake.

  2. Elinga yen Tomcat mbutuhake Java versi 8 utawa luwih dhuwur kanggo mbukak. Priksa manawa variabel lingkungan JAVA_HOME nuduhake versi jdk saiki.

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

    Tomcat kasedhiya karo papat peran:

    • 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 - mung akses menyang kaca status.

    Ing tag <tomcat-users>, kita bakal nulis peran kasebut kanthi jelas lan ditugasake 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 . Pangatur grafis bakal katon ing kono:

    Bagean 6: Wadah Servlet - 3

    Yen sampeyan ndeleng menu kasebut, tegese Tomcat mlaku.

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

    • JAVA_HOME - kudu ngrujuk menyang versi Java 8+ saiki;
    • CATALINA_HOME - kudu ngrujuk menyang Tomcat utawa ora ana (ora kudu nuduhake versi Tomcat liyane).

Nggunakake Aplikasi menyang Tomcat

Kita bisa ngluncurake Tomcat, dadi wektune kanggo nyebarake sawetara proyek ing kana. 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 penyebaran, servlet kita kudu dikemas ing arsip perang. Biasane Maven digunakake kanggo iki, nanging kanggo nggawe arsip perang sampeyan butuh file web.xml ing ngendi kabeh servlet dipetakan. Kita nulis servlet nggunakake anotasi @WebServlet anyar, dadi ora duwe web.xml. Untunge, IDEA bisa nindakake pakaryan sing reged kanggo kita lan mbungkus proyek kita kanthi individu ing arsip perang. Kanggo nindakake iki, sampeyan kudu mbukak struktur proyek (Ctrl + Shift + Alt + S) -> Artefak -> Pilih mbangun sing dikarepake -> Priksa kothak ing jejere "Kalebu ing mbangun proyek" -> Klik "OK". Bagean 6: Wadah Servlet - 4Gawe proyek nggunakake kombinasi Ctrl + F9. Saiki arsip perang kita ana ing direktori target. Bagean 6: Wadah Servlet - 5File kasebut bisa diganti jeneng sing luwih prasaja - contone, servlet.war - lan dipindhah menyang papan sing luwih trep - ing C:\my\. Yen wis siap digunakake, sijine ing wadhah . Iki bisa ditindakake kanthi rong cara.
  1. Liwat GUI

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

    Yen sampeyan ngulang kabeh langkah sawise aku, mula login yaiku pangguna, sandhi yaiku sandhi .

    Sawise otorisasi sukses sampeyan bakal weruh Manajer Aplikasi Web Tomcat. Bagean Aplikasi wis ngemot 5 aplikasi - iki minangka aplikasi utilitas Tomcat sing dibutuhake kanggo nyederhanakake nggarap. Padha bisa dibusak ing mangsa.

    Bagean 6: Wadah Servlet - 6

    Ing ngisor iki bagean Deploy. Nggunakake, sampeyan bisa milih arsip perang kanggo penyebaran. Ayo ketik path lan konteks kanthi manual:

    Bagean 6. Wadah Servlet - 7

    Klik "Deploy", kita ndeleng manawa aplikasi kita wis katon ing bagean Aplikasi:

    Bagean 6: Wadah Servlet - 8 Nggunakake GUI Tomcat kita bisa mungkasi, miwiti maneh, nyetel dawa sesi lan mbusak. Nalika nyebarke, kita nemtokake konteks / demo, tegese aplikasi kita kudu diakses liwat link http: // localhost: 8080/demo . Priksa, kabeh kudu bisa.

  2. Liwat sistem file

    Kanggo masang aplikasi kanthi cara iki, sampeyan kudu mbukak direktori ing ngendi Tomcat dibukak lan pindhah menyang webapps. Mangkene aplikasi utilitas sing kita kenal:

    Bagean 6. Wadah Servlet - 9

    Kabeh sing kudu ditindakake yaiku mindhah servlet.war ing kene.

    Kita ngenteni sawetara detik, kita weruh yen folder servlet anyar wis muncul, tegese aplikasi kita wis disebarake. Ayo menyang antarmuka Manajer Aplikasi sing akrab - http: // localhost: 8080/manager/ . Ing kene kita bisa ndeleng manawa aplikasi kita disebarake ing konteks / servlet:

    Bagean 6: Wadah Servlet - 10

    Nalika disebarake kanthi cara iki, konteks kasebut kanthi otomatis diwenehi jeneng arsip perang sing ditugasake. Kanggo ngganti konteks, sampeyan bisa ngganti jeneng folder sing mentas digawe nganggo aplikasi kasebut, nanging sadurunge sampeyan kudu mbusak file kasebut: yen Tomcat bakal nggunakake maneh aplikasi kasebut kanthi jeneng arsip.

    Kaya sing sampeyan ngerteni, nyebarake aplikasi menyang Tomcat luwih gampang tinimbang sing katon. Nanging fungsi liyane gampang digunakake. Ayo priksa.

Nggunakake protokol HTTPS tinimbang HTTP

Yen sampeyan ngelingi, kita ngrembug prabédan antarane HTTP lan HTTPS ing artikel sing kapisah . HTTPS minangka protokol sing padha karo HTTP, nanging nggunakake enkripsi data sing ditransfer. Ing sisih klien, enkripsi ditangani dening browser, lan kita kudu nyedhiyakake enkripsi ing sisih server. Wiwit panjaluk HTTP ditampa lan diterusake dening Tomcat, logis yen utusan enkripsi kasebut. Kanggo nindakake iki, sampeyan kudu:
  1. Nggawe sertifikat sing ditandatangani dhewe;
  2. Nggawe setelan server tambahan.
Ayo latihan iki.

Nggawe sertifikat

JDK nerangake karo nomer akeh keperluan, preduli saka versi, salah siji kang keytool . Iki minangka alat kanggo ngasilake kunci enkripsi lan nggarap. Kanggo nggunakake, nggunakake baris printah, pindhah menyang C:\Program Files\Java\jdk1.8.0_181\bin direktori lan mbukak printah keytool -genkey -alias tomcat -keyalg RSA .
  • keytool - miwiti sarana kanthi paramèter;
  • -genkey - nuduhake yen kita pengin ngasilake kunci anyar;
  • -alias tomcat - nggawe alias kunci;
  • -keyalg RSA - pilih RSA minangka algoritma generasi tombol.
Sawise nglakokake perintah kasebut, sarana bakal miwiti dialog karo kita: Bagean 6: Wadah Servlet - 11Ketik informasi sing dibutuhake. Saiki kita wis nggawe keystore ing direktori ngarep kita (kanggo Windows iku C:\Users\{username}\.keystore) lan tombol Tomcat ing. Kita wis nggawe sertifikat prasaja sing umume browser bakal nampa. Sertifikat iki ora cocok kanggo aplikasi komersial: mung bisa digunakake kanggo tujuan testing. Ing server produksi, sampeyan kudu nggunakake sertifikat saka panguwasa sertifikat (contone, https://letsencrypt.org/ ).

Nyetel server

Saiki sertifikat wis siyap, sampeyan kudu nyetel setelan server, yaiku konektor SSL. Iki rampung ing file server.xml, sing dumunung ing apache-tomcat-9.0.30/conf/ . Kita nemokake blok kaya:
<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 pasang konfigurasi kita ing jejere:
<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"/>
Kita nemtokake parameter keystoreFile lan keystorePass nilai-nilai sing cocog kanggo kita, simpen lan miwiti maneh Tomcat nggunakake file shutdown.bat lan startup.bat. Saiki server siap ngolah panjalukan https, mung sethithik ing alamat sing diganti - https://localhost:8443/demo/hello . Nalika sampeyan ngeklik link kasebut, sampeyan bakal weruh bebaya babagan sertifikat sing bisa dipertanyakan, sing ora nggumunake. Kaya sing wis diterangake sadurunge, kanggo entuk sertifikat normal sampeyan kudu nggunakake layanan salah sawijining layanan sertifikasi. Nanging nganti saiki kita wis entuk gol: aplikasi kasebut bisa digunakake kanthi nggunakake protokol HTTPS, lan iki sing utama!

Generasi dinamis kaca HTML

Saiki ayo nerusake review fitur liyane saka wadhah servlet - dynamic generation of HTML pages . Bayangake jagad sing cocog, tinimbang kode HTML statis sing mboseni, sampeyan bisa nulis kode JAVA nggunakake variabel, puteran, susunan lan konstruksi basa liyane. Apa sampeyan mbayangno? Kabar apik yaiku ana sing padha, kabar sing ala ora ana. Yen sampeyan durung ngira, kita ngomong babagan teknologi JSP (Java Server Pages). Ing cendhak, iki minangka teknologi sing ngidini sampeyan nglebokake potongan kode JAVA menyang kaca HTML. Bener, kode iki isih diowahi dadi HTML sadurunge dikirim menyang klien, nanging bakal digawe kanthi dinamis kanthi njupuk macem-macem faktor. Contone, sampeyan bisa nggunakake konstruksi kondisional lan ngladeni konten sing beda-beda gumantung saka 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 . Bener ... kita ora kene kanggo iki, nanging kanggo kontaner servlet! Apa hubungane JSP karo iku? Iku prasaja: transformasi kode JAVA saka JSP menyang kode HTML ditindakake dening wadhah servlet. Nalika servlet arep ngasilake isi JSP minangka respon, wadhah kasebut njupuk kabar lan dadi kaca HTML sing bisa diwaca browser sadurunge ngirim konten kasebut menyang klien. Saiki ana akeh analog saka teknologi JSP - Thymeleaf, FreeMarket, Kumis lan liya-liyane. Kabeh padha kerja ing prinsip sing padha. Kang siji kanggo milih kanggo karya iku prakara rasa. Iki uga ditrapake kanggo milih wadhah servlet. Ing conto sing digunakake Tomcat, wadhah sing paling umum, nanging sawetara proyek nggunakake liyane. Iku worth sedhela familiarizing dhewe karo sing paling populer lan ndeleng beda saka Tomcat.

Alternatif kanggo Tomcat

  1. GlassFish minangka wadah open source sing didhukung Oracle.

    Ora kaya Tomcat, iku server web lengkap sing, saliyane servlet, bisa ngoperasikake komponen liyane saka kerangka JavaEE. Ing wektu sing padha, nggunakake RAM luwih akeh. Luwih fleksibel nalika nyetel server, sing nggawe luwih angel digunakake. Iku worth nggunakake nalika ngembangaken aplikasi nggunakake framework JavaEE.

  2. WildFly - biyen Jboss . Uga mbukak sumber. Dikembangaké dening Red Hat. Jeneng kasebut diganti supaya ora bingung karo produk perusahaan liyane - Platform Aplikasi Perusahaan JBoss.

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

  3. Jetty - padha karo sing sadurunge, mbukak sumber. Dikembangake dening Eclipse.

    Kaya Tomcat, iku wadhah servlet sing prasaja, tanpa dhukungan kanggo kabeh komponen kerangka JavaEE. Ing wektu sing padha, luwih entheng lan bisa digunakake sanajan ing ponsel. 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 mbutuhake tuku sadurunge digunakake. Diduweni dening Oracle.

    Dibandhingake karo Tomcat, fungsine luwih akeh. Bisa nganggo protokol ftp. Nanging ora fleksibel nalika ngembangake lan nguji aplikasi.

  5. WebSphere (Server Aplikasi WebSphere luwih tepat) yaiku piranti lunak sing dibayar. Dikembangaké déning IBM. Padha karo WildFly lan GlassFish, iku server aplikasi lengkap. Nanging nduweni antarmuka persiyapan sing luwih ramah, plus linuwih operasional sing dhuwur.

    Kelemahane yaiku nggunakake akeh sumber daya, butuh wektu suwe kanggo miwiti lan mandheg, sing ora trep nalika ngembangake proyek cilik.

Wadhah servlet utawa server aplikasi sing kudu dipilih gumantung saka proyek tartamtu. Ana proyek sing malah wong njaba sing jelas bakal bisa mbuktekake awake dhewe kanthi kualitas sing paling dhuwur, nanging ing wiwitan luwih becik ngerti siji perkara. Mbokmenawa calon sing cocog kanggo iki yaiku Tomcat. Kita wis njupuk langkah pisanan kanggo sinau, lan banjur sampeyan! Ing artikel pungkasan saka seri "Introduction to Enterprise Development", kita bakal kenal karo pola MVC. Part 7. Pambuka pola MVC (Model-View-Controller) Part 8. Nulis aplikasi cilik ing spring-boot
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION