CodeGym/Java Blogu/Rastgele/Sunucu uygulamaları ve JSP'ler kullanarak basit bir web u...
John Squirrels
Seviye
San Francisco

Sunucu uygulamaları ve JSP'ler kullanarak basit bir web uygulaması oluşturma (bölüm 2)

grupta yayınlandı
Servlet'ler ve JSP'ler kullanarak basit bir web uygulaması oluşturma (bölüm 1) Makaleyi anlamak için gereken bilgi: Java Core'u zaten az çok anladınız ve JavaEE teknolojileri ve web programlamaya bakmak istiyorsunuz. Şu anda makaleye yakın konuları ele alan Java Koleksiyonları görevini çalışıyor olmanız en mantıklısı olacaktır.
Sunucu uygulamaları ve JSP'ler kullanarak basit bir web uygulaması oluşturma (bölüm 2) - 1

Varlık oluşturma

Varlıklar paketinde , Useriki özel dize değişkenine sahip bir sınıf yaratacağız : name ve password . Yapıcılar (varsayılan ve her iki değeri de alan) ve alıcılar/ayarlayıcılar oluşturun ve her ihtimale karşı yöntemi ve yöntemlerle toString()birlikte geçersiz kılın . Başka bir deyişle, bir sınıf oluştururken saygın bir Java geliştiricisinin yaptığı her şeyi yapacağız. equals()hashCode()
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;
    }
}
Artık bir kullanıcı listesi oluşturmaya başlayabiliriz. Ona kullanıcılar ekleyeceğiz ve onları görüntülemek için kullanıcıları ondan alacağız. Ancak bir sorunumuz var. Servlet nesnelerimizi oluşturmuyoruz. Tomcat bunu bizim için yapıyor. Onlarda geçersiz kıldığımız metotlar bizim için zaten tanımlı ve parametre alamıyoruz. O zaman her iki sunucu uygulamamızda da görünecek bir paylaşılan listeyi nasıl oluştururuz? Her sunucu uygulamasında bir liste nesnesi oluşturursak, o zaman bir listeye kullanıcılar ekler, ancak ListServlet'te başka bir listedeki kullanıcıları görüntüleriz .. Bu nedenle, her iki servlet tarafından paylaşılan bir nesneye ihtiyacımız var. Genel olarak konuşursak, programımızdaki tüm sınıflar tarafından paylaşılan bir nesneye ihtiyacımız var: tüm program için bir nesne. Umarım tasarım kalıpları hakkında bir şeyler duymuşsundur. Bazı kişiler için bu, programlarındaki Singleton modeline yönelik ilk gerçek ihtiyaç olabilir . Çılgına dönebilir ve çift kontrol ve senkronizasyon ile bazı tatlı Singleton'ları kranklayabilirsiniz (evet, Tomcat servlet'leri ayrı iş parçacığı üzerinde çalıştığı için uygulamamız çok iş parçacıklıdır). Ama erken başlatma tekniğini kullanacağım çünkü buradaki amaçlarımız için tamamen yeterli.

model oluşturma

Model paketinde bir sınıf oluşturun (ve Singleton modelini uygulayın) ve buna sıra dışı bir şey deyin. Örneğin, Model . Sınıfımızda özel bir kullanıcı listesi oluşturacağız ve iki yöntem uygulayacağız: biri kullanıcı eklemek için, diğeri ise bir dizi (kullanıcı adları) listesi döndürmek için. Kullanıcı nesnemiz bir kullanıcı adı ve şifreden oluştuğu ve kullanıcı şifrelerini açıklamak istemediğimiz için sadece bir isim listemiz olacak.
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());
    }
}

MVC hakkında biraz

Singleton hakkında zaten bir şeyler duyduğunuza göre , muhtemelen başka bir tasarım modeli model-görünüm-denetleyicisi (MVC) hakkında bir şeyler duymuşsunuzdur . Amacı, iş mantığını görünümden ayırmaktır. Yani, ne yapılacağını belirleyen kodu, öğelerin nasıl görüntüleneceğini belirleyen koddan ayırmaktır. Görünüm , verilerin nasıl sunulacağından sorumludur. Bizim durumumuzda, görünümler bizim JSP sayfalarımızdır . Tam da bu yüzden onları views adlı bir klasöre koydum . Model, programın fiilen birlikte çalıştığı verilerdir. Bizim durumumuzda bu, kullanıcılardır (kullanıcı listesi). Ve denetleyiciler, aralarındaki bağlantıdır. Modelden veri alıp görünümlere iletirler (veya Tomcat'ten bazı veriler alırlar) ., işleyin ve modele iletin). İş mantığınızı (programın ne yapması gerektiğini) modelde veya görünümde değil, bunlarda tanımlarsınız. Böylece her parça kendi işini yürütür:
  • model verileri depolar;
  • görünümler, verilerin güzel temsillerini oluşturur;
  • denetleyiciler veri işlemeyi yönetir.
Bu, programın tek bir sınıftaki tüm kodlardan oluşan korkunç bir yığın yerine oldukça basit ve bakımı yapılabilir olmasını sağlar. MVC sadece web programlama için uygun değildir, özellikle bu alanda sıklıkla kullanılır (neredeyse her zaman). Bizim durumumuzda, servlet'ler denetleyici görevi görecek. Bu, modelin çok yüzeysel ve kısa bir açıklamasıdır, ancak MVC bu makalenin ana konusu değildir. Daha fazlasını öğrenmek isteyen varsa, Google senin arkadaşın! Kullanıcı eklemek için bir form oluşturun. Formu add.jsp'ye ekleyin . İki metin giriş alanından (biri normal, diğeri - bir şifre alanı) ve verileri sunucuya göndermek için bir düğmeden oluşmalıdır.
<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>
Burada form, post değerine sahip bir yöntem özniteliğine sahiptir . Bu, bu formdaki verilerin sunucuya bir POST isteği olarak gideceğini gösterir . action niteliği belirtilmemiş, yani istek bu sayfaya geldiğimiz adrese ( /add ) gönderilecek. Böylece, bir GET isteği aldığında , bu adrese bağlı sunucu uygulamamız, kullanıcı ekle formuyla JSP'yi döndürür. Ve eğer bir POST isteği alırsa , formun verilerini buraya gönderdiğini biliyoruz (bunu, istek nesnesinden ayıklıyoruz)doPost()yöntem, süreç ve kaydetme için modele geçiş). Girdi alanlarının name (kullanıcı adları için veya şifreler için pass ) adında bir parametreye sahip olduğunu belirtmekte fayda var . Bu çok önemli bir konu. Böylece, bu verileri (girilecek kullanıcı adı ve şifre) istekten (servlet içinden) almak için bu isim ve geçiş alanlarını kullanacağız . Ama bunun hakkında daha sonra. Veri göndermek için düğmem , alışıldığı gibi bir çıktı alanı olarak değil, yine bir düğme olarak yapıldı . Bu yaklaşımın ne kadar yaygın olarak benimsendiğini bilmiyorum ama benim için çalışıyor (Chrome tarayıcı).

POST isteklerinin servlet işlemesi

AddServlet'e dönelim . Sunucu uygulamamızın GET isteklerini "yakalamasına" izin vermek için HttpServletdoGet() sınıfındaki yöntemi geçersiz kıldığımızı hatırlatırım . Sunucu uygulamamıza POST isteklerini de yakalamayı öğretmek için yöntemi de geçersiz kılmalıyız . Tomcat, birlikte çalışacağımız benzer istek ve yanıt nesnelerini iletir. Başlamak için, isteğin adını çıkarın ve form tarafından gönderilen parametreleri iletin (formda farklı adlar belirttiyseniz, o adları kullanın). Bundan sonra, alınan verileri kullanarak bir kullanıcı nesnesi oluşturun. Ardından model nesnesini alıp oluşturulan kullanıcıyı modele ekliyoruz. doPost()
@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);
}

Görünüme veri aktarma

ListServlet'e geçelim . Yöntem doGet()zaten uygulandı. Kontrolü görünüme ( list.jsp ) aktarır . Henüz buna sahip değilseniz, AddServlet'teki yöntemle benzer şekilde oluşturun . Şimdi, modelden kullanıcı adlarının listesini almak ve onları alacak ve güzel bir şekilde gösterecek olan görünüme iletmek güzel olurdu. Bunun için yine Tomcat'ten aldığımız request nesnesini kullanacağız . Bu nesneye bir tür ad vererek bir nitelik ekleyebiliriz. Hatta geçirmek istediğimiz nesneyi view'a ekleyebiliriz.. Servlet uygulamasından view'a kontrolü aktarırken, servlet'in aldığı istek ve yanıt nesnelerinin aynısını view'a geçirdiğimiz için, ad listemizi istek nesnesine ekleyebilir ve ardından kullanıcı adları listemizi istekten alabiliriz. Görünümdeki nesne. ListServlet sınıfıyla işimiz bitti , bu yüzden burada tüm sınıfın kodunu sunacağım:
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);
    }
}

Java kodunu JSP dosyalarında çalıştırma

list.jsp dosyasına bakmanın zamanı geldi . Yalnızca ListServlet kontrolü kendisine aktardığında yürütülür . Ayrıca zaten servletteki modelden kullanıcı adları listesini hazırlayıp request nesnesinde buraya iletmiştik. İsimler listesine sahip olduğumuz için, bir döngü kullanarak tekrarlayabilir forve her bir ismi görüntüleyebiliriz. Daha önce de söylediğim gibi, JSP dosyaları Java kodunu çalıştırabilir (bu, onları statik HTML sayfalarından farklı kılan şeydir). Bazı kodları çalıştırmak için tek yapmamız gereken aşağıdaki yapıyı uygun yere koymak:
<!-- html code -->
<%
    // Java code
%>
<!-- html code -->
Bu yapı içinde, birkaç değişkene erişim elde ediyoruz:
  • request — servlet uygulamasından geçtiğimiz, basitçe req olarak adlandırıldığı request nesnemiz ;
  • yanıt — yanıt nesnesi ( sunucu uygulamasında yanıt adı verilir);
  • out — doğrudan HTML sayfasının kendisine "yazmak" için kullanabileceğimiz bir JspWriter nesnesi (sıradan bir Writer miras alır) . out.println("Merhaba, Dünya!") ifadesi, System.out.println("Merhaba, Dünya!") ifadesine çok benzer , ancak onları karıştırmayın!
  • out.println() bir HTML sayfasına "yazar" , System.out.println ise sistem çıktı akışına yazar . System.out.println() öğesini Java koduyla bir JSP bölümü içinde çağırırsanız , sonuçları Tomcat konsolunda görürsünüz , ancak sayfada görmezsiniz.
Bir JSP'de bulunan diğer nesneleri buradan arayabilirsiniz . Sunucu uygulamasından iletilen adların listesini almak için request nesnesini kullanabiliriz (bu nesneye karşılık gelen özniteliği ekledik) ve bu adları görüntülemek için out nesnesini kullanırız . Bunları gösterelim (şimdilik basit bir HTML listesi olarak):
<ul>
    <%
        List<String> names = (List<String>) request.getAttribute("userNames");

        if (names != null && !names.isEmpty()) {
            for (String s : names) {
                out.println("<li>" + s + "</li>");
            }
        }
    %>
</ul>
Listeyi sadece kullanıcı varsa görüntülememiz gerekiyorsa ve aksi takdirde henüz kullanıcı yok uyarısı göstermemiz gerekiyorsa, bu bölümü biraz yeniden yazabiliriz:
<%
    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>");
%>
Artık sunucu uygulamalarından görünümlere nasıl veri aktaracağımızı bildiğimize göre, AddServlet'imizi bir kullanıcının başarılı bir şekilde eklenmesi hakkında bir bildirim görüntüleyecek şekilde geliştirebiliriz . Bunu yapmak için, yöntemde doPost(), modele yeni bir kullanıcı ekledikten sonra, bu kullanıcı adını req nesnesinin niteliklerine ekleyebilir ve kontrolü bir görünüme ( add.jsp ) geri geçirebiliriz . Ve şimdi, isteğin böyle bir özniteliğe sahip olup olmadığını kontrol edeceğimiz Java kodunu içeren bir bölüm ekleyeceğiz ve varsa, kullanıcının başarıyla eklendiğini belirten bir mesaj görüntüleyeceğiz. Bu değişikliklerden sonra, AddServlet'in tam kodu şöyle görünecektir:
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);
    }
}
Burada metodun sonunda doPost()modele eklenen kullanıcının ismi ile bir öznitelik oluşturuyoruz ve ardından doGet()mevcut istek ve yanıtı ilettiğimiz metodu çağırıyoruz. Yöntem doGet()şimdi denetimi, eklenen kullanıcının adının bir öznitelik olarak eklendiği istek nesnesini de alan görünüme aktarır. Bize kalan, add.jsp'yi böyle bir özellik yoksa bildirimi gösterecek şekilde düzeltmektir. İşte add.jsp'nin son hali :
<%@ 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>
Sayfa gövdesi aşağıdakilerden oluşur:
  • başlıklı bir div;
  • kullanıcı adına sahip bir özniteliğin var olup olmadığını kontrol eden içerik için bir div kapsayıcısı;
  • kullanıcı ekleme formuna sahip bir div;
  • ve altta, ana sayfaya dönmek için düğmeli bir altbilgi.
Bu çok fazla div gibi görünebilir, ancak bunları daha sonra stiller eklediğimizde kullanacağız. İşte list.jsp'nin son hali :
<%@ 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>
Böylece, kullanıcıları kaydedip ekleyebilen ve ayrıca adlarının bir listesini görüntüleyebilen, tamamen çalışan bir web uygulamamız var. Şimdi sadece onu güzelleştirmemiz gerekiyor… :) Sunucu uygulamaları ve JSP'ler kullanarak basit bir web uygulaması oluşturma (bölüm 2) - 2

Stiller ekleme. W3.CSS çerçevesini kullanacağız

Şu anda uygulamamız çalışıyor, ancak kesinlikle aşırı görünüyor. Öyleyse, bir arka plan ekleyelim, metni ve düğmeleri renklendirelim, listelere stil ekleyelim, öğeleri hizalayalım, girintiler ekleyelim, vb. Stilleri manuel olarak yazmak çok zaman alabilir ve sinirlerimizi zorlayabilir. Bu yüzden W3.CSS çerçevesini kullanmayı öneriyorum . Halihazırda stiller içeren kullanıma hazır sınıflara sahiptir. Sadece kullanmak istediğimiz CSS sınıflarını doğru yerlere ayarlamamız gerekiyor. Bunları sayfalarımıza eklemek için önce stil dosyasını bağlarız. Bunu yapmanın iki yolu vardır:
  1. sayfalarımızı gözden geçirin ve aşağıdaki baş bölümüne stil dosyasına doğrudan bir bağlantı ekleyin

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

    Kalıcı bir İnternet bağlantınız varsa bu seçenek uygundur. Sayfalarınızı yerel sunucuda açtığınızda, stiller internetten alınacaktır.

  2. Ancak, tüm stillerin yerel olarak olmasını ve bir İnternet bağlantısına bağlı olmamasını istiyorsanız, stil dosyasını indirin ve web klasörü içinde bir yere yerleştirin (ör. web/styles/w3.css ). Ardından tüm sayfalarımızı ( index.html, add.jsp, list.jsp ) gözden geçirin ve aşağıdaki bağlantıyı baş bölümünün içindeki stil dosyasına ekleyin :

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

    Bundan sonra, etiketleri gözden geçirin ve beğendiğiniz stilleri ekleyin. Bunun üzerinde ayrıntılı olarak durmayacağım. Bunun yerine, dosyalarımın üçünün kullanıma hazır sürümlerini raster stili sınıflarla sağlayacağım.

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>
eklenti.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>
Ve bu kadar. :) Hala herhangi bir sorunuz veya yorumunuz varsa veya bir şeyler yolunda gitmezse, lütfen yorum bırakın. Ve her şeyin nasıl sonuçlandığına dair birkaç ekran görüntüsü ekleyeceğim.
Sunucu uygulamaları ve JSP'ler kullanarak basit bir web uygulaması oluşturma (bölüm 2) - 3
Sunucu uygulamaları ve JSP'ler kullanarak basit bir web uygulaması oluşturma (bölüm 2) - 4
Sunucu uygulamaları ve JSP'ler kullanarak basit bir web uygulaması oluşturma (bölüm 2) - 5
Ve son olarak , bu proje ile pratik yapmak isterseniz, aşağıdakileri deneyebilirsiniz:
  • bir kullanıcıyı silmek için bir sunucu uygulaması ve JSP yapın ve mevcut bir kullanıcıyı düzenlemek için başka bir çift ekleyin. Sonuç, sunucu uygulamaları kullanılarak oluşturulmuş gerçek bir CRUD web uygulaması olacaktır. ;)
  • Sunucu yeniden başlatıldıktan sonra eklenen kullanıcıların kaybolmaması için Listeyi bir veritabanıyla değiştirin. :)
İyi şanlar!
Yorumlar
  • Popüler
  • Yeni
  • Eskimiş
Yorum bırakmak için giriş yapmalısınız
Bu sayfada henüz yorum yok