CodeGym/Java Course/Module 3/JSP: declaratieve manier om een servlet te definiëren

JSP: declaratieve manier om een servlet te definiëren

Beschikbaar

1.1 Inleiding tot JSP

Er zijn twee populaire manieren om een ​​servlet te schrijven: imperatief en declaratief . We hebben de eerste al behandeld - dit is in feite een servlet. De tweede heet JSP (Java Server Pages), en we zullen er nu kennis mee maken.

Servlet JSP-voorbeeld:

<html>
    <body>
        <% out.print(2*5); %>
    </body>
 </html>

Niet erg vergelijkbaar met de klassieke Servlet die we gewend zijn, toch? Dit is waar. JSP is een HTML-pagina met Java-code-inserts (groen gemarkeerd) .

Zie je, als je veel Java-code in een servlet hebt en weinig HTML-code, dan ben je meer op je gemak met een klassieke servlet . Maar wat als u een grote HTML-pagina nodig heeft waarin slechts een paar regels door de server worden gewijzigd?

In dit geval zou het eenvoudigste zijn om deze HTML-pagina te maken en op de een of andere manier de Java-code op de server erin uit te voeren.

1.2 Samenstellen van JSP's

Laten we nog een voorbeeld bekijken:

<html>
  <body>
    <%
        double num = Math.random();
        if (num > 0.95) {
     %>
         <h2>You are lucky, user!</h2><p>(<%= num %>)</p>
    <%
        }
    %>
  </body>
</html>

We krijgen een willekeurig getal en als het groter is dan 0,95, drukken we de tekst "Je hebt geluk, gebruiker!"

Java-code is hier blauw gemarkeerd . Normaal (niet gemarkeerd) - HTML-code en rode servicetags , die helpen te begrijpen waar de Java-code is en waar de HTML is.

Merk je iets vreemds op? De afsluitende accolade "}"zit in een andere "code block". Wat is de juiste manier om dergelijke code te schrijven? Hoe werkt het eigenlijk?

Het antwoord zal super simpel zijn :)

De webserver compileert het, nadat het een JSP-bestand heeft gevonden, in een klassieke servlet. Op basis van de bovenstaande JSP-pagina wordt deze servlet gegenereerd:

public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws Exception {
    PrintWriter out = response.getWriter();
    out.print("<html> ");
    out.print("<body>");
        double num = Math.random();
        if (num > 0.95) {
            out.print("<h2>You're lucky user! </h2><p>(" + num + ")</p>");
        }
    out.print("</body>");
    out.print("</html>");
    }
}

De webcontainer heeft zojuist de servletcode gegenereerd, waarbij de HTML in tekst is veranderd en de Java-code-inserts gewone Java-code zijn geworden!

Opmerkingen
  • Populair
  • Nieuw
  • Oud
Je moet ingelogd zijn om opmerkingen te kunnen maken
Deze pagina heeft nog geen opmerkingen