JavaRush /Blog Java /Random-MS /Mencipta aplikasi web mudah menggunakan servlets dan jsp ...

Mencipta aplikasi web mudah menggunakan servlets dan jsp (bahagian 2)

Diterbitkan dalam kumpulan
Mencipta aplikasi web mudah menggunakan servlet dan jsp (bahagian 1) Tahap pengetahuan yang diperlukan untuk memahami artikel: anda sudah lebih kurang memahami Java Core dan ingin melihat teknologi JavaEE dan pengaturcaraan web. Ia paling masuk akal jika anda sedang mengkaji pencarian Java Collections, yang merangkumi topik yang hampir dengan artikel.
Mencipta aplikasi web mudah menggunakan servlets dan jsp (bahagian 2) - 1

Mencipta Entiti

Dalam pakej entiti , kami akan mencipta kelas User , dan di dalamnya akan terdapat dua pembolehubah rentetan peribadi nama dan kata laluan . Mari buat pembina (lalai dan satu yang akan menerima kedua-dua nilai), getter/setter, mengatasi kaedah toString() untuk berjaga-jaga, serta kaedah equals() dan hashCode() . Iaitu, kami akan melakukan semua yang dilakukan oleh pembangun Java yang baik semasa 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 boleh mula membuat senarai pengguna. Kami akan menambah pengguna kepadanya, dan dari mana kami akan membawa mereka untuk paparan. Namun, ada satu masalah. Kami tidak mencipta objek servlet kami, Tomcat melakukannya untuk kami . Kaedah yang kami ganti di dalamnya juga telah ditakrifkan untuk kami, dan kami tidak boleh menambah parameter. Bagaimanakah kita boleh membuat senarai kongsi yang boleh dilihat oleh kedua-dua servlet kita? Jika kita hanya mencipta objek senarai kita sendiri dalam setiap servlet, ternyata kita akan menambah pengguna pada satu senarai, dan memaparkan senarai pengguna menggunakan servlet ListServlet kepada yang lain. Ternyata kita memerlukan objek yang biasa untuk kedua-dua servlet. Secara amnya, kami memerlukan objek yang biasa kepada semua kelas dalam program kami; satu-satunya objek untuk keseluruhan program. Saya harap anda pernah mendengar sesuatu tentang corak reka bentuk. Dan, mungkin, bagi sesetengah orang, ini adalah keperluan sebenar pertama untuk menggunakan corak Singleton dalam program mereka. Anda boleh terpesong dan mencipta Singleton yang keren , dengan semakan dan penyegerakan berganda (ya, kami mempunyai aplikasi berbilang benang, kerana Tomcat menjalankan servlet dalam benang yang berbeza), tetapi saya akan menggunakan pilihan dengan permulaan awal, kerana ia agak sesuai di sini cukup dan ia sesuai dengan tujuan kita.

Mencipta model

Mari buat kelas (dan laksanakan corak Singleton di dalamnya ) dalam pakej model dan panggil ia sesuatu yang luar biasa. Katakan Model . Mari buat objek senarai pengguna peribadi dalam kelas kami, dan laksanakan dua kaedah: satu supaya kami boleh menambah pengguna, dan yang kedua untuk mengembalikan senarai rentetan (nama pengguna). Memandangkan objek pengguna kami terdiri daripada nama dan kata laluan, dan kami tidak mahu "mendedahkan" kata laluan pengguna, kami hanya akan mempunyai senarai 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

Memandangkan anda pernah mendengar tentang singleton , maka anda mungkin pernah mendengar tentang corak reka bentuk lain - MVC (model-view-controller, dalam model-view-controller Rusia, atau sama seperti dalam model-view-controller bahasa Inggeris). Intipatinya adalah untuk memisahkan logik perniagaan daripada pembentangan. Iaitu, asingkan kod yang menentukan perkara yang perlu dilakukan daripada kod yang menentukan cara untuk dipaparkan. Lihat (lihat atau hanya pandangan) bertanggungjawab untuk bentuk di mana beberapa data dibentangkan. Dalam kes kami, paparan ialah halaman JSP kami. Itulah sebabnya saya meletakkannya dalam folder yang dipanggil views . Model ialah data sebenar yang digunakan oleh program ini. Dalam kes kami, ini adalah pengguna (senarai pengguna). Nah, pengawal adalah pautan penghubung antara mereka. Mereka mengambil data daripada model dan menyampaikannya kepada paparan (atau menerima beberapa data daripada Tomcat, memprosesnya dan menyerahkannya kepada model). Logik perniagaan (apa sebenarnya yang perlu dilakukan oleh program) perlu diterangkan di dalamnya, dan bukan dalam model atau dalam pandangan. Oleh itu, setiap orang melakukan perkara mereka sendiri:
  • model menyimpan data;
  • pandangan melukis perwakilan data yang indah;
  • pengawal mengendalikan pemprosesan data.
Ini membolehkan program menjadi agak mudah dan boleh diselenggara, dan bukannya pembuangan besar semua kod dalam satu kelas. MVC sesuai bukan sahaja untuk pengaturcaraan web, tetapi di kawasan ini ia sering dijumpai (hampir selalu). Dalam kes kami, servlet akan bertindak sebagai pengawal. Ini adalah penerangan yang sangat cetek dan ringkas tentang corak, tetapi MVC bukanlah topik utama artikel ini. Siapa yang ingin mengetahui lebih lanjut - Google to the rescue! Buat borang untuk menambah pengguna Mari tambahkan pada fail add.jsp borang yang terdiri daripada dua medan input teks (satu biasa, satu lagi kata laluan) dan butang untuk menghantar data ke pelayan.
<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 borang mempunyai atribut kaedah dengan siaran nilai . Ini bermakna data daripada borang ini akan dihantar ke pelayan dalam bentuk permintaan POST. Atribut tindakan tidak dinyatakan, yang bermaksud permintaan akan dihantar ke alamat yang sama di mana kami pergi ke halaman ini ( /add ). Oleh itu, servlet kami, terikat kepada alamat ini, apabila menerima permintaan GET, mengembalikan jsp ini dengan borang untuk menambah pengguna, dan jika ia menerima permintaan POST, ini bermakna borang menghantar datanya di sana (yang kami akan tarik dari minta objek dalam kaedah doPost() Perlu diingat bahawa medan input mempunyai parameter nama (untuk medan dengan nama ia mempunyai nama nilai, dan untuk medan dengan kata laluan ia mempunyai pas nilai ) . Ini adalah perkara yang cukup penting. Oleh kerana untuk mendapatkan data ini (nama dan kata laluan yang akan dimasukkan) daripada permintaan (sudah di dalam servlet), kami akan menggunakan nama ini dan pas . Tetapi lebih lanjut mengenai itu kemudian. Butang untuk menghantar data itu sendiri sekali lagi dibuat dalam bentuk butang , dan bukan sebagai medan output, seperti kebiasaannya. Saya tidak tahu betapa universal pilihan ini, tetapi ia berfungsi untuk saya (pelayar Chrome).

Memproses permintaan POST dengan servlet

Mari kembali ke servlet AddServlet . Biar saya ingatkan anda: agar servlet kami dapat "menangkap" permintaan GET, kami membatalkan kaedah doGet() daripada kelas HttpServlet . Untuk mengajar servlet kami untuk menangkap permintaan POST juga, kami juga perlu mengatasi kaedah doPost() . Ia menerima permintaan dan objek respons yang serupa daripada Tomcat , yang akan kami usahakan. Mula-mula, mari kita ekstrak daripada permintaan nama dan lulus parameter yang dihantar oleh borang (jika anda menamakannya secara berbeza dalam borang, maka itu adalah nama yang anda tulis). Selepas ini, kami akan mencipta objek pengguna kami menggunakan data yang diterima. Kemudian kita akan mendapat objek model dan menambah pengguna yang dibuat pada 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);
}

Menghantar data untuk dilihat

Mari kita beralih ke servlet ListServlet . Kaedah doGet() telah pun dilaksanakan di sini , yang hanya memindahkan kawalan ke paparan list.jsp . Jika anda belum memilikinya lagi, lakukannya dengan analogi dengan kaedah yang sama daripada servlet AddServlet . Sekarang adalah baik untuk mendapatkan senarai nama pengguna daripada model dan menghantarnya ke paparan, yang akan menerimanya dan memaparkannya dengan baik. Untuk melakukan ini, kami sekali lagi akan menggunakan objek permintaan yang kami terima daripada Tomcat . Kita boleh menambah atribut pada objek ini, memberikannya beberapa nama, dan, sebenarnya, objek itu sendiri, yang kami ingin pindahkan untuk melihat . Disebabkan fakta bahawa apabila memindahkan proses pelaksanaan dari servlet ke paparan, kami meneruskan permintaan dan objek respons yang sama yang diterima oleh servlet itu sendiri, kemudian dengan menambahkan senarai nama kami ke objek permintaan, kami boleh dari permintaan ini objek dalam paparan buat senarai nama pengguna kami dan dapatkan. Kami selesai dengan ListServlet class , jadi berikut ialah kod untuk keseluruhan 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);
    }
}

Melaksanakan kod java dalam fail jsp

Sudah tiba masanya untuk mula bekerja pada fail list.jsp . Ia hanya akan dilaksanakan apabila ListServlet melepasi proses pelaksanaan di sini. Di samping itu, dalam servlet itu kami telah menyediakan senarai nama pengguna daripada model dan menyampaikannya di sini dalam objek permintaan. Memandangkan kami mempunyai senarai nama, kami boleh mengulanginya dan mencetak setiap nama. Seperti yang telah saya katakan, fail jsp boleh melaksanakan kod java (iaitu yang menjadikannya berbeza daripada halaman html statik). Untuk melaksanakan beberapa kod, cukup untuk meletakkan pembinaan berikut di tempat yang kita perlukan:
<!-- html code -->
<%
    // java code
%>
<!-- html code -->
Di dalam binaan ini kita mempunyai akses kepada beberapa pembolehubah:
  • permintaan ialah objek permintaan kami, yang kami luluskan dari servlet, di mana ia hanya dipanggil req ;
  • responce - objek tindak balas, dipanggil resp dalam servlet ;
  • out ialah objek jenis JspWriter (diwarisi daripada Writer biasa ), dengan bantuannya kita boleh "menulis" sesuatu terus ke dalam halaman html itu sendiri. Entri out.println("Hello world!") sangat serupa dengan entri System.out.println("Hello world!") , tetapi jangan mengelirukan kedua-duanya!
    out.println() “menulis” ke halaman html dan System.out.println menulis pada output sistem. Jika anda memanggil kaedah jsp System.out.println() di dalam bahagian dengan kod Java , anda akan melihat hasilnya dalam konsol Tomcat , dan bukan pada halaman.

Anda boleh mencari objek lain yang tersedia di dalam jsp di sini . Menggunakan request object , kita boleh mendapatkan senarai nama yang telah diluluskan daripada servlet (kami melampirkan atribut yang sepadan dengan objek ini), dan menggunakan out object , kami boleh memaparkan nama-nama ini. Mari lakukan ini (buat masa ini hanya dalam bentuk senarai 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 memaparkan senarai hanya jika terdapat pengguna, dan sebaliknya memaparkan amaran bahawa tiada pengguna lagi, kami boleh menulis semula bahagian 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>");
%>
Kini setelah kami boleh menghantar data daripada servlet kepada paparan, kami boleh menambah baik sedikit AddServlet kami supaya pemberitahuan dipaparkan apabila pengguna telah berjaya ditambahkan. Untuk melakukan ini, dalam kaedah doPost() , selepas menambah pengguna baharu pada model, kita boleh menambah nama pengguna ini pada atribut objek req dan lulus kawalan kembali ke paparan add.jsp . Dan di dalamnya sudah membuat bahagian dengan kod Java di mana semakan dibuat untuk melihat sama ada atribut sedemikian ada dalam permintaan, dan jika ya, kemudian keluarkan mesej yang menyatakan bahawa pengguna telah berjaya ditambah. Selepas perubahan ini, kod servlet AddServlet yang lengkap akan kelihatan 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, pada penghujung kaedah doPost() , kami menetapkan atribut dengan nama pengguna yang ditambahkan pada model, selepas itu kami memanggil kaedah doGet() , yang mana kami menghantar permintaan dan respons semasa. Dan kaedah doGet() sudah memindahkan kawalan ke paparan, di mana ia menghantar objek permintaan dengan nama pengguna tambahan dilampirkan sebagai atribut. Apa yang tinggal ialah membetulkan add.jsp supaya ia memaparkan pemberitahuan sedemikian jika atribut sedemikian wujud. Add.jsp terakhir ialah :
<%@ 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 daripada:
  • div-a dengan pengepala;
  • bekas div untuk kandungan, ia menyemak sama ada atribut dengan nama pengguna wujud;
  • div dengan borang untuk menambah pengguna;
  • dan pada penghujungnya terdapat pengaki dengan butang untuk kembali ke halaman utama.
Ia mungkin kelihatan seperti terdapat terlalu banyak div, tetapi kami akan menggunakannya kemudian apabila kami menambah gaya. Senarai terakhir.jsp ialah:
<%@ 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>
Oleh itu, kami mempunyai aplikasi web yang berfungsi sepenuhnya yang boleh menyimpan dan menambah pengguna, serta memaparkan senarai nama mereka. Yang tinggal hanyalah untuk menghiasinya... :)

Menambah gaya. Kami menggunakan rangka kerja W3.CSS

Pada masa ini aplikasi kami berfungsi, tetapi benar-benar gila. Oleh itu, kami akan menambah latar belakang, warna teks dan butang, senarai gaya, melakukan penjajaran, menambah inden, dan seumpamanya. Jika anda menulis gaya secara manual, ia boleh mengambil banyak masa dan saraf. Oleh itu, saya cadangkan menggunakan rangka kerja CSS W3.CSS. Ia sudah mempunyai kelas siap pakai dengan gaya; yang tinggal hanyalah meletakkan kelas CSS yang kami mahu gunakan di tempat yang betul. Untuk menambahkannya ke halaman kami, mula-mula kami akan memasukkan fail dengan gaya. Ini boleh dilakukan dalam dua cara:
  1. pergi melalui halaman kami dan di bahagian kepala masukkan pautan terus ke fail dengan gaya

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

    Pilihan ini sesuai jika anda mempunyai sambungan Internet yang berterusan. Kemudian, apabila anda membuka halaman anda pada pelayan tempatan, gaya akan ditarik dari Internet.


  2. Jika anda ingin mempunyai semua gaya secara setempat dan tidak bergantung pada sambungan Internet, muat turun fail dengan gaya dan letakkannya di suatu tempat di dalam folder web (contohnya, web/styles/w3.css ), kemudian pergi melalui semua kami halaman ( index.html, add.jsp, list.jsp ) dan masukkan pautan ke fail ini dengan gaya di dalam bahagian kepala

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

    Selepas itu, hanya pergi melalui tag dan tambah gaya yang anda suka. Saya tidak akan memikirkan perkara ini secara terperinci, tetapi akan segera memberikan versi siap saya bagi tiga fail saya dengan kelas gaya tersusun.

index.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>

add.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>

list.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 sahaja :) Jika anda masih mempunyai sebarang soalan atau mempunyai sebarang ulasan, atau sebaliknya, sesuatu tidak menjadi - tinggalkan ulasan. UPD: jika anda menghadapi masalah dengan ralat 404 semasa mengklik butang, walaupun semuanya telah dilakukan dengan betul, mungkin anda perlu membetulkan konfigurasi penggunaan dalam idea itu. Untuk melakukan ini, anda perlu pergi ke Edit konfigurasi (di bahagian atas berhampiran butang mula), pergi ke tab Deployment di sebelah kanan tetingkap dan pastikan bahawa dalam konteks Aplikasi ia hanya ditunjukkan / Baiklah, saya' Saya akan melampirkan beberapa tangkapan skrin tentang perkara yang terhasil daripada semua ini.
Mencipta aplikasi web mudah menggunakan servlets dan jsp (bahagian 2) - 2
Mencipta aplikasi web mudah menggunakan servlets dan jsp (bahagian 2) - 3
Mencipta aplikasi web mudah menggunakan servlets dan jsp (bahagian 2) - 4
Dan akhirnya , jika anda ingin berlatih dengan projek ini, anda boleh mencuba:
  • buat servlet dan jsp untuk memadam pengguna dan beberapa lagi untuk menukar/mengedit pengguna sedia ada. Anda akan mendapat aplikasi web CrUD sebenar :) pada servlets));
  • gantikan senarai (Senarai) dengan bekerja dengan pangkalan data supaya pengguna yang ditambahkan tidak hilang selepas memulakan semula pelayan :)
Semoga berjaya!
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION