2.1 JSP-direktiver

Da vi fandt ud af, at JSP-filen er konverteret til en almindelig servlet, kan du skrive normal Java-kode i den. Og i denne Java-kode kan du bruge forskellige klasser (Matematik fra eksemplet). Dette er endnu bedre! Men vi kan se, at al koden er blevet flyttet til en doGet()servlet-metode. Og dette rejser umiddelbart flere spørgsmål:

  • Hvordan gør man det, så koden flyttes til metoden doPost()?
  • Hvordan tilføjer man sin egen kode til metoden init()?
  • Hvordan i sidste ende at registrere klasse import?

Gode ​​spørgsmål, og de har selvfølgelig et svar - JSP-direktiver. Al ikke-HTML-kode i en JSP skal være omgivet af specielle parenteser <%og %>. Alle JSP-direktiver er givet af en skabelon:

<%@ directive %>

Her er en liste over de mest populære sidedirektivattributter:

Eksempel Beskrivelse
1 importere <%@ page import="java.util.Date" %> Importerer en klasse
2 indholdstype <%@ page contentType=text/html %> Indstiller contentType
3 strækker sig <%@ page extends="Object" %> Du kan indstille basisklassen
4 info <%@ page info="Author: Peter Ivanovich; version:1.0" %> Indstiller data for getServletInfo()
5 buffer <%@ page buffer="16kb" %> Indstiller størrelsen på svarbufferen
6 Sprog <%@ page language="java" %> Angiver sproget, standard er Java
7 Ignoreres <%@ page isELIgnored="true" %> Giver dig mulighed for at deaktivere EL-scripts
8 er ThreadSafe <%@ page isThreadSafe="false" %> Peger på trådsikker
9 autoFlush <%@ page autoFlush="false" %> Styrer bufferskrivninger
10 session <%@ page session="false" %> Du kan deaktivere sessionen for siden
elleve sidekodning <%@ page pageEncoding="UTF-8"%> Du kan indstille sidekodningen
12 fejlside <%@ page errorPage="errorpage.jsp" %> Du kan indstille en fejlside

2.2 Import

Lad os tilføje et par importer til vores JSP-fil for sjov og definere en basisklasse.

JSP fil eksempel:


    <%@ 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> 

Og dette er hvad der kommer ud af det:

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

Arbejder. Store!