JavaRush /Java Blog /Random-ID /Membuat aplikasi web sederhana menggunakan servlet dan js...
Стас Пасинков
Level 26
Киев

Membuat aplikasi web sederhana menggunakan servlet dan jsp (bagian 2)

Dipublikasikan di grup Random-ID
Membuat aplikasi web sederhana menggunakan servlet dan jsp (bagian 1) Tingkat pengetahuan yang diperlukan untuk memahami artikel: Anda kurang lebih telah memahami Java Core dan ingin melihat teknologi JavaEE dan pemrograman web. Paling masuk akal jika Anda sedang mempelajari misi Koleksi Java, yang mencakup topik yang dekat dengan artikel.
Membuat aplikasi web sederhana menggunakan servlet dan jsp (bagian 2) - 1

Membuat Entitas

Dalam paket entitas , kita akan membuat kelas User , dan di dalamnya akan ada dua variabel string pribadi name dan password . Mari kita buat konstruktor (default dan yang menerima kedua nilai), pengambil/penyetel, ganti metode toString() untuk berjaga-jaga, serta metode sama dengan() dan hashCode() . Artinya, kami akan melakukan semua yang dilakukan pengembang Java yang baik saat membuat kelas.
public class User {
    private String name;
    private String password;

    public User() {
    }

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        User user = (User) o;

        if (name != null ? !name.equals(user.name) : user.name != null) return false;
        return password != null ? password.equals(user.password) : user.password == null;

    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + (password != null ? password.hashCode() : 0);
        return result;
    }
}
Sekarang kita bisa mulai membuat daftar pengguna. Kami akan menambahkan pengguna ke dalamnya, dan dari mana kami akan menampilkannya. Namun, ada satu masalah. Kami tidak membuat objek servlet kami, Tomcat yang melakukannya untuk kami . Metode yang kita timpa di dalamnya juga sudah ditentukan untuk kita, dan kita tidak dapat menambahkan parameter. Lalu bagaimana kita bisa membuat daftar bersama yang terlihat oleh kedua servlet kita? Jika kita hanya membuat objek daftar kita sendiri di setiap servlet, ternyata kita akan menambahkan pengguna ke satu daftar, dan menampilkan daftar pengguna yang menggunakan servlet ListServlet ke daftar lainnya. Ternyata kita membutuhkan objek yang sama untuk kedua servlet. Secara umum, kita memerlukan objek yang umum untuk semua kelas dalam program kita; satu-satunya objek untuk keseluruhan program. Saya harap Anda pernah mendengar sesuatu tentang pola desain. Dan, mungkin, bagi sebagian orang, ini adalah kebutuhan nyata pertama untuk menggunakan pola Singleton dalam program mereka. Anda bisa menjadi sesat dan membuat beberapa Singleton keren dengan pemeriksaan ganda dan sinkronisasi (ya, kami memiliki aplikasi multi-utas karena Tomcat menjalankan servlet di utas yang berbeda), tetapi saya akan menggunakan opsi inisialisasi awal karena cukup cocok di sini cukup dan sesuai dengan tujuan kita.

Membuat model

Mari kita buat sebuah kelas (dan implementasikan pola Singleton di dalamnya ) dalam paket model dan beri nama sesuatu yang tidak biasa. Katakanlah Model . Mari kita buat objek daftar pengguna pribadi di kelas kita, dan terapkan dua metode: satu agar kita bisa menambahkan pengguna, dan yang kedua untuk mengembalikan daftar string (nama pengguna). Karena objek pengguna kami terdiri dari nama dan kata sandi, dan kami tidak ingin "mengungkapkan" kata sandi pengguna, kami hanya akan memiliki daftar nama.
public class Model {
    private static Model instance = new Model();

    private List<User> model;

    public static Model getInstance() {
        return instance;
    }

    private Model() {
        model = new ArrayList<>();
    }

    public void add(User user) {
        model.add(user);
    }

    public List<String> list() {
        return model.stream()
                .map(User::getName)
                .collect(Collectors.toList());
    }
}

Sedikit tentang mvc

Karena Anda pernah mendengar tentang singleton , Anda mungkin pernah mendengar tentang pola desain lain - MVC (model-view-controller, dalam bahasa Rusia model-view-controller, atau seperti dalam bahasa Inggris model-view-controller). Esensinya adalah memisahkan logika bisnis dari presentasi. Artinya, pisahkan kode yang menentukan apa yang harus dilakukan dari kode yang menentukan cara menampilkannya. Tampilan (lihat atau sederhananya tampilan) bertanggung jawab atas bentuk penyajian beberapa data. Dalam kasus kami, tampilan adalah halaman JSP kami. Itu sebabnya saya menaruhnya di folder bernama views . Model adalah data aktual yang digunakan program untuk bekerja. Dalam kasus kami, ini adalah pengguna (daftar pengguna). Nah, pengontrol adalah penghubung di antara mereka. Mereka mengambil data dari model dan meneruskannya ke tampilan (atau menerima beberapa data dari Tomcat, memprosesnya dan meneruskannya ke model). Logika bisnis (apa sebenarnya yang harus dilakukan program) perlu dijelaskan di dalamnya, dan bukan di model atau tampilan. Jadi, setiap orang melakukan hal mereka sendiri:
  • model menyimpan data;
  • tampilan menggambarkan representasi data yang indah;
  • pengontrol menangani pemrosesan data.
Hal ini memungkinkan program menjadi cukup sederhana dan mudah dipelihara, dibandingkan membuang semua kode dalam satu kelas. MVC cocok tidak hanya untuk pemrograman web, tetapi di area inilah MVC sering ditemukan (hampir selalu). Dalam kasus kami, servlet akan bertindak sebagai pengontrol. Ini adalah deskripsi pola yang sangat dangkal dan singkat, tetapi MVC bukanlah topik utama artikel ini. Siapa yang ingin tahu lebih banyak - Google siap membantu! Buat formulir untuk menambahkan pengguna Mari tambahkan ke file add.jsp formulir yang terdiri dari dua kolom input teks (satu biasa, yang lain kata sandi) dan tombol untuk mengirim data ke server.
<form method="post">
    <label>Name:
        <input type="text" name="name"><br />
    </label>

    <label>Password:
        <input type="password" name="pass"><br />
    </label>
    <button type="submit">Submit</button>
</form>
Di sini formulir memiliki atribut metode dengan nilai post . Artinya data dari form ini akan dikirim ke server dalam bentuk request POST. Atribut tindakan tidak ditentukan, yang berarti permintaan akan dikirim ke alamat yang sama dengan tempat kita membuka halaman ini ( /add ). Jadi, servlet kami, terikat ke alamat ini, setelah menerima permintaan GET, mengembalikan jsp ini dengan formulir untuk menambahkan pengguna, dan jika menerima permintaan POST, itu berarti formulir mengirimkan datanya ke sana (yang akan kami tarik dari meminta objek dalam metode doPost() Perlu dicatat bahwa bidang input memiliki parameter nama (untuk bidang dengan nama memiliki nilai name, dan untuk bidang dengan kata sandi memiliki nilai pass ). Ini adalah poin yang cukup penting. Karena untuk mendapatkan data ini (nama dan kata sandi yang akan dimasukkan) dari permintaan (sudah ada di dalam servlet), kita akan menggunakan nama dan pass ini dengan tepat . Tapi lebih dari itu nanti. Tombol untuk mengirim data sendiri kembali dibuat dalam bentuk tombol , bukan sebagai kolom keluaran seperti biasanya. Saya tidak tahu seberapa universal opsi ini, tetapi ini berfungsi untuk saya (browser Chrome).

Memproses permintaan POST dengan servlet

Mari kita kembali ke servlet AddServlet . Izinkan saya mengingatkan Anda: agar servlet kami dapat "menangkap" permintaan GET, kami mengganti metode doGet() dari kelas HttpServlet . Untuk mengajarkan servlet kita agar juga menangkap permintaan POST, kita juga perlu mengganti metode doPost() . Ia menerima objek permintaan dan respons serupa dari Tomcat , yang akan kita gunakan. Pertama, mari kita ekstrak dari permintaan nama dan berikan parameter yang dikirimkan formulir (jika Anda menamainya secara berbeda di formulir, maka itu adalah nama yang Anda tulis). Setelah ini, kita akan membuat objek pengguna menggunakan data yang diterima. Kemudian kita akan mendapatkan objek model dan menambahkan pengguna yang dibuat ke model.
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String name = req.getParameter("name");
    String password = req.getParameter("pass");
    User user = new User(name, password);
    Model model = Model.getInstance();
    model.add(user);
}

Melewati data untuk dilihat

Mari beralih ke servlet ListServlet . Metode doGet() telah diterapkan di sini , yang hanya mentransfer kontrol ke tampilan list.jsp . Jika Anda belum memilikinya, lakukan dengan analogi dengan metode yang sama dari servlet AddServlet . Sekarang alangkah baiknya jika mendapatkan daftar nama pengguna dari model dan meneruskannya ke tampilan, yang akan menerimanya dan menampilkannya dengan baik. Untuk melakukan ini, kami akan kembali menggunakan objek permintaan yang kami terima dari Tomcat . Kita dapat menambahkan atribut ke objek ini, memberinya nama, dan, sebenarnya, objek itu sendiri, yang ingin kita transfer ke view . Karena kenyataan bahwa ketika mentransfer proses eksekusi dari servlet ke tampilan, kami meneruskan objek permintaan dan respons yang sama dengan yang diterima servlet itu sendiri, kemudian dengan menambahkan daftar nama kami ke objek permintaan, kami kemudian dapat dari permintaan ini objek dalam tampilan buat daftar nama pengguna kami dan dapatkan. Kita sudah selesai dengan kelas ListServlet , jadi berikut adalah kode untuk seluruh kelas:
package app.servlets;

import app.model.Model;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public class ListServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Model model = Model.getInstance();
        List<String> names = model.list();
        req.setAttribute("userNames", names);

        RequestDispatcher requestDispatcher = req.getRequestDispatcher("views/list.jsp");
        requestDispatcher.forward(req, resp);
    }
}

Mengeksekusi kode java dalam file jsp

Saatnya untuk mulai mengerjakan file list.jsp . Ini hanya akan dijalankan ketika ListServlet melewati proses eksekusi di sini. Selain itu, di servlet itu kami telah menyiapkan daftar nama pengguna dari model dan meneruskannya ke sini di objek permintaan. Karena kita mempunyai daftar nama, kita dapat mengulangnya dan mencetak setiap nama. Seperti yang sudah saya katakan, file jsp dapat mengeksekusi kode Java (yang membuatnya berbeda dari halaman html statis). Untuk mengeksekusi beberapa kode, cukup dengan meletakkan konstruksi berikut di tempat yang kita perlukan:
<!-- html code -->
<%
    // java code
%>
<!-- html code -->
Di dalam konstruksi ini kita memiliki akses ke beberapa variabel:
  • request adalah objek permintaan kami, yang kami lewati dari servlet, yang biasa disebut req ;
  • responce - objek respon, disebut resp di servlet ;
  • out adalah objek bertipe JspWriter (diwarisi dari Writer biasa ), yang dengannya kita dapat "menulis" sesuatu langsung ke halaman html itu sendiri. Entri out.println("Hello world!") sangat mirip dengan entri System.out.println("Hello world!") , tetapi jangan bingung keduanya!
    out.println() "menulis" ke halaman html, dan System.out.println menulis ke output sistem. Jika Anda memanggil metode jsp System.out.println() di dalam bagian dengan kode Java , Anda akan melihat hasilnya di konsol Tomcat , dan bukan di halaman.

Anda dapat mencari objek lain yang tersedia di dalam jsp di sini . Dengan menggunakan objek permintaan , kita bisa mendapatkan daftar nama yang diteruskan dari servlet (kita melampirkan atribut yang sesuai ke objek ini), dan menggunakan objek keluar , kita dapat menampilkan nama-nama ini. Mari kita lakukan ini (untuk saat ini hanya dalam bentuk daftar html):
<ul>
    <%
        List<String> names = (List<String>) request.getAttribute("userNames");

        if (names != null && !names.isEmpty()) {
            for (String s : names) {
                out.println("<li>" + s + "</li>");
            }
        }
    %>
</ul>
Jika Anda perlu menampilkan daftar hanya jika ada pengguna, dan sebaliknya menampilkan peringatan bahwa belum ada pengguna, kita dapat menulis ulang bagian ini sedikit:
<%
    List<String> names = (List<String>) request.getAttribute("userNames");

    if (names != null && !names.isEmpty()) {
        out.println("<ui>");
        for (String s : names) {
            out.println("<li>" + s + "</li>");
        }
        out.println("</ui>");
    } else out.println("<p>There are no users yet!</p>");
%>
Sekarang kita bisa meneruskan data dari servlet ke tampilan, kita bisa sedikit meningkatkan AddServlet kita sehingga pemberitahuan ditampilkan ketika pengguna telah berhasil ditambahkan. Untuk melakukan ini, dalam metode doPost() , setelah menambahkan pengguna baru ke model, kita dapat menambahkan nama pengguna ini ke atribut objek req dan meneruskan kontrol kembali ke tampilan add.jsp . Dan di dalamnya sudah membuat bagian dengan kode Java di mana pemeriksaan dilakukan untuk melihat apakah atribut tersebut ada dalam permintaan, dan jika demikian, maka keluarkan pesan yang menyatakan bahwa pengguna berhasil ditambahkan. Setelah perubahan ini, kode servlet AddServlet lengkap akan terlihat seperti ini:
package app.servlets;

import app.entities.User;
import app.model.Model;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class AddServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("views/add.jsp");
        requestDispatcher.forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String password = req.getParameter("pass");
        User user = new User(name, password);
        Model model = Model.getInstance();
        model.add(user);

        req.setAttribute("userName", name);
        doGet(req, resp);
    }
}
Di sini, di akhir metode doPost() , kita menetapkan atribut dengan nama pengguna yang ditambahkan ke model, setelah itu kita memanggil metode doGet() , yang mana kita meneruskan permintaan dan respons saat ini. Dan metode doGet() sudah mentransfer kontrol ke tampilan, di mana ia mengirimkan objek permintaan dengan nama pengguna yang ditambahkan dilampirkan sebagai atribut. Yang tersisa hanyalah memperbaiki add.jsp sehingga menampilkan pemberitahuan seperti itu jika atribut tersebut ada. Add.jsp terakhir adalah :
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Add new user</title>
    </head>

    <body>
        <div>
            <h1>Super app!</h1>
        </div>

        <div>
            <%
                if (request.getAttribute("userName") != null) {
                    out.println("<p>User '" + request.getAttribute("userName") + "' added!</p>");
                }
            %>
            <div>
                <div>
                    <h2>Add user</h2>
                </div>

                <form method="post">
                    <label>Name:
                        <input type="text" name="name"><br />
                    </label>
                    <label>Password:
                        <input type="password" name="pass"><br />
                    </label>
                    <button type="submit">Submit</button>
                </form>
            </div>
        </div>

        <div>
            <button onclick="location.href='/'">Back to main</button>
        </div>
    </body>
</html>
Badan halaman terdiri dari:
  • div-a dengan tajuk;
  • wadah div untuk konten, ia memeriksa apakah ada atribut dengan nama pengguna;
  • div dengan formulir untuk menambahkan pengguna;
  • dan di bagian akhir terdapat footer dengan tombol untuk kembali ke halaman utama.
Tampaknya ada terlalu banyak div, tapi kita akan menggunakannya nanti saat menambahkan gaya. List.jsp terakhir adalah:
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Users</title>
    </head>

    <body>
        <div>
            <h1>Super app!</h1>
        </div>

        <div>
            <div>
                <div>
                    <h2>Users</h2>
                </div>
                <%
                    List<String> names = (List<String>) request.getAttribute("userNames");

                    if (names != null && !names.isEmpty()) {
                        out.println("<ui>");
                        for (String s : names) {
                            out.println("<li>" + s + "</li>");
                        }
                        out.println("</ui>");
                    } else out.println("<p>There are no users yet!</p>");
                %>
            </div>
        </div>

        <div>
            <button onclick="location.href='/'">Back to main</button>
        </div>
    </body>
</html>
Jadi, kami memiliki aplikasi web yang berfungsi penuh yang dapat menyimpan dan menambah pengguna, serta menampilkan daftar nama mereka. Yang tersisa hanyalah menghiasinya... :)

Menambahkan gaya. Kami menggunakan kerangka W3.CSS

Saat ini aplikasi kami berfungsi, tetapi benar-benar gila. Oleh karena itu, kita akan menambahkan background, warna teks dan tombol, style list, melakukan perataan, menambahkan indentasi, dan sejenisnya. Jika Anda menulis gaya secara manual, ini bisa memakan banyak waktu dan kegelisahan. Oleh karena itu, saya menyarankan menggunakan framework CSS W3.CSS. Ini sudah memiliki kelas siap pakai dengan gaya, yang tersisa hanyalah menempatkan kelas CSS yang ingin kita terapkan di tempat yang tepat. Untuk menambahkannya ke halaman kita, pertama-tama kita akan menyertakan file dengan style. Hal ini dapat dilakukan dengan dua cara:
  1. buka halaman kami dan di bagian kepala masukkan tautan langsung ke file dengan gaya

    <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">

    Opsi ini cocok jika Anda memiliki koneksi Internet yang konstan. Kemudian, saat Anda membuka halaman Anda di server lokal, gaya tersebut akan diambil dari Internet.


  2. Jika Anda ingin memiliki semua gaya secara lokal dan tidak bergantung pada koneksi Internet, unduh file dengan gaya dan letakkan di suatu tempat di dalam folder web (misalnya, web/styles/w3.css ), lalu telusuri semua gaya kami halaman ( index.html, add.jsp, list.jsp ) dan masukkan tautan ke file ini dengan gaya di dalam bagian kepala

    <link rel="stylesheet" href="styles/w3.css">

    Setelah itu, cukup buka tag dan tambahkan gaya yang Anda suka. Saya tidak akan membahas hal ini secara mendetail, tetapi saya akan segera memberikan versi siap pakai dari tiga file saya dengan kelas gaya yang tersusun.

indeks.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Super app!</title>
        <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
    </head>

    <body class="w3-light-grey">
        <div class="w3-container w3-blue-grey w3-opacity w3-right-align">
            <h1>Super app!</h1>
        </div>

        <div class="w3-container w3-center">
            <div class="w3-bar w3-padding-large w3-padding-24">
                <button class="w3-btn w3-hover-light-blue w3-round-large" onclick="location.href='/list'">List users</button>
                <button class="w3-btn w3-hover-green w3-round-large" onclick="location.href='/add'">Add user</button>
            </div>
        </div>
    </body>
</html>

tambahkan.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Add new user</title>
        <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
    </head>

    <body class="w3-light-grey">
        <div class="w3-container w3-blue-grey w3-opacity w3-right-align">
            <h1>Super app!</h1>
        </div>

        <div class="w3-container w3-padding">
            <%
                if (request.getAttribute("userName") != null) {
                    out.println("<div class=\"w3-panel w3-green w3-display-container w3-card-4 w3-round\">\n" +
                            "   <span onclick=\"this.parentElement.style.display='none'\"\n" +
                            "   class=\"w3-button w3-margin-right w3-display-right w3-round-large w3-hover-green w3-border w3-border-green w3-hover-border-grey\">×</span>\n" +
                            "   <h5>User '" + request.getAttribute("userName") + "' added!</h5>\n" +
                            "</div>");
                }
            %>
            <div class="w3-card-4">
                <div class="w3-container w3-center w3-green">
                    <h2>Add user</h2>
                </div>
                <form method="post" class="w3-selection w3-light-grey w3-padding">
                    <label>Name:
                        <input type="text" name="name" class="w3-input w3-animate-input w3-border w3-round-large" style="width: 30%"><br />
                    </label>
                    <label>Password:
                        <input type="password" name="pass" class="w3-input w3-animate-input w3-border w3-round-large" style="width: 30%"><br />
                    </label>
                    <button type="submit" class="w3-btn w3-green w3-round-large w3-margin-bottom">Submit</button>
                </form>
            </div>
        </div>

        <div class="w3-container w3-grey w3-opacity w3-right-align w3-padding">
            <button class="w3-btn w3-round-large" onclick="location.href='/'">Back to main</button>
        </div>
    </body>
</html>

daftar.jsp

<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Users list</title>
        <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
    </head>

    <body class="w3-light-grey">
        <div class="w3-container w3-blue-grey w3-opacity w3-right-align">
            <h1>Super app!</h1>
        </div>

        <div class="w3-container w3-center w3-margin-bottom w3-padding">
            <div class="w3-card-4">
                <div class="w3-container w3-light-blue">
                    <h2>Users</h2>
                </div>
                <%
                    List<String> names = (List<String>) request.getAttribute("userNames");

                    if (names != null && !names.isEmpty()) {
                        out.println("<ul class=\"w3-ul\">");
                        for (String s : names) {
                            out.println("<li class=\"w3-hover-sand\">" + s + "</li>");
                        }
                        out.println("</ul>");

                    } else out.println("<div class=\"w3-panel w3-red w3-display-container w3-card-4 w3-round\">\n"
+
                            "   <span onclick=\"this.parentElement.style.display='none'\"\n" +
                            "   class=\"w3-button w3-margin-right w3-display-right w3-round-large w3-hover-red w3-border w3-border-red w3-hover-border-grey\">×</span>\n" +
                            "   <h5>There are no users yet!</h5>\n" +
                            "</div>");
                %>
            </div>
        </div>

        <div class="w3-container w3-grey w3-opacity w3-right-align w3-padding">
            <button class="w3-btn w3-round-large" onclick="location.href='/'">Back to main</button>
        </div>
    </body>
</html>
Itu saja :) Jika Anda masih memiliki pertanyaan atau memiliki komentar, atau sebaliknya, ada yang tidak beres - tinggalkan komentar. UPD: jika Anda mengalami masalah dengan kesalahan 404 saat mengklik tombol, meskipun semuanya telah dilakukan dengan benar, mungkin Anda harus memperbaiki konfigurasi penerapan pada ide tersebut. Untuk melakukan ini, Anda perlu pergi ke Edit konfigurasi (di bagian atas dekat tombol start), buka tab Deployment di sisi kanan jendela dan pastikan bahwa dalam konteks Aplikasi itu hanya ditunjukkan / Ya, saya' Saya akan melampirkan beberapa tangkapan layar tentang apa yang dihasilkan dari semua ini.
Membuat aplikasi web sederhana menggunakan servlet dan jsp (bagian 2) - 2
Membuat aplikasi web sederhana menggunakan servlet dan jsp (bagian 2) - 3
Membuat aplikasi web sederhana menggunakan servlet dan jsp (bagian 2) - 4
Dan terakhir , jika Anda ingin berlatih dengan proyek ini, Anda dapat mencoba:
  • buat servlet dan jsp untuk menghapus pengguna dan beberapa lagi untuk mengubah/mengedit pengguna yang sudah ada. Anda akan mendapatkan aplikasi web CrUD yang sebenarnya :) di servlets));
  • ganti daftar (List) dengan bekerja dengan database agar pengguna yang ditambahkan tidak hilang setelah server restart :)
Semoga beruntung!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION