1.1 Introduktion til JSP
Der er to populære måder at skrive en servlet på: imperativ og deklarativ . Vi har allerede behandlet den første - dette er faktisk en Servlet. Den anden hedder JSP (Java Server Pages), og den stifter vi bekendtskab med nu.
Servlet JSP eksempel:
<html>
<body>
<% out.print(2*5); %>
</body>
</html>
Ikke meget lig den klassiske Servlet, vi er vant til, vel? Det er rigtigt. JSP er en HTML-side med Java-kodeindsættelser (markeret med grønt) .
Ser du, hvis du har meget Java-kode i en servlet og lidt HTML-kode, så er du mere tryg ved at bruge en klassisk servlet . Men hvad hvis du har brug for en stor HTML-side, hvor kun et par linjer ændres af serveren?
I dette tilfælde ville den enkleste ting være at oprette denne HTML-side og på en eller anden måde udføre Java-koden på serveren lige i den.
1.2 Kompilering af JSP'er
Lad os se på et andet eksempel:
<html>
<body>
<%
double num = Math.random();
if (num > 0.95) {
%>
<h2>You are lucky, user!</h2><p>(<%= num %>)</p>
<%
}
%>
</body>
</html>
Vi får et tilfældigt tal, og hvis det er større end 0,95, udskriver vi teksten "Du er heldig, bruger!"
Java-kode er fremhævet her med blåt . Normal (ikke fremhævet) - HTML-kode og rød - service-tags , som hjælper med at forstå, hvor Java-koden er, og hvor HTML-koden er.
Lægger du mærke til noget mærkeligt? Den afsluttende krøllede bøjle "}"
er i en anden "code block"
. Hvad er den rigtige måde at skrive sådan kode på? Hvordan virker det overhovedet?
Svaret bliver super enkelt :)
Efter at webserveren har fundet en JSP-fil, kompilerer den til en klassisk servlet. Baseret på ovenstående JSP-side vil denne Servlet blive genereret:
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>");
}
}
Webcontaineren har lige genereret servlet-koden, hvor HTML'en blev til tekst, og Java-kodeindlæggene blev almindelig Java-kode!
GO TO FULL VERSION