1. Direktiv
Ett direktiv är ett meddelande till webb-behållaren. Direktiven har som syfte att göra speciella inställningar för JSP-sidan. Det finns tre typer av direktiv:
- page: Gör inställningar för sidan.
- include: Inkluderar en fil i sidan.
- taglib: Inkluderar ett märkesbibliotek, så att det sedan kan användas i sidan.
2. Direktivet Include
Med detta direktiv inkluderar du en fil i sidan. Filen kan innehålla JSP-kod, som inte körs utan klistras in i servletten för att senare kompileras tillsammans med övrig kod. Såhär ser en inkludering ut:
<%@ include file="/html/pagetop.html" %>
|
I detta fall inkluderas sidan pagetop.html. Två saker måste man tänka på vid inkludering:
- Inkluderingen sker innan JSP-sidan kompileras, det betyder att inkluderingen inte är dynamisk. Om du ändrar i den fil som ska inkluderas kommer ändringen INTE att slå igenom förän JSP-sidan kompileras om, och detta sker först då du ändrar i JSP-sidan. Detta är kanske inte alls vad du vill, om du istället vill ha en dynamisk inkludering ska du använda märket jsp:include.
- Om den fil du inkluderar innehåller javakod och du använder samma variabelnamn i den inkluderade filen som de i JSP-sidan så kommer kompilatorn att tro att det rör sig om samma variabel.
3. Direktivet Taglib
Med detta direktiv gör du det möjligt att använda ett märkesbibliotek (Tag library) i din JSP-sida. Ett märkesbibliotek är en XML-sida med där nyckelord motsvarar en viss klass eller lite HTML-kod.
<%@ taglib uri="/WEB-INF/ollesTaglib.tld" prefix="ot" %>
|
Om jag vill använda märket bottom1 från märkesbiblioteket ollesTaglib.tld skriver jag:
Märkesbibliotek beskrivs på sidan
märkesbibliotek . Det finns även standardmärken som man alltid kan använda i JSP-sidan, dessa beskrivs på
JSP-märken .
4. Direktivet page
Med detta attribut kan du göra en mängd inställningar som gäller för JSP-sidan. Till exempel kan direktivet se ut såhär:
<%@ page import="java.util.*" %>
|
Import är alltså ett attribut till direktivet. Nedan listas syntaxen för direktivet page. Om det finns flera värden till ett attribut så är det första värdet defaultvärdet:
<%@ page
[ language="java" ]
[ extends="paket.klass" ]
[ import={paket.klass, paket.klass, ..} ]
[ isErrorPage="false|true" ]
[ errorPage="relativURL" ]
[ session="true|false" ]
[ buffer="8kb|none|xkb" ]
[ autoFlush="true|false" ]
[ isThreadSafe="true|false" ]
[ info="text" ]
[ contentType="text/html [; charset=ISO-8859-1]|
mimeType [; charset=characterSet]" ]
[ pageEncoding="ISO-8859-1 | characterSet" ]
%>
|
5. page language
Default=java. Om attributet language finns med måste värdet vara java. I framtiden kanske andra programmeringsspråk kan användas, men än så länge måste JSP-sidor programmeras i java.
6. page extends
Default=Varierar mellan tillverkare. Förändrar vilken klass den genererade servletklassen ska ärva ifrån. OBS: Genom att sätta extends på ett opassande sätt kan man råka kringå webb-behållaren, då kan JSP-sidan inte anropas av webbläsaren!
7. page import
Motsvarar importsatser i java. Ett exempel:
<%@ page import="nu.programmera.*, java.util.*" %>
|
8. page isErrorPage
Defalut=false. Om true så kan sidan använda det implicita objektet exception som innehåller felmeddelanden från andra sidor.
Nedan ger jag ett exempel på hur felsidan error.jsp kan se ut:
<%@ page isErrorPage=true %>
<HTML>
<BODY>
Ett fel inträffade:
<%= exception.toString(); %>
</BODY>
</HTML>
|
Mer om felsidor på
undantag .
9. page errorPage
Beskriver vilken JSP-sida som man ska hoppa till om det blir ett runtime-fel. Till exempel, Om du vill att JSP-sidan ska hoppa till felsidan error.jsp då ett undantag kastas, så ska du inkludera följande direktiv:
<%@ page errorPage="error.jsp" %>
|
I web.xml sätter man felsidor på ett annorlunda sätt. Där kan man bestämma att vissa typer av undantag ska skickas till vissa felsidor, dessa regler gäller för hela applikationen. Direktivet page errorPage slår över de mer allmänna inställningarna i web.xml. Mer om felsidor på
undantag .
10. page session
Default=true. Att SUN har definierat J2EE till att en JSP-sida per default tillhör en session gör det lättare för programmeraren, som nästan alltid vill använda sessioner.Om page session="false" så inkluderars inte session-objektet i sidan. Detta sparar lite minne och gör att JSP-sidan exekverar något snabbare.
11. page buffer
Default=minst 8kb. När JSP-sidan körs läggs den resulterande HTML-koden först i en buffer, som först när buffern är full skickas till webbläsaren. Efter att första buffern har skickats till webbläsaren kan man inte hoppa till en annan JSP-sida med response.sendRedirect();. Detta är vanligtivs inte något problem eftersom man oftast kollar om man vill hoppa till en ny sida innan man börjar skriva till response.
12. page autoFlush
Default=true. Om false så kommer buffern inte att skickas till webbläsaren när den är full, istället får du ett felmeddelande.
13. page isThreadSafe
Default=true. (Attributets namn betyder: Är denna sida säker att köras trådad?) Om denna attribut sätts till false stänger man av trådningsfunktionen för sidan, alltså sidan måste köras klart innan någon annan kan påbörja att köra sidan. Du förlorar i effektivitet men behöver inte bekymra dig om att använda synchronized på rätt sätt. Mer om detta på
trådsäkerhet .
14. page info
Här sätts en beskrivning man kan komma åt med Servlet.getServletInfo();.
15. page contentType
Default=text/html. Anger vilken vilken MIME-typ och teckentabell som används. MIME-typen talar om hur browsern ska tolka och presentera den returnerade informationen. Defaultvärdet för en JSP-sida är MIME-typen text/html, detta innebär att webbläsaren ska tolka det returnerade datan som en HTML-sida. Ett annat sätt att sätta MIME-typ är att använda det implicita objektet response:
<% response.setContentType("image/jpeg"); %> |