JSP-direktiver

Hva er JSP-direktiver?

  • JSP-direktiver er meldingene til JSP-beholderen. De gir global informasjon om en hel JSP-side.
  • JSP-direktiver brukes til å gi spesielle instruksjoner til en beholder for oversettelse av JSP til servlet-kode.
  • I JSP livssyklusfase må JSP konverteres til en servlet som er oversettelsesfasen.
  • De gir instruksjoner til beholderen om hvordan de skal håndtere visse aspekter ved JSP-behandling
  • Direktiver kan ha mange attributter med komma atskilt som nøkkelverdi-par.
  • I JSP er direktiv beskrevet i <%@ %> tags.

Syntaks for direktiv:

<%@ directive attribute="" %>

Typer av direktiver i JSP

Det er tre typer direktiver i JSP:

  1. Sidedirektiv
  2. Inkluder direktiv
  3. Taglib-direktivet

Hver av dem er beskrevet i detalj nedenfor med eksempler:

1) JSP Side-direktiv

Syntaks for sidedirektiv:

<%@ page…%>
  • Det gir attributter som blir brukt på hele JSP-siden.
  • Den definerer sideavhengige attributter, for eksempel skriptspråk, feilside og bufringskrav.
  • Den brukes til å gi instruksjoner til en beholder som gjelder gjeldende JSP-side.

Følgende er listen over attributter knyttet til sidedirektivet:

  1. Språk
  2. Strekker
  3. Import
  4. contentType
  5. info
  6. Session
  7. er ThreadSafe
  8. autoflush
  9. buffer
  10. IsErrorPage
  11. sidekoding
  12. feilside
  13. er ELIgonorert

Flere detaljer om hvert attributt

1) språk: Den definerer programmeringsspråk (underliggende språk) som brukes på siden.

Syntaks for språk:

<%@ page language="value" %>

Her er verdien programmeringsspråket (underliggende språk)

Eksempel:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

Forklaring av kode: I eksemplet ovenfor er attributtspråkverdien Java som er det underliggende språket i dette tilfellet. Derfor vil koden i uttrykkstagger bli kompilert ved hjelp av java-kompilator.

2) Forlenger: Dette attributtet brukes til å utvide (arve) klassen slik JAVA gjør

Syntaks for utvidelser:

<%@ page extends="value" %>

Her representerer verdien klasse som den må arves fra.

Eksempel:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	   pageEncoding="ISO-8859-1"%>

<%@ page extends="demotest.DemoClass" %>

Forklaring av koden: I koden ovenfor utvider JSP DemoClass som er innenfor demotest-pakken, og det vil utvide alle klassefunksjoner.

3) Import: Dette attributtet er det mest brukte attributtet i sidedirektivets attributter. Det brukes til å fortelle containeren om å importere andre java-klasser, grensesnitt, enums, etc. mens den genererer servlet-kode. Det ligner på importsetninger i java-klasser, grensesnitt.

Syntaks for import:

<%@ page import="value" %>

Her indikerer verdi klassene som må importeres.

Eksempel:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    import="java.util.Date" pageEncoding="ISO-8859-1"%>

Forklaring av koden:

I koden ovenfor importerer vi Date-klassen fra java.util-pakken (alle verktøyklasser), og den kan bruke alle metodene i følgende klasse.

4) contentType:

  • Den definerer tegnkodingsskjemaet, dvs. det brukes til å angi innholdstypen og tegnsettet 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 av koden:

I koden ovenfor er innholdstypen satt som tekst/html, den setter tegnkoding for JSP og for generert svarside.

5) info

  • Den definerer en streng som kan nås med getServletInfo()-metoden.
  • Dette attributtet brukes til å angi servletbeskrivelsen.

Syntaks for info:

<%@ page info="value" %>

Her representerer verdien servletinformasjonen.

Eksempel:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>

Forklaring av koden:

I koden ovenfor kan strengen "Guru Direktiv JSP" hentes av servlet-grensesnittet ved å bruke getServletInfo()

6) Sesjon

  • JSP-siden oppretter økt som standard.
  • Noen ganger trenger vi ikke at en økt skal opprettes i JSP, og derfor kan vi sette dette attributtet til false i så fall. Standardverdien til sesjonsattributtet er sann, og økten er opprettet. Når den er satt til usann, kan vi indikere at kompilatoren ikke oppretter økten som standard.

Syntaks for økten:

<%@ page session="true/false"%>

Her i dette tilfellet kan sesjonsattributtet settes til sant eller usant

Eksempel:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    session="false"%>

Forklaring av kode:

I eksemplet ovenfor er session-attributtet satt til "false", og derfor indikerer vi at vi ikke ønsker å opprette noen økt i denne JSP-en

7) er ThreadSafe:

  • Den definerer trådmodellen for den genererte servleten.
  • Det indikerer nivået av trådsikkerhet implementert på siden.
  • Standardverdien er sann, så samtidig
  • Vi kan bruke dette attributtet til å implementere SingleThreadModel-grensesnitt i generert servlet.
  • Hvis vi setter den til falsk, vil den implementere SingleThreadModel og få tilgang til alle delte objekter og kan gi inkonsekvens.

Syntaks for isThreadSafe:

<% @ page isThreadSafe="true/false" %>

Her representerer sant eller usant at hvis synkronisering er der, settes som sann og settes som usann.

Eksempel:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isThreadSafe="true"%>

Forklaring av koden:

I koden ovenfor er isThreadSafe satt til "true", og derfor vil synkronisering bli utført, og flere tråder kan brukes.

8) AutoFlush:

Dette attributtet spesifiserer at den bufrede utgangen skal tømmes automatisk eller ikke, og standardverdien for det attributtet er sann. Hvis verdien er satt til usann, vil ikke bufferen tømmes automatisk, og hvis den er full, vil vi få et unntak. Når bufferen er ingen, er den falske illegitim, og det er ingen buffering, så den vil bli tømt automatisk.

Syntaks for autoFlush:

<% @ page autoFlush="true/false" %>

Her representerer true/false om bufring må gjøres eller ikke

Eksempel:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    autoFlush="false"%>

Forklaring av koden:

I koden ovenfor er autoflush satt til falsk, og derfor vil ikke bufring bli utført, og den har manuelt tømt utgangen.

9) Buffer:

  • Ved å bruke denne attributten kan utgangsresponsobjektet bufres.
  • Vi kan definere størrelsen på buffering som skal gjøres ved å bruke denne attributten, og standardstørrelsen er 8KB.
  • Den instruerer servleten til å skrive bufferen før den skrives til responsobjektet.

Syntaks for buffer:

<%@ page buffer="value" %>

Her representerer verdien størrelsen på bufferen som må defineres. Hvis det ikke er noen buffer, kan vi skrive som ingen, og hvis vi ikke nevner noen verdi, er standarden 8KB

Eksempel:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    buffer="16KB"%>

Forklaring av koden:

I koden ovenfor er bufferstørrelse nevnt som 16KB der bufferen vil ha den størrelsen

10) isErrorPage:

  • Det indikerer at JSP-side som har en feilside vil bli sjekket på en annen JSP-side
  • Enhver JSP-fil som er deklarert med "isErrorPage"-attributtet er da i stand til å motta unntak fra andre JSP-sider som har feilsider.
  • Unntak er kun tilgjengelig for disse sidene.
  • Standardverdien er falsk.

Syntaks for isErrorPage:

<%@ page isErrorPage="true/false"%>

Eksempel:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isErrorPage="true"%>

Forklaring av koden:

I koden ovenfor er isErrorPage satt som sann. Derfor vil den sjekke at eventuelle andre JSP-er har errorPage (beskrevet i neste attributt) attributtsett, og den kan håndtere unntak.

11) Sidekoding:

«pageEncoding»-attributtet definerer tegnkodingen for JSP-siden. Standard er spesifisert som "ISO-8859-1" hvis noe annet ikke er spesifisert.

Syntaks for sidekoding:

<%@ page pageEncoding="vaue" %>

Her spesifiserer verdien tegnsettverdien for JSP

Eksempel:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isErrorPage="true"%>

Forklaring av koden:

I koden ovenfor er "pageEncoding" satt til standard tegnsett ISO-8859-1

12) feilside:

Dette attributtet brukes til å angi feilsiden for JSP-siden hvis JSP kaster et unntak og deretter omdirigerer den til unntakssiden.

Syntaks for feilside:

<%@ page errorPage="value" %>

Her representerer verdien feil JSP-sideverdien

Eksempel:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    errorPage="errorHandler.jsp"%>

Forklaring av koden:

I koden ovenfor har vi errroHandler.jsp for å håndtere unntak

13) er E-ignorert:

  • IsELignored er et flaggattributt der vi må bestemme om vi skal ignorere EL-tagger eller ikke.
  • Datatypen er java enum, og standardverdien er falsk, derfor er EL aktivert som standard.

Syntaks for isELignored:

<%@ page isELIgnored="true/false" %>

Her representerer true/false verdien av EL om den skal ignoreres eller ikke.

Eksempel:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isELIgnored="true"%>

Forklaring av koden:

I koden ovenfor er isELIgnored sann og dermed Expression Language (EL) ignoreres her. I eksemplet nedenfor bruker 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 av koden:

Kodelinje 1-2: Her har vi definert fire attributter dvs

  • Språk: Det er satt som Java som programmeringsspråk
  • contentType: satt som tekst/html for å fortelle kompilatoren at html må være format
  • pageEncoding: standard tegnsett er satt i dette attributtet
  • isELignored: Expression Tag er falsk, og derfor ignoreres den ikke

Kodelinje 3: Her har vi brukt importattributt, og det er import av "Date class" som er fra Java util-pakken, og vi prøver å vise gjeldende dato i koden.

Når du utfører koden ovenfor, vil du få følgende utgang

JSP-sidedirektivet

Produksjon:

  • Dato er: Gjeldende dato ved bruk av datometoden til datoklassen

2) JSP Inkluder direktiv

  • JSP "inkluder direktiv" (kodelinje 8) brukes til å inkludere en fil til en annen fil
  • Denne inkluderte filen kan være HTML, JSP, tekstfiler, etc.
  • Det er også nyttig for å lage maler med brukervisningene og dele opp sidene i topp- og bunntekst- og sidefelthandlinger.
  • Den inkluderer fil under oversettelsesfasen

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 inkludert 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 av koden:

Direktiv_jsp2.jsp:

Kodelinje 3: I denne koden bruker vi include-tagger der vi inkluderer filen directive_header_jsp3.jsp i hovedfilen(_jsp2.jsp) og får utdata fra både hovedfilen og inkludert fil.

Direktiv_header_jsp3.jsp:

Kodelinje 11-12: Vi har tatt et variabelt antall initialisert til 1 og deretter økt det. Dette vil gi utdata i hovedfilen som vist nedenfor.

Når du kjører koden ovenfor får du følgende utgang:

JSP Inkluder-direktiv

Utgang:

  • Utdata er Header file: 2 : Dette er hovedfilen
  • Utdata kjøres fra directive_jsp2.jsp-filen mens den medfølgende directive_header_jsp3.jsp-filen kompileres først.
  • Etter at den inkluderte filen er ferdig, kjøres hovedfilen, og utdataene vil være fra hovedfilen "Dette er hovedfilen". Så du vil få utdataene som "Header file: 2" fra _jsp3.jsp og "This is main file" fra _jsp2.jsp.

3) JSP Taglib-direktivet

  • JSP taglib-direktivet brukes til å definere tag-biblioteket med "taglib" som prefiks, som vi kan bruke i JSP.
  • Mer detaljer vil bli dekket i JSP Custom Tags-delen
  • JSP taglib-direktivet brukes på JSP-sidene som bruker JSP-standard tag-bibliotekene
  • Den bruker et sett med egendefinerte tagger, identifiserer plasseringen av biblioteket og gir midler til å identifisere egendefinerte tagger på JSP-siden.

Syntaks for taglib-direktivet:

<%@ taglib uri="uri" prefix="value"%>

Her er "uri"-attributt en unik identifikator i tagbiblioteksbeskrivelsen og "prefiks"-attributtet 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 av koden:

Kodelinje 3: Her er "taglib" definert med attributtene uri og prefiks.

Kodelinje 9: "gurutag" er den tilpassede taggen som er definert, og den kan brukes hvor som helst