CodeGym /Kurser /All lectures for SV purposes /JSP: deklarativt sätt att definiera en servlet

JSP: deklarativt sätt att definiera en servlet

All lectures for SV purposes
Nivå , Lektion
Tillgängliga

1.1 Introduktion till JSP

Det finns två populära sätt att skriva en servlet: imperativ och deklarativ . Vi har redan tagit itu med den första - det här är faktiskt en Servlet. Den andra heter JSP (Java Server Pages), och vi ska bekanta oss med den nu.

Servlet JSP exempel:


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

Inte särskilt lik den klassiska Servlet vi är vana vid, eller hur? Detta är sant. JSP är en HTML-sida med Java-kodinfogningar (markerad i grönt) .

Du förstår, om du har mycket Java-kod i en servlet och lite HTML-kod, är du mer bekväm med att använda en klassisk servlet . Men vad händer om du behöver en stor HTML-sida där endast ett par rader ändras av servern?

I det här fallet skulle det enklaste vara att skapa den här HTML-sidan och på något sätt köra Java-koden på servern direkt i den.

1.2 Kompilera JSP:er

Låt oss titta på ett annat exempel:


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

Vi får ett slumptal, och om det är större än 0,95 skriver vi ut texten "Du har tur, användare!"

Java-koden är markerad här i blått . Normal (ej markerad) - HTML-kod och röd - servicetaggar , som hjälper till att förstå var Java-koden finns och var HTML-koden finns.

Märker du något konstigt? Den avslutande lockiga tandställningen "}"finns i en annan "code block". Vad är det rätta sättet att skriva sådan kod? Hur fungerar det ens?

Svaret blir superenkelt :)

Efter att webbservern hittar en JSP-fil, kompilerar den till en klassisk servlet. Baserat på ovanstående JSP-sida kommer denna Servlet att genereras:

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>");
    }
}

Webbbehållaren genererade precis servletkoden, där HTML förvandlades till text och Java-kodinläggen blev vanlig Java-kod!

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION