java server Pages (JSP) er en standard Java-teknologi som gjør det mulig for deg å skrive dynamiske, datadrevne sider for Java web-applikasjoner. JSP er bygget på toppen av Java Servlet-spesifikasjonen. De to teknologiene som vanligvis jobber sammen, spesielt i eldre Java web-applikasjoner., Fra en koding perspektiv, den mest åpenbare forskjellen mellom dem er at med servlets du skrive Java-kode og deretter legge klient-side markup (som HTML) inn i koden, mens med JSP du starte med klient-side script eller markup, deretter legge JSP-koder for å koble din side til Java-backend.
JSP er også nært knyttet til JSF (JavaServer Faces), et Java-spesifikasjon for bygging av MVC (model-view-controller) web-applikasjoner. JSP er en relativt enklere og eldre teknologi enn JSF, som er standarden for Java web-rammeverk som Eclipse Mojarra, MyFaces, og PrimeFaces., Mens det er ikke uvanlig å se JSP brukt som frontend for eldre JSF-programmer, Facelets er foretrukket view-teknologien for moderne JSF-implementeringer.
Mens JSP-kan ikke være ditt første valg for å bygge dynamiske websider, det er en core Java web-teknologi. JSP-sider er relativt rask og enkel å bygge, og de kommuniserer sømløst med Java servlets i en servlet container som Tomcat. Du vil møte JSP i eldre Java web-applikasjoner, og fra tid til annen kan du finne det nyttig for å bygge enkle, dynamisk Java web-sider., Som en Java-utvikler, bør du i det minste bli kjent med JSP.
Denne artikkelen vil være en rask introduksjon til Jsp-Sider, inkludert JSP-Standard Tag Bibliotek (JSTL). Eksemplene viser deg hvordan å skrive en enkel HTML-side, legge inn JSP-koder for å koble til en Java servlet, og kjøre side i en servlet container.
Se tidligere artikler i denne serien for å lære mer om Java servlets og java server Faces.
Skrive JSP-sider
En enkel JSP-side (.jsp) består av HTML-koder er innebygd med JSP-koder., Når filen er behandlet på serveren, HTML er gjengitt som programmet du vil vise en web-side. Den innebygde JSP-tagger vil bli brukt til å ringe server-side kode og data. Diagrammet i Figur 1 viser samspillet mellom HTML, JSP og web application server.
Liste 1 viser en enkel JSP-side.
Listing 1., En enkel JSP-side
<html> <body> <p>${2 * 2} should equal 4</p> </body></html>
I Liste 1, vil du se en blokk med HTML-kode som inneholder et JSP-uttrykk, som er en instruksjon til Java server skrevet ved hjelp av Uttrykk Språk (EL). I uttrykket «${2 * 2}
«, den «${}
» er JSP-syntaks for å interpolere-koden inn i HTML. Når utført, JSP vil lagre resultatene av å utføre det som er inne i uttrykk. I dette tilfellet, vil utskriften bli nummer 4.
JSP i servlet container
JSP-sidene må være utplassert i en Java servlet container., For å distribuere en Java web applikasjon basert på JSP og servlets, vil du pakken din .jsp-filer, Java-kode, og programmet metadata i en .war-fil, som er en enkel .zip-fil med en konvensjonell struktur for web-applikasjoner.
Når du har lastet JSP inn din servlet container, vil det bli kompilert til en servlet. Jsp-er og Java servlets dele lignende egenskaper, inkludert muligheten til å få tilgang til og reagere på forespørsel objekter. Apache Tomcat 9x er referanse for gjennomføring Servlet 4.0 og JSP 2.3 spesifikasjoner. (Merk at oppdateringer mellom JSP-2.,2 og 2.3 er relativt små.)
Eksempel app for JSP
Vi vil bruke et eksempel programmet i Tomcat for å komme i gang med Jsp. Hvis du ikke allerede har Tomcat er installert, bla over til Tomcat last ned side, og velg Tomcat installasjon for ditt operativsystem. Når dette skrives, Tomcat 9 er den gjeldende versjonen, kompatibel med Servlet 4.0 og JSP 2.3.
Du kan installere Tomcat som en Windows-tjeneste, eller kjøre det fra kommandolinjen med /bin/catalina.sh start
eller /bin/catalina.bat
., Uansett, starte opp Katt, så kan du gå til localhost:8080
for å se Tomcat velkommen siden vist i Figur 2.
Implisitt Objekter i Tomcat
På Tomcat velkommen-siden, klikker Eksempler koblingen, og klikk deretter på JSP-Eksempler.
Neste, åpne Implisitt Objekter Utfør web-applikasjon. Figur 3 viser utgang for dette programmet. Ta et minutt til å studere denne utgangen.
Forespørsel parametere
Implisitt objekter er innebygde objekter er tilgjengelig via en JSP-side. Som en web-side-utvikler, kan du bruke disse objektene til å opprette tilgang til ting som å be om parametre, som er de data som sendes over fra nettleseren ved å utstede en HTTP-forespørsel. Vurdere nettleseren URL for Implisitt Objekter:
This example is a very simple introduction to using JSP tags to access server-side request parameters. In this case, the JSP page uses the built-in (implicit) object called param
to access the web application’s request parameters. The param
object is available inside the JSP expression syntax that you saw in Listing 1.
In that example, we used an expression to do some math: ${2 * 2}
, which output 4
.
In this example, the expression is used to access an object and a field on that object: ${param.foo}
.
JSP in a web application
On the Implicit Objects page, click the back arrow, followed by the Source link. This will lead you to the JSP code for the Implicit Objects web app, which is shown in Listing 2.
Listing 2. JSP code for the Implicit Objects web app
JSP functions
A JSP function encapsulates a chunk of reusable functionality. In this case, the functionality is to escape XML. JSP offers a variety of functions, and you can also create functions yourself. To use a function, you import its library into your JSP page, then call the function.
In Listing 2, the escapeXML
function is included with the line:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
syntaksen er ganske klar: det importeres den nødvendige funksjoner og gir dem et prefiks (i dette tilfellet «fn») som kan brukes i alle følgende uttrykk.,
JSP-Standard Tag Bibliotek (JSTL)
import
linje i Oppføringen 2 anrop taglib
, som er en forkortelse for tag-biblioteket, eller (i dette tilfellet) JSP Standard Tag Bibliotek (JSTL). Tag biblioteker definere gjenbrukbare biter av funksjonalitet for JSP. JSTL er standard tag bibliotek, som inneholder en samling av taglibs som leveres sammen med hver servlet og JSP-implementering, inkludert Tomcat.
«funksjoner» bibliotek er bare en av de taglibs følger med JSTL., En annen vanlig taglib er core
biblioteket, som du importerer ved å ringe:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Som «fn», «c» – betegnelsen er vanlig, og du vil se det på tvers av de fleste JSP-sider.
Sikre JSP-sider
Et eksempel fra kjernen bibliotek er
<c:out value = "${'<div>'}"/>
som produserer <div>
– taggen med XML allerede rømt. Denne funksjonen er viktig fordi å gi ut innhold direkte til en web-side via ${variable}
åpner døren til skriptinjeksjon angrep., Denne enkle funksjonen brukes for å beskytte web-sider fra slike angrep.
The core library inneholder også ulike koder for iterasjon og flow control (som IF/ELSE-håndtering).
Ringer taglibs i JSP-sider
Nå som du har fått et håndtak på JSP grunnleggende, la oss gjøre en endring eksempel-programmet. Å starte, kan du finne det Underforstått Objekt app i Tomcat installasjon. Banen er: apache-tomcat-8.5.33/webapps/examples/jsp/jsp2/el
.,
Åpne denne filen og finne den functions
inkluderer:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
bare under denne linjen, legge til en ny linje:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Trykk Retur og legge til en ny linje:
<c:out value = "${'This is a test of the JSTL Core Library'}"/>
Nå laste siden på http://localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=bar.
Du bør se dine oppdateringer gjenspeilt i det.
Utformingen av et JSP-web-applikasjon
Tomcat følger standard layout for Java servlet og JSP-sider., Den generelle strukturen er en mappe med navnet på programmet, som er utplassert på innsiden Tomcat er /webapps
– katalogen.
I den Implisitte Objekter app, programmet er /examples
. Åpne denne mappen viser tre viktige barn: /WEB-INF
– katalogen, index.html
filen, og et sett av andre kataloger.
WEB-INF
katalogen inneholder metadata som informerer Tomcat hvordan å kjøre appen.
resten av innholdet, inkludert indeks.,html, er direkte tilgjengelig, akkurat som det ville være i en typisk web-server. Likeledes implicit-objects.jsp
er tilgjengelig for visning, og er automatisk behandlet som en JSP-side (ikke en HTML-side) av serveren.
Forespørsel-svar arkitektur
I en typisk servlets/JSP-programmet, servlets mottar henvendelser og samhandle med server-side komponenter og tjenester (som for eksempel databasen) for å oppfylle dem. Når håndtert, anmodning om resultatet er videresendt til en JSP-siden, som presenterer svar.,
En servlet bruker følgende syntaks når du sender en forespørsel om svar på en JSP-side:
request.getRequestDispatcher("path/to/jsp.jsp").forward(req,res);
Uansett hva data servlet har satt inn i de ulike JSP scopes vil være tilgjengelig for JSP. Et omfang er bare et utvalg av livet for et gitt objekt. Forespørsel og svar objekter forespørsel er omfattet, noe som betyr at de lever for varigheten på forespørsel. Andre scopes inkluderer siden omfang (levende så lenge JSP-siden gjør) og økt omfang (avslutte når brukeren avslutter gitt økt).,
Konklusjon
java server Pages er en godt kjent og allsidig teknologi for å utvikle Java web applikasjon utsikt. Kombinert med servlets, JSP-sidene er svært kraftig, og gir tilgang til hele spekteret av Java. Mens JSP-kan ikke være ditt første valg for å utvikle en moderne Java web applikasjon, vil du møte JSP-sider i legacy-applikasjoner. Det er også et godt valg for enklere applikasjoner, hvor du ønsker å raskt koble din HTML-frontend til server-side Java-kode., Den JSTL koder er i stand til å håndtere de fleste web-krav til søknad, og tredjeparts biblioteker utvidet funksjonalitet for bestemte teknologier og bruksmåter.