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) Forlænger: 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: Denne attribut er den mest brugte attribut i sidedirektivets attributter. Den bruges til at fortælle containeren at importere andre java-klasser, grænseflader, enums osv., mens den genererer servlet-kode. Den ligner import-sætninger i java-klasser, grænseflader.

Syntaks for import:

<%@ 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) contentType:

  • 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 kan strengen "Guru Direktiv JSP" 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:

Kodelinje 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

Kodelinje 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

Produktion:

  • Dato er: Aktuel dato ved hjælp af datometoden for datoklassen

2) JSP Inkluder direktiv

  • JSP "inkluder direktiv" (kodelinje 8) bruges til at inkludere en fil til den anden fil
  • Denne inkluderede fil kan være HTML, JSP, tekstfiler osv.
  • Det er også nyttigt til at skabe skabeloner med brugervisningerne og opdele siderne i sidehoved og sidefod og sidebjælkehandlinger.
  • Det inkluderer fil under oversættelsesfasen

Syntaks for inkluderingsdirektiv:

<%@ include….%>

Eksempel:

Direktiv_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:

Kodelinje 3: I denne kode bruger vi include tags, hvor vi inkluderer filen directive_header_jsp3.jsp i hovedfilen(_jsp2.jsp) og får output fra både hovedfilen og inkluderet fil.

Direktiv_header_jsp3.jsp:

Kodelinje 11-12: Vi har taget en variabel optælling initialiseret til 1 og derefter øget den. Dette vil give output 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:

Kodelinje 3: Her er "taglib" defineret med attributterne uri og præfiks.

Kodelinje 9: "gurutag" er det tilpassede tag defineret, og det kan bruges hvor som helst