programmera.net -> jsp -> normal     för utskrift      info@programmera.net

Direktiv i JSP

1. Direktiv
2. Direktivet Include
3. Direktivet Taglib
4. Direktivet page
5. page language
6. page extends
7. page import
8. page isErrorPage
9. page errorPage
10. page session
11. page buffer
12. page autoFlush
13. page isThreadSafe
14. page info
15. page contentType

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:
<ot:bottom1>
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"); %>