JSP-direktiver
โก Smart opsummering
JSP-direktiver er beskeder til JSP-containeren, der giver global information om en hel side og instruerer den under oversรฆttelse til servlet-kode. Der findes tre direktivtyper: page, include og taglib, der hver isรฆr er skrevet i sรฆrlige tags.

Hvad er JSP-direktiver?
- JSP-direktiver er meddelelserne til JSP-beholderen. De giver global information om en hel JSP-side.
- JSP-direktiver bruges til at give speciel instruktion til en beholder til oversรฆttelse af JSP til servlet-kode.
- I JSPs livscyklusfase skal JSP konverteres til en servlet, som er oversรฆttelsesfasen.
- De giver instruktioner til containeren om, hvordan man hรฅndterer visse aspekter af JSP-behandling
- Direktiver kan have mange attributter med komma adskilt som nรธglevรฆrdipar.
- I JSP er direktiv beskrevet i
<%@ %>tags.
Syntaks for direktiv:
<%@ directive attribute="" %>
Typer af direktiver i JSP
Der er tre typer direktiver i JSP:
- Side direktiv
- Inkluder direktiv
- Taglib direktiv
Hver af dem er beskrevet detaljeret nedenfor med eksempler:
1) JSP Side direktiv
Syntaks for sidedirektiv:
<%@ pageโฆ%>
- Det giver attributter, der bliver anvendt pรฅ hele JSP-siden.
- Den definerer sideafhรฆngige attributter, sรฅsom scriptsprog, fejlside og bufferkrav.
- Det bruges til at give instruktioner til en container, der vedrรธrer den aktuelle JSP-side.
Fรธlgende er dens liste over attributter forbundet med sidedirektivet:
- Sprog
- udvider
- Importere
- indholdstype
- info
- Session
- er ThreadSafe
- automatisk skylning
- buffer
- IsErrorPage
- sidekodning
- fejlside
- er ELIGoneret
Flere detaljer om hver egenskab
1) sprog: Det definerer programmeringssprog (underliggende sprog), der bruges pรฅ siden.
Syntaks for sprog:
<%@ page language="value" %>
Her er vรฆrdien programmeringssproget (underliggende sprog)
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Forklaring af kode: I ovenstรฅende eksempel er attribut sprogvรฆrdi Java som er det underliggende sprog i dette tilfรฆlde. Derfor ville koden i expression-tags blive kompileret ved hjรฆlp af java-kompiler.
2) Udvider: Denne attribut bruges til at udvide (arve) klassen ligesom JAVA gรธr.
Syntaks for udvider:
<%@ page extends="value" %>
Her reprรฆsenterer vรฆrdien klasse, som den skal nedarves fra.
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Forklaring af koden: I ovenstรฅende kode udvider JSP DemoClass, som er inden for demotest-pakken, og det vil udvide alle klassefunktioner.
3) Importรฉr: Denne attribut er den mest anvendte attribut i sidedirektiver. Den bruges til at fortรฆlle containeren, at den skal importere andre Java-klasser, interfaces, enums osv., mens den genererer servlet-kode. Den minder om import-sรฆtninger i Java-klasser og interfaces.
Importsyntaks:
<%@ page import="value" %>
Her angiver vรฆrdien de klasser, der skal importeres.
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
Forklaring af koden:
I ovenstรฅende kode importerer vi Date-klassen fra pakken java.util (alle hjรฆlpeklasser), og den kan bruge alle metoder i fรธlgende klasse.
4) indholdstype:
- Det definerer tegnkodningsskemaet, dvs. det bruges til at indstille indholdstypen og tegnsรฆttet for svaret
- Standardtypen for contentType er
"text/html; charset=ISO-8859-1".
Syntaks for contentType:
<%@ page contentType="value" %>
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Forklaring af koden:
I ovenstรฅende kode er indholdstypen sat som tekst/html, den sรฆtter tegnkodning for JSP og for genereret svarside.
5) info
- Den definerer en streng, som kan tilgรฅs af getServletInfo() metoden.
- Denne attribut bruges til at indstille servletbeskrivelsen.
Syntaks for info:
<%@ page info="value" %>
Her reprรฆsenterer vรฆrdien servletinformationen.
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Forklaring af koden:
I ovenstรฅende kode, strengen "Guru "Directive JSP" kan hentes af servlet-grรฆnsefladen ved hjรฆlp af getServletInfo()
6) Session
- JSP-siden opretter session som standard.
- Nogle gange har vi ikke brug for en session for at blive oprettet i JSP, og derfor kan vi indstille denne attribut til false i sรฅ fald. Standardvรฆrdien for sessionsattributten er sand, og sessionen oprettes. Nรฅr den er sat til falsk, kan vi angive, at compileren ikke opretter sessionen som standard.
Syntaks for session:
<%@ page session="true/false"%>
Her i dette tilfรฆlde kan sessionsattributten indstilles til sand eller falsk
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Forklaring af kode:
I ovenstรฅende eksempel er session attribut sat til "false", og derfor angiver vi, at vi ikke รธnsker at oprette nogen session i denne JSP
7) er ThreadSafe:
- Den definerer gevindmodellen for den genererede servlet.
- Det angiver niveauet af trรฅdsikkerhed implementeret pรฅ siden.
- Dens standardvรฆrdi er sand, sรฅ samtidig
- Vi kan bruge denne attribut til at implementere SingleThreadModel-grรฆnseflade i genereret servlet.
- Hvis vi indstiller det til falsk, vil det implementere SingleThreadModel og kan fรฅ adgang til alle delte objekter og kan give inkonsistens.
Syntaks for isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Her reprรฆsenterer sand eller falsk, hvis synkronisering er der, sรฅ angives som sand og angives som falsk.
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
Forklaring af koden:
I ovenstรฅende kode er isThreadSafe sat til "true", hvorfor synkronisering vil blive udfรธrt, og flere trรฅde kan bruges.
8) AutoSkyl:
Denne attribut specificerer, at det bufferlagrede output skal tรธmmes automatisk eller ej, og standardvรฆrdien for denne attribut er sand. Hvis vรฆrdien er sat til falsk, vil bufferen ikke blive tรธmt automatisk, og hvis den er fuld, fรฅr vi en undtagelse. Nรฅr bufferen er ingen, sรฅ er den falske illegitim, og der er ingen buffering, sรฅ den vil blive tรธmt automatisk.
Syntaks for autoFlush:
<% @ page autoFlush="true/false" %>
Her reprรฆsenterer sand/falsk, om buffering skal udfรธres eller ej
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Forklaring af koden:
I ovenstรฅende kode er autoflush indstillet til falsk, og derfor vil buffering ikke blive udfรธrt, og den har manuelt tรธmt output.
9) Buffer:
- Ved at bruge denne attribut kan output-svarobjektet bufferes.
- Vi kan definere stรธrrelsen af โโbuffering, der skal udfรธres ved hjรฆlp af denne attribut, og standardstรธrrelsen er 8KB.
- Det dirigerer servletten til at skrive bufferen, fรธr den skriver til svarobjektet.
Syntaks for buffer:
<%@ page buffer="value" %>
Her reprรฆsenterer vรฆrdien stรธrrelsen af โโden buffer, som skal defineres. Hvis der ikke er nogen buffer, kan vi skrive som ingen, og hvis vi ikke nรฆvner nogen vรฆrdi, er standarden 8KB
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Forklaring af koden:
I ovenstรฅende kode er bufferstรธrrelse nรฆvnt som 16KB, hvor bufferen ville vรฆre af den stรธrrelse
10) isErrorPage:
- Det angiver, at JSP-side, der har en fejlside, vil blive kontrolleret pรฅ en anden JSP-side
- Enhver JSP-fil erklรฆret med "isErrorPage"-attributten er sรฅ i stand til at modtage undtagelser fra andre JSP-sider, som har fejlsider.
- Undtagelser er kun tilgรฆngelige for disse sider.
- Standardvรฆrdien er falsk.
Syntaks for isErrorPage:
<%@ page isErrorPage="true/false"%>
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Forklaring af koden:
I ovenstรฅende kode er isErrorPage sat som sand. Derfor vil den kontrollere, at alle andre JSP'er har errorPage (beskrevet i nรฆste attribut) attributsรฆt, og den kan hรฅndtere undtagelser.
11) Sidekodning:
"pageEncoding"-attributten definerer tegnkodningen for JSP-siden. Standarden er angivet som "ISO-8859-1", hvis en anden ikke er angivet.
Syntaks for sidekodning:
<%@ page pageEncoding="vaue" %>
Her angiver vรฆrdien tegnsรฆtvรฆrdien for JSP
Eksempel:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Forklaring af koden:
I ovenstรฅende kode er "pageEncoding" blevet sat til standard tegnsรฆt ISO-8859-1
12) fejlside:
Denne attribut bruges til at indstille fejlsiden for JSP-siden, hvis JSP kaster en undtagelse, og derefter omdirigerer den til undtagelsessiden.
Syntaks for fejlside:
<%@ page errorPage="value" %>
Her reprรฆsenterer vรฆrdien fejlens JSP-sidevรฆrdi
Eksempel:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Forklaring af koden:
I ovenstรฅende kode har vi errroHandler.jsp for at hรฅndtere undtagelser
13) Ignoreres:
- IsELIgnored er en flag-attribut, hvor vi skal beslutte, om vi skal ignorere EL-tags eller ej.
- Dens datatype er java enum, og standardvรฆrdien er falsk, derfor er EL aktiveret som standard.
Syntaks for isELIgnored:
<%@ page isELIgnored="true/false" %>
Her reprรฆsenterer sand/falsk vรฆrdien af โโEL, uanset om den skal ignoreres eller ej.
Eksempel:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
Forklaring af koden:
I ovenstรฅende kode er isELIgnored sand og dermed Expression Language (EL) ignoreres her. I eksemplet nedenfor bruger vi fire attributter (kodelinje 1-2)
Eksempel med fire attributter
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="false"%> <%@page import="java.util.Date" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Directive Guru JSP1</title> </head> <body> <a>Date is:</a> <%= new java.util.Date() %> </body> </html>
Forklaring af koden:
Code Linje 1-2: Her har vi defineret fire attributter, dvs
- Sprog: Det er indstillet som Java som programmeringssprog
- contentType: sรฆt som text/html for at fortรฆlle compileren, at html skal vรฆre format
- pageEncoding: standardtegnsรฆt er indstillet i denne attribut
- isELIgnored: Expression Tag er falsk, og derfor ignoreres det ikke
Code Linje 3: Her har vi brugt import attribut, og det er import af โDate classโ som er fra Java util-pakken, og vi forsรธger at vise den aktuelle dato i koden.
Nรฅr du udfรธrer ovenstรฅende kode, fรฅr du fรธlgende output
Output:
- Dato er: Aktuel dato ved hjรฆlp af datometoden for datoklassen
2) JSP Include-direktiv
- JSP "include directive" (kodelinje 8) bruges til at inkludere รฉn fil i en anden fil.
- Denne inkluderede fil kan vรฆre HTML, JSP, tekstfiler osv.
- Det er ogsรฅ nyttigt til at oprette skabeloner med brugervisninger og opdele siderne i header, footer og sidebar-handlinger.
- Det inkluderer fil under oversรฆttelsesfasen
Syntaks for inkluderingsdirektiv:
<%@ includeโฆ.%>
Eksempel:
Directive_jsp2.jsp (Hovedfil)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ include file="directive_header_jsp3.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP2</title> </head> <body> <a>This is the main file</a> </body> </html>
Direktiv_header_jsp3.jsp (som er inkluderet i hovedfilen)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <a>Header file : </a> <%int count =1; count++; out.println(count);%> : </body> </html>
Forklaring af koden:
Direktiv_jsp2.jsp:
Code Linje 3: I denne kode bruger vi include-tags, hvor vi inkluderer filen directive_header_jsp3.jsp i hovedfilen (_jsp2.jsp) og henter outputtet fra bรฅde hovedfilen og den inkluderede fil.
Direktiv_header_jsp3.jsp:
Code Linje 11-12: Vi har taget en variabel count, der er initialiseret til 1, og derefter รธget den. Dette vil give outputtet i hovedfilen som vist nedenfor.
Nรฅr du udfรธrer ovenstรฅende kode fรฅr du fรธlgende output:
Output:
- Outputtet er Header-fil: 2 : Dette er hovedfilen
- Outputtet udfรธres fra directive_jsp2.jsp-filen, mens den medfรธlgende directive_header_jsp3.jsp-fil vil blive kompileret fรธrst.
- Nรฅr den inkluderede fil er fรฆrdig, udfรธres hovedfilen, og outputtet vil vรฆre fra hovedfilen "Dette er hovedfilen". Sรฅ du vil fรฅ output som "Header file: 2" fra _jsp3.jsp og "This is main file" fra _jsp2.jsp.
3) JSP Taglib-direktivet
- JSP taglib-direktivet bruges til at definere tag-biblioteket med "taglib" som prรฆfiks, som vi kan bruge i JSP.
- Flere detaljer vil blive dรฆkket i afsnittet JSP Custom Tags
- JSP taglib-direktivet bruges pรฅ JSP-siderne ved hjรฆlp af JSP-standard tag-biblioteker
- Det bruger et sรฆt brugerdefinerede tags, identificerer placeringen af โโbiblioteket og giver mulighed for at identificere brugerdefinerede tags pรฅ JSP-siden.
Syntaks for taglib-direktivet:
<%@ taglib uri="uri" prefix="value"%>
Her er "uri"-attributten en unik identifikator i tagbiblioteksbeskrivelsen, og "prefix"-attributten er et tagnavn.
Eksempel:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="gurutag" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP</title> <gurutag:hello/> </head> <body> </body> </html>
Forklaring af koden:
Code Linje 3: Her er "taglib" defineret med attributterne uri og prรฆfiks.
Code Linje 9: "gurutag" er det tilpassede tag defineret, og det kan bruges hvor som helst


