JavaRush /Blog Jawa /Random-JV /Part 5. Servlets, Java servlet API. Nulis aplikasi web pr...

Part 5. Servlets, Java servlet API. Nulis aplikasi web prasaja

Diterbitake ing grup
Materi iki minangka bagéan saka seri "Introduction to Enterprise Development". Artikel sadurunge: Part 5. Servlets, Java servlet API.  Nulis aplikasi web sing prasaja - 1Apa sampeyan wis ngerti carane nulis aplikasi Java sing ngasilake teks menyang konsol, nanging sampeyan isih durung ngerti carane nggawe aplikasi web pisanan sampeyan? Apik banget, nggawe sampeyan nyaman. Ing artikel iki, kita bakal kenal karo servlet lan nulis aplikasi sing bisa dipamerake menyang kanca-kanca tanpa ngirim jarnik utawa meksa ngundhuh Java. Ayo nulis aplikasi web . Yen sampeyan durung ngerti pendekatan sing digunakake ing program web, aku menehi saran supaya sampeyan miwiti maca saka artikel pisanan ing seri " Pambuka kanggo Pengembangan Perusahaan ".

Apa iku servlet

Pisanan, ayo ngerteni apa servlet lan kenapa sampeyan kerep krungu babagan iki. Java Servlet API minangka API standar sing dirancang kanggo implementasine ing server lan nggarap klien nggunakake skema panjalukan-respon. Servlet minangka kelas sing bisa nampa panjalukan saka klien lan menehi respon. Ya, servlet ing Jawa minangka unsur sing dibangun ing arsitektur klien-server. Yen sampeyan ngelingi, kita wis ngomong babagan iki ing salah sawijining artikel ing seri kasebut. Ayo kita ora ngalahake ing grumbulan: ayo langsung nulis kode.

Apa sampeyan kudu nggawe aplikasi web

Kanggo nggarap servlet ing Jawa kanthi nyaman, sampeyan butuh Intellij IDEA Ultimate Edition. Iki dibayar, nanging sampeyan bisa ngaktifake wektu uji coba 30 dina utawa nggunakake versi akses awal - mesthi gratis. Instal uga server aplikasi kita - Apache Tomcat. Tomcat minangka wadhah servlet: yaiku sing ngolah panjaluk sing mlebu saka njaba lan dikirim menyang aplikasi kita. Sampeyan bisa ngundhuh Tomcat saka link iki .

Nggawe aplikasi web pisanan

Yen kabeh wis siyap, ayo nggawe proyek Maven. Yen sampeyan ora kenal karo Maven, mbayar manungsa waé menyang artikel sadurunge . Ayo miwiti!
  1. Ing pom.xml, tambahake dependensi javax.servlet-api lan setel perang kemasan:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
    
       <groupId>org.example</groupId>
       <artifactId>servlets</artifactId>
       <version>1.0-SNAPSHOT</version>
       <packaging>war</packaging>
    
       <dependencies>
           <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>javax.servlet-api</artifactId>
               <version>4.0.1</version>
           </dependency>
       </dependencies>
    </project>

    Kelas servlet prasaja:

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    @WebServlet("/hello")
    public class MainServlet extends HttpServlet {
    
       @Override
       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           resp.setContentType("text/html");
           PrintWriter printWriter = resp.getWriter();
           printWriter.write("Hello!");
           printWriter.close();
       }
    }
  2. Kanggo mbukak aplikasi sampeyan kudu nggawe konfigurasi Tomcat:

    Part 5. Servlets, Java servlet API.  Nulis aplikasi web sing prasaja - 2 Part 5. Servlets, Java servlet API.  Nulis aplikasi web sing prasaja - 3

  3. Sabanjure, kita nuduhake versi Tomcat sing bakal digunakake, URL sing bisa diakses server, lan port. Sampeyan kudu njaluk kaya iki:

    Part 5. Servlets, Java servlet API.  Nulis aplikasi web prasaja - 4
  4. Kabeh sing isih ana yaiku nemtokake artefak (proyek sing dirakit dadi arsip jar), sing bakal dipasang ing wadhah kasebut. Sampeyan bisa ngeklik tombol Ndandani lan pilih perang njeblug : iki tegese sawise proyek kasebut dibangun maneh, artefak kasebut bakal diselehake kanthi otomatis ing wadhah servlet. Part 5. Servlets, Java servlet API.  Nulis aplikasi web sing prasaja - 5

  5. Konteks Aplikasi disetel menyang servlets_war_exploded minangka standar , tegese aplikasi kasebut kudu diakses ing: http://localhost:8080/servlets_war_exploded .

    Napa kita butuh teks tambahan? Ayo mbusak barang sing ora perlu. Saiki alamat aplikasi kita yaiku: http://localhost:8080 .

    Part 5. Servlets, Java servlet API.  Nulis aplikasi web sing prasaja - 6

  6. Klik OK. Saiki kita duwe kesempatan kanggo mbukak aplikasi kasebut:

    Part 5. Servlets, Java servlet API.  Nulis aplikasi web sing prasaja - 7

    Saiki, nalika sampeyan miwiti aplikasi kasebut, browser kudu mbukak lan nampilake kesalahan 404. Iki logis, amarga ing alamat http: // localhost: 8080 / kudu ana servlet kanthi pemetaan "/", lan mung servlet kita duwe pemetaan "/ hello" .

  7. Kita hubungi ing http://localhost:8080/hello lan entuk respon sing dikarepake - senar "Hello"!

Yen kabeh bisa, ayo goleki kode kasebut. Kanggo nggawe servlet http saka kelas biasa , sampeyan kudu oleh warisan saka kelas HttpServlet. Ndhuwur kelas kita nemtokake @WebServlet () anotasi, kang kita njiret (peta) servlet kanggo path tartamtu ("/ hello"). Anotasi iki mung katon ing Java Servlet API 3.0, mula ana akeh conto ing Internet ing ngendi pemetaan servlet dumadi liwat file XML. Saiki iki ora perlu. Kanggo ngolah panjaluk GET , kita ngilangi metode doGet (). Pay manungsa waé menyang argumen cara - HttpServletRequest lan HttpServletResponse. Saka obyek HttpServletRequest kita bisa njupuk kabeh informasi sing dibutuhake babagan panyuwunan, ing HttpServletResponse kita bisa ngrekam respon lan nyetel header sing dibutuhake.

Nggarap paramèter lan sesi

Ayo nambah servlet supaya bisa ngolah paramèter panyuwunan lan nggarap sesi kasebut:
import javax.servlet.ServletException;
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 ServletException, 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" + "<br>");
       } else {
           printWriter.write("Hello, " + username + "<br>");
       }
       printWriter.write("Page was visited " + visitCounter + " times.");
       printWriter.close();
   }
}
Servlet lagi mbukak sesi, nambah visitCounter saben kaca dibukak. Yen atribut visitCounter durung digawe (kaping pisanan sampeyan ngunjungi kaca), metode getAttribute () bakal bali null, dadi sampeyan kudu mriksa null. Padha ditrapake kanggo njaluk paramèter. Yen pangguna ora ngliwati parameter jeneng pangguna, nilai kasebut bakal null. Ing kasus iki, kita bakal menehi salam marang pangguna minangka anonim. Kanggo ngliwati parameter ing panjalukan GET, path-variabel digunakake, yaiku, sampeyan kudu ngakses link http: // localhost: 8080 / hello?username=Pavel . Sampeyan bisa maca liyane babagan panjalukan http ing artikel sadurunge ing seri. Saiki aplikasi kita duwe logika minimal, nanging kesalahan 404 ing path root rada ngganggu. Kanggo ndandani, ayo nggawe servlet liyane lan peta menyang kaca wiwitan @WebServlet("/"). Tugas servlet iki yaiku ngarahake panjalukan menyang path "/ hello". Ana rong cara kanggo nindakake iki: nggunakake nerusake utawa pangalihan. Mbok iku worth pangerten apa prabédan antarane wong-wong mau. maju - delegasi njaluk pangolahan menyang servlet liyane ing server, klien ora melu. Kanggo nindakake iki, sampeyan kudu nambah kode ing ngisor iki kanggo doGet () cara servlet anyar:
getServletContext().getRequestDispatcher("/hello").forward(req, resp);
Ing kode iki, kita ngakses konteks servlet, njaluk manajer panyuwunan saka servlet sing dikarepake lan takon kanggo ngolah panjaluk tartamtu kanthi paramèter sing ditemtokake (req, resp). pangalihan - bali menyang klien alamat sing kudu dikontak kanggo proses panjalukane. Umume browser pindhah menyang link sing dikirim kanthi otomatis. Kanggo ngleksanakake pangalihan sampeyan kudu nambah kode iki:
resp.sendRedirect(req.getContextPath() + "/hello");
Ing HttpServletResponse kita nelpon cara pangalihan () lan pass alamat sing klien kudu hubungi. Rincian penting: Paramèter http uga kudu ditambahake ing mburi path pangalihan lengkap, sing ora trep banget. Ing kahanan kita, luwih becik nggunakake maju, nanging luwih becik nggunakake pangalihan. Yen sampeyan ngerti prabédan ing karya, sampeyan ora bakal salah karo pilihan sampeyan. Kode kanggo servlet anyar katon kaya iki:
import javax.servlet.ServletException;
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 ServletException, IOException {
//        getServletContext().getRequestDispatcher("/hello").forward(req, resp);
       resp.sendRedirect(req.getContextPath() + "/hello");
   }
}

Garis ing ngisor

Aplikasi web pisanan sampeyan wis siyap. Ing artikel sabanjure sampeyan bakal sinau carane nyebarake tanpa nggunakake Intellij IDEA. Kita nulis aplikasi sing mung ngolah panjaluk GET. Cara http sing isih ana diproses kanthi cara sing padha - ngatasi metode sing cocog karo kelas induk. Nggunakake servlets prasaja kuwi, sampeyan bisa mbangun Komplek, aplikasi web sugih. Mesthi, nggunakake kerangka gedhe kaya Spring, iki luwih gampang ditindakake. Nanging yen sampeyan pengin ngerteni kabeh kemampuan servlet kanthi luwih rinci, sampeyan bisa maca spesifikasi resmi . Part 6. Wadah Servlet 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