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.

  • ๐Ÿ“ข Direktiv defineret: En besked til JSP-containeren med globale oversรฆttelsesinstruktioner for hele siden.
  • ๐Ÿงญ Tre typer: Page-, include- og taglib-direktiver, alle skrevet inde i <%@ %> tags.
  • ๐Ÿ“„ Sidedirektiv: Angiver sprog, import, indholdstype, session, buffer, errorPage og andre sideattributter.
  • ๐Ÿ“Ž Inkluder direktiv: Fletter en anden fil (HTML, JSP eller tekst) ind i siden pรฅ oversรฆttelsestidspunktet.
  • ๐Ÿท๏ธ Taglib-direktiv: Deklarerer et tagbibliotek med en URI og et prรฆfiks for at aktivere brugerdefinerede tags.

JSP-direktiver

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:

  1. Side direktiv
  2. Inkluder direktiv
  3. 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:

  1. Sprog
  2. udvider
  3. Importere
  4. indholdstype
  5. info
  6. Session
  7. er ThreadSafe
  8. automatisk skylning
  9. buffer
  10. IsErrorPage
  11. sidekodning
  12. fejlside
  13. 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

JSP-sidedirektivet

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:

JSP Inkluder direktiv

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

Ofte Stillede Spรธrgsmรฅl

Direktivet `include` fletter en fil sammen ved oversรฆttelse, sรฅ รฆndringer skal kompileres igen. `jsp:include`-handlingen inkluderer svaret fra en fil ved anmodning, hvilket gรธr den bedre til dynamisk, ofte skiftende indhold.

Importattributten fortรฆller containeren hvilken Java klasser, grรฆnseflader eller pakker, der skal importeres, nรฅr servlet-koden genereres, svarende til importsรฆtninger i en almindelig Java klasse, sรฅ deres metoder er tilgรฆngelige pรฅ siden.

JSP-direktiver behandles under oversรฆttelsen, nรฅr JSP-siden konverteres til en servlet. De pรฅvirker, hvordan servlet'en genereres, i stedet for at producere output under hver anmodning.

AI kan foreslรฅ den korrekte side-, include- eller taglib-direktiv med de korrekte attributter fra en letforstรฅelig beskrivelse, forklare hver attribut og markere almindelige fejl.ping Begyndere konfigurerer JSP-sider hurtigere og mere prรฆcist.

Ja. AI kan scanne JSP-filer for at finde ugyldige attributvรฆrdier, modstridende indstillinger sรฅsom buffer none med autoFlush false, manglende fejlsider og duplikerede direktiver, helping udviklere opdager konfigurationsproblemer fรธr implementering.

Opsummer dette indlรฆg med: