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

Oppsummer dette innlegget med: