JavaServer Pages (JSP) is een Java-standaardtechnologie waarmee u dynamische, gegevensgestuurde pagina ‘ s kunt schrijven voor uw Java-webapplicaties. JSP is gebouwd op de top van de Java Servlet specificatie. De twee technologieën werken meestal samen, vooral in oudere Java webapplicaties., Vanuit een codeerperspectief, het meest voor de hand liggende verschil tussen hen is dat met servlets schrijf je Java-code en vervolgens insluiten client-side markup (zoals HTML) in die code, terwijl met JSP je begint met de client-side script of markup, dan insluiten JSP tags om uw pagina te verbinden met de Java backend.
JSP is ook nauw verwant aan JSF (JavaServer Faces), een Java-specificatie voor het bouwen van MVC (model-view-controller) webapplicaties. JSP is een relatief eenvoudiger en oudere technologie dan JSF, dat is de standaard voor Java Web frameworks zoals Eclipse Mojarra, MyFaces, en PrimeFaces., Hoewel het niet ongewoon is om te zien JSP gebruikt als de frontend voor oudere JSF-toepassingen, Facelets is de voorkeur View technologie voor moderne JSF-implementaties.
hoewel JSP niet uw eerste keuze is voor het bouwen van dynamische webpagina ‘ s, is het een kern van Java-webtechnologie. JSP pagina ‘ s zijn relatief snel en eenvoudig te bouwen, en ze communiceren naadloos met Java servlets in een servlet container zoals Tomcat. U zult JSP tegenkomen in oudere Java webapplicaties, en van tijd tot tijd kunt u het nuttig vinden voor het bouwen van eenvoudige, dynamische Java webpagina ‘ s., Als Java ontwikkelaar moet je op zijn minst bekend zijn met JSP.
Dit artikel zal een snelle introductie zijn tot JavaServer pagina ‘ s, inclusief de JSP Standard Tag Library (JSTL). Voorbeelden laten je zien hoe je een eenvoudige HTML-pagina schrijft, JSP-tags insluit om verbinding te maken met een Java servlet, en de pagina in een servlet-container uitvoert.
zie eerdere artikelen in deze serie voor meer informatie over Java servlets en JavaServer gezichten.
schrijven van JSP-pagina ‘ s
een eenvoudige JSP-pagina (.jsp) bestaat uit HTML-opmaak ingebed met JSP-tags., Wanneer het bestand op de server wordt verwerkt, wordt de HTML weergegeven als de toepassingsweergave, een webpagina. De embedded JSP tags zullen worden gebruikt om server-side code en gegevens te bellen. Het diagram in Figuur 1 toont de interactie tussen HTML, JSP en de webtoepass server.
Listing 1 toont een eenvoudige JSP pagina.
Lijst 1., Een eenvoudige JSP-pagina
<html> <body> <p>${2 * 2} should equal 4</p> </body></html>
In Lijst 1 ziet u een blok HTML dat een JSP-expressie bevat, een instructie naar de Java-server geschreven met behulp van Expression Language (EL). In de uitdrukking “${2 * 2}
“is de”${}
” JSP syntaxis voor het interpoleren van code in HTML. Wanneer uitgevoerd, zal de JSP de resultaten van het uitvoeren van wat er in de expressie. In dit geval zal de output het nummer 4 zijn.
JSP in de servlet-container
JSP-pagina ‘ s moeten worden geïmplementeerd in een Java servlet-container., Om een Java web applicatie op basis van JSP en servlets implementeren, u zal uw pakket .jsp-bestanden, Java-code, en toepassing metadata in een .war file, wat een eenvoudige is .zip-bestand met een conventionele structuur voor webapplicaties.
zodra u de JSP in uw servlet container hebt geladen, zal het worden gecompileerd in een servlet. JSPs en Java servlets delen vergelijkbare kenmerken, waaronder de mogelijkheid om toegang te krijgen tot en te reageren op objecten aanvragen. Apache Tomcat 9x is de referentie-implementatie voor de Servlet 4.0 en JSP 2.3 SPECIFICATIES. (Merk op dat updates tussen JSP 2.,2 en 2.3 zijn relatief klein.)
voorbeeld app voor JSP
We zullen een voorbeeld applicatie in Tomcat gebruiken om u te starten met JavaServer Pages. Als u Tomcat nog niet hebt geïnstalleerd, blader dan naar de Tomcat downloadpagina en selecteer de Tomcat-installatie voor uw besturingssysteem. Vanaf Dit schrijven is Tomcat 9 de huidige release, compatibel met Servlet 4.0 en JSP 2.3.
U kunt Tomcat installeren als een Windows-service, of het uitvoeren vanaf de opdrachtregel met /bin/catalina.sh start
of /bin/catalina.bat
., Hoe dan ook, start Tomcat op, ga dan naar localhost:8080
om de Tomcat-welkomstpagina in Figuur 2 te zien.
impliciete objecten in Tomcat
Op de Tomcat-welkomstpagina klikt u op de link voorbeelden en vervolgens op JSP-voorbeelden.
open vervolgens de impliciete objecten webtoepassing uitvoeren. Figuur 3 toont uitvoer voor deze toepassing. Neem een minuut om deze output te bestuderen.
Verzoekparameters
impliciete objecten zijn ingebouwde objecten die toegankelijk zijn via een JSP-pagina. Als webpagina-Ontwikkelaar gebruikt u deze objecten om toegang te krijgen tot zaken als verzoekparameters, de gegevens die vanuit de browser worden verzonden bij het uitgeven van een HTTP-aanvraag. Denk aan de browser URL voor impliciete objecten:
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" %>
de syntaxis is vrij duidelijk: het importeert de vereiste functies en kent ze een prefix toe (in dit geval” fn”) die gebruikt kan worden in alle volgende expressies.,
de JSP Standard Tag Library (JSTL)
De import
regel in de lijst van 2 aanroepen taglib
, wat een afkorting is voor tag library, of (in dit geval) JSP Standard Tag Library (JSTL). Tag bibliotheken definiëren herbruikbare bits van functionaliteit voor JSP. JSTL is de standaard tag bibliotheek, met een verzameling van taglibs die worden geleverd met elke servlet en JSP implementatie, met inbegrip van Tomcat.
De “functions” library is slechts een van de taglibs die bij JSTL worden meegeleverd., Een andere veel voorkomende taglib is decore
bibliotheek, die u importeert door het aanroepen van:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
net als “fn” is de aanduiding “c” conventioneel, en u zult het op de meeste JSP-pagina ‘ s zien.
JSP-pagina ‘ s beveiligen
een voorbeeld-tag uit de core-bibliotheek is
<c:out value = "${'<div>'}"/>
die de <div>
– tag uitvoert waarbij de XML al is ontsnapt. Deze functie is belangrijk omdat het direct uitvoeren van inhoud naar een webpagina via ${variable}
de deur opent naar script injectie aanvallen., Deze eenvoudige functie wordt gebruikt om webpagina ‘ s te beschermen tegen dergelijke aanvallen.
De core library bevat ook verschillende tags voor iteratie en flow controle (zoals IF/ELSE afhandeling).
het aanroepen van taglibs in JSP pagina ‘ s
nu je een handvat hebt over JSP basics, laten we een wijziging aanbrengen in de voorbeeldtoepassing. Om te beginnen, Zoek de impliciete Object app in uw Tomcat installatie. Het pad is: apache-tomcat-8.5.33/webapps/examples/jsp/jsp2/el
.,
Open dit bestand en zoek de functions
include:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
net onder deze regel, voeg een nieuwe regel toe:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
druk op Return en voeg een nieuwe regel toe:
<c:out value = "${'This is a test of the JSTL Core Library'}"/>
herlaad nu de pagina op http://localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=bar.
u zou uw updates moeten zien weerspiegeld in de uitvoer.
lay-out van een JSP-webtoepassing
Tomcat volgt de standaard lay-out voor Java servlet-en JSP-pagina ‘ s., De algemene structuur is een map met de naam van de toepassing, die wordt geïmplementeerd in Tomcat ‘ s /webapps
map.
in de app impliciete objecten is de toepassing /examples
. Het openen van die map onthult drie belangrijke kinderen: de/WEB-INF
map, deindex.html
bestand, en een set van andere mappen.
de WEB-INF
map bevat metadata die Tomcat informeert hoe de app moet worden uitgevoerd.
de rest van de inhoud, inclusief index.,html, is direct toegankelijk, net zoals het zou zijn in een typische webserver. Ook de implicit-objects.jsp
is beschikbaar om te bekijken, en wordt automatisch behandeld als een JSP-pagina (geen HTML-pagina) door de server.
Request-response architecture
in een typische servlets / JSP-toepassing ontvangen servlets verzoeken en interacteren ze met componenten en services aan de serverzijde (zoals de database) om deze te vervullen. Eenmaal afgehandeld, wordt het verzoek resultaat doorgestuurd naar een JSP pagina, die het antwoord presenteert.,
een servlet gebruikt de volgende syntaxis wanneer een verzoek wordt verzonden naar een JSP-pagina:
request.getRequestDispatcher("path/to/jsp.jsp").forward(req,res);
alle gegevens die de servlet in de verschillende JSP-scopes heeft ingevoegd, zijn toegankelijk voor JSP. Een scope is gewoon een bereik van leven voor een bepaald object. Verzoeken en reacties objecten worden verzoek scoped, wat betekent dat ze leven voor de duur van het verzoek. Andere scopes zijn paginabereik (leeft zo lang als de JSP-pagina doet) en sessiebereik (eindigt wanneer de gebruiker de gegeven sessie beëindigt).,
conclusie
JavaServer Pages is een bekende en veelzijdige technologie voor het ontwikkelen van Java web applicatie weergaven. In combinatie met servlets zijn JSP-pagina ‘ s zeer krachtig en bieden ze toegang tot het hele scala aan Java-mogelijkheden. Hoewel JSP misschien niet uw eerste keuze voor het ontwikkelen van een moderne Java webapplicatie, zult u JSP pagina ‘ s in legacy applicaties tegenkomen. Het is ook een goede keuze voor eenvoudigere toepassingen, waar u snel uw HTML-frontend wilt aansluiten op server-side Java-code., De JSTL-tags kunnen de meeste vereisten voor webtoepassingen verwerken, en bibliotheken van derden breiden die functionaliteit uit voor specifieke technologieën en use cases.