KodeGym/Blog Jawa/Acak/Aplikasi pisanan sampeyan nggunakake servlet Java
John Squirrels
tingkat
San Francisco

Aplikasi pisanan sampeyan nggunakake servlet Java

Diterbitake ing grup
Hello, kabeh! Sampeyan bakal kenal karo servlets minangka konsep dhasar pangembangan web, lan sampeyan bakal bisa nulis aplikasi sing gampang digunakake. Aplikasi pisanan sampeyan nggunakake servlet Java - 1 Kanggo ngindhari tumindak sing ora perlu, kita ora bakal miwiti saka awal. Kita bakal terus nggarap aplikasi saka artikel sadurunge babagan Hibernate . Nanging wiwit kita mung miwiti kanggo njaluk kenalan karo servlets, Aku wis dibusak kabeh related kanggo kelas Auto saka aplikasi lan kiwa mung kelas Panganggo lan tumindak nglibatno. Proyek kasebut bakal disusun kaya mangkene: Aplikasi pisanan sampeyan nggunakake servlet Java - 2Dadi, servlets! Wikipedia nyatakake: "A servlet Java minangka komponen piranti lunak Java sing ngluwihi kemampuan server. Senajan servlet bisa nanggapi akeh jinis panjalukan, padha paling umum ngleksanakake wadhah web kanggo hosting aplikasi web ing server web lan kanthi mangkono nduweni kualifikasi minangka server- API web servlet sisih." Iki pancen bener. Ing kene, kanggo pisanan, kita nemokake konsep "arsitektur aplikasi klien-server." Iku cukup prasaja ing inti. Klien ngakses server kanthi ngirim panjalukan HTTP. Server ngasilake data sing dibutuhake (contone, njupuk saka database) lan bali menyang klien. Conto sing paling gampang yaiku nalika sampeyan ngeklik tombol "Kanca" ing jaringan sosial tartamtu, saéngga ngirim panjaluk menyang server. Server nganyari dhaptar kanca ing database lan bali menyang sampeyan (klien). Dhaptar panjalukan HTTP cukup gedhe, dadi yen sampeyan durung nate nemoni, mula luwih becik maca babagan kasebut ing papan liya, contone,kene . Tujuane yaiku: Nggawe aplikasi CRUD nggunakake servlets. Aplikasi kasebut kudu bisa nggawe, maca, nganyari, lan mbusak pangguna saka database nggunakake servlet sing ngolah panjaluk HTTP. Aplikasi kita saka artikel Hibernate wis bisa nindakake iki, nanging dikontrol langsung saka kode Jawa, luwih tepat, saka cara utama (). Wektu iki, klien sing bakal ngirim panjalukan, yaiku sampeyan :) Bab pisanan sing kudu ditindakake yaiku nambah dependensi anyar menyang file pom.xml.
<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>com.itis4</groupId>
    <artifactId>UsersDaoProject</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <!-- PostgreSQL  -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.4.1212.jre7</version>
        </dependency>

        <!-- Hibernate 5.2.6 Final -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.6.Final</version>
        </dependency>

        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.4.RELEASE</version>
        </dependency>

    </dependencies>

</project>
Kita nambahake 3 dependensi:
  1. Pustaka javax.servlet-api dhewe
  2. Pustaka tag JSTL. Bakal dibutuhake kanggo nggawe sisih klien, yaiku kaca JSP
  3. Spring-WebMVC. Kita butuh siji kelas Spring, sing bakal diomongake mengko.
Manajemen servlet ditangani dening wadhah servlet. Ing kasus kita, kita bakal nggunakake Apache Tomcat. Iku cukup populer — sampeyan mbokmenawa wis krungu bab iku :) Siklus urip servlet kasusun saka langkah ing ngisor iki:
  1. Yen ora ana servlet ing wadhah:
    • Kelas servlet dimuat dening wadhah.
    • Wadhah kasebut nggawe conto kelas servlet.
    • Wadhah kasebut nelpon metode init (). Cara iki miwiti servlet lan diarani dhisik, sadurunge servlet bisa nglayani panjalukan. Sajrone kabeh siklus urip, metode init () diarani mung sapisan.
  2. Layanan panjaluk klien. Saben panjalukan diproses ing thread dhewe. Wadhah nelpon cara layanan () kanggo saben request. Cara iki nemtokake jinis panjalukan sing mlebu lan dikirim menyang cara sing cocog kanggo diproses. Pangembang servlet kudu nyedhiyakake implementasine kanggo metode kasebut. Yen panyuwunan teka kanggo handler sing ora dileksanakake, diarani metode kelas induk lan biasane bakal ngasilake kesalahan menyang panyuwun.

  3. Yen wadhah kudu mbusak servlet, nelpon cara numpes (), sing njupuk servlet metu saka operasi. Kaya metode init (), metode iki uga diarani sapisan sajrone siklus servlet kabeh.
Servlet kita katon cukup prasaja:
package servlets;

import models.User;
import services.UserService;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
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 UserSimpleServlet extends HttpServlet {

    private UserService service = new UserService();

    public void init(ServletConfig servletConfig) {
        try {
            super.init(servletConfig);
        } catch (ServletException e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        List<User> users = service.findAllUsers();
        req.setAttribute("users", users);
        RequestDispatcher dispatcher = req.getRequestDispatcher("/showUsers.jsp");
        dispatcher.forward(req, resp);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        String name = req.getParameter("name");
        int age = Integer.parseInt(req.getParameter("age"));
        User user = new User(name, age);
        service.saveUser(user);
        resp.sendRedirect("/users");

    }

    @Override
    protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int id = Integer.parseInt(req.getParameter("id"));
        User user = service.findUser(id);
        user.setName(req.getParameter("name"));
        user.setAge(Integer.parseInt(req.getParameter("age")));
        service.updateUser(user);
        resp.sendRedirect("/users");
    }

    @Override
    protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        int id = Integer.parseInt(req.getParameter("id"));
        service.deleteUser(service.findUser(id));
        resp.sendRedirect("/users");
    }
}
Nalika sampeyan bisa ndeleng, ngandhut cara init (), kang diterangake ing ndhuwur, lan ngleksanakake 4 cara sing pas karo papat panjalukan HTTP: doPost (), doGet (), doPut () lan doDelete (). Dheweke ngidini kita nggawe, maca, nganyari lan mbusak pangguna. Cara nampa conto kelas javax.servlet.http.HttpServletRequest lan javax.servlet.http.HttpServletResponse minangka input, yaiku panjalukan sing dikirim menyang server lan respon sing ditampa dening klien. Secara internal, metode kasebut nelpon metode sing cocog karo kelas UserService, lan respon kanggo klien digawe lan dialihake menyang URL / pangguna. Contone, ing cara doGet (), kita entuk dhaptar kabeh pangguna. Sabanjure, kita nggawe obyek RequestDispatcher, sing ngidini kita kalebu obyek ing panjalukan HTTP lan pangalihan menyang sumber tartamtu (contone, menyang kaca JSP klien). Ing cara doPut () (sing nganyari data pangguna), kita ngolah panjalukan HTTP, ngekstrak id, jeneng, lan paramèter umur, temokake pangguna kanthi id sing ditemtokake, nemtokake jeneng lan umur sing ana ing panyuwunan kasebut, banjur bali. menyang kaca /users. Nanging supaya kabeh cara iki bisa digunakake kanthi bener, kita kudu ngatur servlet. Kanggo nindakake iki, kita nggunakake file web.xml ing folder WEB-INF.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>UserSimpleServlet</servlet-name>
        <servlet-class>servlets.UserSimpleServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>UserSimpleServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <servlet-name>UserSimpleServlet</servlet-name>
    </filter-mapping>

</web-app>
Kabeh tag ing file iki cukup intuisi, nanging ayo diterusake kanthi urutan. <welcome-file-list> - Kaca wiwitan JSP dituduhake, sing bakal dibukak dhisik nalika aplikasi diwiwiti. Ing kasus kita, iki index.jsp. <servlet> - Registrasi kelas UserSimpleServlet minangka servlet. <servlet-mapping> - tag sing penting banget. Iku nemtokake URL sing bakal diproses dening servlet. Ing kasus kita, iku kabeh URL, supaya kita mung nuduhake "/". Nanging yen kita duwe aplikasi sing nglibatake pangguna lan mobil (otomatis), mula kita bisa nggawe servlet kapindho (SimpleAutoServlet). Banjur pemetaan servlet pangguna bakal dadi "/users" (yaiku panjaluk babagan pangguna), lan pemetaan servlet otomatis bakal dadi "/autos". Lan pungkasane, <filter>. Secara internal, iki nemtokake conto org. springframework.web.filter.HiddenHttpMethodFilter kelas. Artikel iki dudu babagan Spring, mula aku ora bakal nerangake kanthi rinci. Aku mung bakal ujar manawa dipasang ing aplikasi kita mung minangka fitur tambahan. Bab iku kita bakal nggunakake kaca JSP kanggo nggawe sisih klien. Data kita bakal ditampilake ing kaca minangka tabel kanthi dhaptar pangguna. Ing kaca JSP, <form/> tag HTML bakal digunakake. Nanging mung panjalukan HTTP GET lan POST sing bisa digunakake kanggo ngirim data saka <form/>. Ing tembung liyane, kanggo kabeh telung operasi - nganyari, mbusak, lan nggawe pangguna - kita mung kudu nggunakake panjalukan POST. Nggunakake panjalukan PUT lan DELETE ora dadi pilihan kanggo kita. Ing asas, iki cukup normal lan gampang kanggo ngleksanakake, nanging HiddenHttpMethodFilter kelas ngijini kita nggunakake. Ing cara iki, maca bakal luwih cetha ndeleng prabédan antarane operasi ing aplikasi. Pungkasan, ayo nerusake menyang sisih klien. Iki diwakili limang kaca JSP. index.jsp.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Hello!</title>
</head>
<body>
If you want to start working with the user database,<br>
click the button below:

<form action = "users" method="get">
    <input type="submit" value="Start working with database">
</form>
</body>
</html>
addUser.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Add new user</title>
</head>
<body>
<form action = "/users" method="post">
    <input required type="text" name="name" placeholder="Name">
    <input required type="text" name="age" placeholder="Age">
    <input type="submit" value="Save">
</form>
</body>
</html>
deleteUser.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Delete user</title>
</head>
<body>

Are you sure you want to delete the user ${param.id}?

&lform action="/users/${param.id}" method="post">
    <input type="hidden" name="id" value="${param.id}">
    <input type="hidden" name="_method" value="delete">
    <input type="submit" value="Delete">
</form>

</body>
</html>
showUsers.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>User list</title>
</head>
<body>
<table border="2">
    <tr>
        <td>ID</td>
        <td>Name</td>
        <td>Age</td>
        <td>Actions</td>
    </tr>
    <c:forEach items="${users}" var = "user">
        <tr>
            <td>${user.getId()}</td>
            <td>${user.getName()}</td>
            <td>${user.getAge()}</td>
            <td>
                <form action = "updateUser.jsp" method="post">
                    <input type="hidden" name="id" value="${user.getId()}">
                    <input type="hidden" name="name" value="${user.getName()}">
                    <input type="hidden" name="age" value="${user.getAge()}">
                    <input type="submit" value="Modify" style="float:left">
                </form>
                <form action="deleteUser.jsp" method="post">
                    <input type="hidden" name="id" value="${user.getId()}">
                    <input type="submit" value="Delete" style="float:left">
                </form></td>
        </tr>
    </c:forEach>
</table>

<form action = "addUser.jsp">
    <input type="submit" value="Add new user">
</form>
</body>
</html>
updateUser.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Modify user data</title>
</head>
<body>

Edit user

<form action="/users/${param.id}" method="post">
    <input type="hidden" name = "id" value="${param.id}">
    <input type="text" name="name" value="${param.name}" placeholder=${param.name}>
    <input type="text" name="age" value="${param.age}" placeholder=${param.age}>
    <input type="hidden" name="_method" value="put">
    <input type="submit" value="Update">
</form>

</body>
</html>
Kaca JSP (JavaServer Page) ngemot rong jinis teks: data sumber statis sing bisa diformat minangka teks (HTML, SVG, WML, utawa XML), lan unsur JSP sing digunakake kanggo mbangun konten dinamis. Kanggo mbantu sampeyan ngerti apa iku kaca JSP, aku wis nyalin wacana saka artikel sing apik banget. "Sejatine, nalika pisanan JSP dijaluk, dadi servlet lan beroperasi minangka servlet. Iki penting banget kanggo dimangerteni. Kaca JSP dudu kaya kaca HTML - programmer wiwitan kudu ngerti kanthi jelas yen iki minangka servlet liyane. - mung sampeyan ora nulis kudu program carane ditampilake. Iku mung bisa digambar. Lan nambah data yen perlu. Nanging amarga kaca JSP kaya HTML, desainer bakal luwih gampang. Lan sepisan maneh NATE banget kanggo pemula,kaca JSP minangka SERVLET. Iki digawe, kalebu nambahake kabeh data, ing server. Iki ngendi kabeh data dilebokake. Lan ing browser, pangguna entuk kaca HTML sing wis rampung, sing ora ana tandha-tandha Jawa. .jsp nuduhake yen sampeyan ngeklik tombol "Mulai nggarap database", metode get bakal ditindakake (metode = "entuk"). Kaca addUser.jsp, sing tanggung jawab kanggo nggawe pangguna anyar, nglakokake metode kirim. (metode = "kirim") nalika sampeyan ngeklik tombol simpen. Liyane saka kaca JSP digawe saka markup HTML statis biasa, mula kita ora bakal mikir babagan iki. Iku topik kanggo artikel liyane lan akeh babagan iki. topik ing Internet. Dadi, kita wis nggawe aplikasi kita! Saiki kita kudu nyoba ing tumindak! Kanggo nindakake iki, kita butuh wadhah servlet Apache Tomcat sing kasebut ing ndhuwur. Sampeyan bisa ngundhuh wadhahsaka situs web resmi (Aku nggunakake versi 8). Sabanjure, kita kudu nggawe konfigurasi ing IDEA kanggo mbukak aplikasi liwat Tomcat. Kanggo nindakake iki, bukak tab "Sunting Konfigurasi", Aplikasi pisanan sampeyan nggunakake servlet Java - 3gawe konfigurasi anyar, Aplikasi pisanan sampeyan nggunakake servlet Java - 4banjur pilih "Tomcat Server Lokal". Ing tab "Server Aplikasi", nemtokake path menyang folder Tomcat Aplikasi pisanan sampeyan nggunakake servlet Java - 5Sabanjure, pindhah menyang tab "Panyebaran". Aplikasi pisanan sampeyan nggunakake servlet Java - 6Ing kene, kita ngatur panyebaran aplikasi ing server lokal. Pencet "+", pilih "Artifact" -> YourProjectName:war (kita bakal mbangun aplikasi menyang file perang). Aplikasi pisanan sampeyan nggunakake servlet Java - 7Lan bab sums munggah! Ing kaca "Server", sampeyan bisa ndeleng manawa aplikasi kita bakal mbukak ing http://localhost:8080/. Simpen konfigurasi lan menehi jeneng (Aku nelpon config sandi "Tommy"). Sabanjure, ing tab Maven ing IDEA (ing sisih tengen), kita bakal nggunakake plugin perang kanggo mbangun proyek kita menyang file perang (Plugins -> war -> war: war). Aplikasi pisanan sampeyan nggunakake servlet Java - 8Sawise mbangun rampung, mbukak aplikasi lan ngenteni. Sukses! Kaca wiwitan diluncurake. Saiki kita klik tombol "Mulai nggarap database". index.jsp kita bakal ngasilake panjalukan GET sing bakal diproses dening server. Server bakal ngasilake respon lan bali menyang kita ing wangun dhaptar kabeh pangguna sing wis ana (sing ana pangguna ing database, mesthi). Lan ing kono padha! Sing ana sampeyan duwe! Sampeyan nulis aplikasi pisanan nggunakake servlets Java. Aplikasi pisanan sampeyan nggunakake servlet Java - 9Sing ora dadi ala, ta? :) Kanggo peer, sampeyan bisa mulihake fungsi mobil saka artikel sadurunge. Ing tembung liyane, nggawe kaca servlet lan JSP kapisah kanggo mobil, lan mulang aplikasi carane dhaptar mobil pangguna, nambah mobil anyar kanggo pangguna, lan ngowahi lan mbusak. PS Servlets lan JavaServer Pages minangka teknologi sing rada kuno. Ing Internet, sampeyan kerep bisa nemokake komentar kaya "Sapa sing butuh sampah lawas iki?" Jawaban iki cukup prasaja: utamane wong sing bakal nggarap proyek nyata, sing bisa uga nemoni akeh kode sing nggunakake teknologi kasebut. Lan sanajan ora ngerti cara kerjane, isih nyenengake kanggo ngethok "sampah lawas" dadi sing anyar :) Kanggo sinau sing luwih jero babagan JSP lan servlet, sampeyan bisa ngrujuk menyang buku "Head First Servlets and JSP ". Iki ditulis dening penulis padha karo buku super misuwur "Kepala First Java", kang akeh bakal njupuk minangka jaminan kualitas :) Mugi artikel iki wis mbiyantu! Matur nuwun kanggo perhatian sampeyan, lan sukses sinau!
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar