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!