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!