2.1 JSP-Anweisungen
Da wir herausgefunden haben, dass die JSP-Datei in ein normales Servlet konvertiert wird, können Sie darin normalen Java-Code schreiben. Und in diesem Java-Code können Sie verschiedene Klassen verwenden (Math aus dem Beispiel). Das ist noch besser! Aber wir können sehen, dass der gesamte Code in eine Servlet-Methode verschoben wurde doGet()
. Und das wirft sofort mehrere Fragen auf:
- Wie kann man dafür sorgen, dass der Code in die Methode verschoben wird
doPost()
? - Wie füge ich der Methode eigenen Code hinzu
init()
? - Wie werden Klassenimporte am Ende registriert?
Tolle Fragen, und natürlich gibt es eine Antwort: JSP-Anweisungen. <%
Der gesamte Nicht-HTML-Code innerhalb einer JSP muss in spezielle Klammern und eingeschlossen werden %>
. Alle JSP-Anweisungen werden durch eine Vorlage vorgegeben:
<%@ directive %>
Hier ist eine Liste der beliebtesten Seitendirektivenattribute:
Beispiel | Beschreibung | ||
---|---|---|---|
1 | importieren | <%@ page import="java.util.Date" %> |
Importiert eine Klasse |
2 | Inhaltstyp | <%@ page contentType=text/html %> |
Legt den Inhaltstyp fest |
3 | erweitert | <%@ page extends="Object" %> |
Sie können die Basisklasse festlegen |
4 | die Info | <%@ page info="Author: Peter Ivanovich; version:1.0" %> |
Setzt Daten für getServletInfo() |
5 | Puffer | <%@ page buffer="16kb" %> |
Legt die Größe des Antwortpuffers fest |
6 | Sprache | <%@ page language="java" %> |
Gibt die Sprache an, Standard ist Java |
7 | isELIgnored | <%@ page isELIgnored="true" %> |
Ermöglicht Ihnen, EL-Skripte zu deaktivieren |
8 | isThreadSafe | <%@ page isThreadSafe="false" %> |
Zeigt auf Threadsafe |
9 | AutoFlush | <%@ page autoFlush="false" %> |
Verwaltet Pufferschreibvorgänge |
10 | Sitzung | <%@ page session="false" %> |
Sie können die Sitzung für die Seite deaktivieren |
elf | Seitenkodierung | <%@ page pageEncoding="UTF-8"%> |
Sie können die Seitenkodierung festlegen |
12 | Fehlerseite | <%@ page errorPage="errorpage.jsp" %> |
Sie können eine Fehlerseite festlegen |
2.2 Importe
Zum Spaß fügen wir unserer JSP-Datei einige Importe hinzu und definieren eine Basisklasse.
Beispiel für eine JSP-Datei:
<%@ page import="java.util.Date" %>
<%@ page import="java.lang.Math" %>
<%@ page extends="com.codegym.MyHttpServlet" %>
<html>
<body>
<%
double num = Math.random();
if (num > 0.95) {
%>
<h2>You are lucky, user!</h2><p>(<%= num %>)</p>
<%
}
%>
</body>
</html>
Und das wird dabei herauskommen:
import java.util.Date;
import java.lang.Math;
public class HelloServlet extends com.codegym.MyHttpServlet {
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> ");
}
}
Funktioniert. Großartig!