Hvordan er JSP og Servlet relatert til hverandre? Er JSP en slags servlet? Hvordan er JSP og JSF relatert til hverandre? Er JSF en slags prebuild UI-basert JSP som ASP.NET-MVC?
JSP er en Java-visningsteknologi som kjører på servermaskinen, og som lar deg skrive maltekst i klientsidespråk (som HTML, CSS, JavaScript osv.). JSP støtter taglibs, som støttes av biter av Java-kode som lar deg kontrollere sideflyten eller utdata dynamisk. En velkjent taglib er JSTL. JSP støtter også Expression Language, som kan brukes til å få tilgang til backend-data (via attributter som er tilgjengelige i side-, forespørsels-, sesjons- og applikasjonsomfang), for det meste i kombinasjon med taglibs.
Når en JSP blir forespurt for første gang eller når webapplikasjonen starter opp, vil servletbeholderen kompilere den til en klasse som utvider HttpServlet
og bruke den i løpet av webapplikasjonens levetid. Du finner den genererte kildekoden i serverens arbeidskatalog. I for eksempel Tomcat er det /work
-katalogen. Ved en JSP-forespørsel vil servlet-containeren utføre den kompilerte JSP-klassen og sende den genererte utdataen (vanligvis bare HTML/CSS/JS) via webserveren over et nettverk til klientsiden, som igjen viser den i nettleseren.
Servlet er et Java-applikasjonsprogrammeringsgrensesnitt (API) som kjører på servermaskinen, som fanger opp forespørsler fra klienten og genererer/sender et svar. Et velkjent eksempel er HttpServlet
som tilbyr metoder for å hekte seg på HTTP forespørsler ved hjelp av de populære HTTP-metodene som GET
og POST
. Du kan konfigurere HttpServlet
til å lytte til et bestemt HTTP URL-mønster, som kan konfigureres i web.xml
, eller mer nylig med Java EE 6, med @WebServlet
annotasjon.
Når en servlet først blir forespurt eller under oppstart av en webapplikasjon, vil servletbeholderen opprette en forekomst av den og beholde den i minnet i løpet av webapplikasjonens levetid. Den samme forekomsten vil bli gjenbrukt for hver innkommende forespørsel hvis nettadressen samsvarer med servletens nettadressemønster. Du kan få tilgang til forespørselsdataene med HttpServletRequest
og håndtere svaret med HttpServletResponse
. Begge objektene er tilgjengelige som metodeargumenter i noen av de overstyrte metodene til HttpServlet
, for eksempel doGet()
og doPost()
.
JSF er et komponentbasert MVC-rammeverk som er bygget på toppen av Servlet API og gir komponenter via taglibs som kan brukes i JSP eller annen Java-basert visningsteknologi som Facelets. Facelets er mye mer egnet for JSF enn JSP. Det gir nemlig gode templating capabilities som composite components, mens JSP i utgangspunktet bare tilbyr <jsp:include>
for templating i JSF, slik at du er tvunget til å lage egendefinerte komponenter med rå Java-kode (som er litt ugjennomsiktig og mye kjedelig arbeid) når du vil erstatte en gjentatt gruppe komponenter med en enkelt komponent. Siden JSF 2.0 har JSP blitt utdatert som visningsteknologi til fordel for Facelets.
Note: JSP i seg selv er IKKE deprecated, bare kombinasjonen av JSF med JSP er deprecated.
Note: JSP har gode muligheter for templating ved hjelp av Taglibs, spesielt varianten (Tag File). JSP templating i kombinasjon med JSF er det som mangler.
Som et MVC-rammeverk (Model-View-Controller) tilbyr JSF FacesServlet
som den eneste request-response Controller. Den tar alt det vanlige og kjedelige HTTP-forespørsel/svar-arbeidet fra deg, som å samle inn brukerinndata, validere/konvertere dem, plassere dem i modellobjekter, påkalle handlinger og gjengi svaret. På denne måten ender du opp med en JSP- eller Facelets-side (XHTML) for View og en JavaBean-klasse som Model. JSF-komponentene brukes til å binde visningen med modellen (slik ASP.NET-webkontrollen din gjør), og FacesServlet
bruker JSF-komponenttreet til å gjøre alt arbeidet.
Se http://www.oracle.com/technetwork/java/faq-137059.html
JSP-teknologien er en del av teknologifamilien Java teknologifamilien. JSP-sider er
kompilert i servlets og kan påkalle JavaBeans-komponenter (beans) eller Enterprise JavaBeans-komponenter (enterprise beans) for å utføre behandling på serveren. Som sådan er JSP teknologi er en nøkkelkomponent i en svært skalerbar arkitektur for nettbaserte applikasjoner.
Se https://jcp.org/en/introduction/faq
A: JavaServer Faces-teknologien er et rammeverk for å bygge brukergrensesnitt for webapplikasjoner. JavaServer Faces teknologi inkluderer:
Et sett med API-er for: å representere brukergrensesnittet komponenter og administrere deres tilstand, håndtering av hendelser og inndatavalidering, definere sidenavigering, og støtte internasjonalisering og tilgjengelighet.
En egendefinert JavaServer Pages (JSP)-tagg. bibliotek for å uttrykke en JavaServer Ansiktsgrensesnitt i en JSP-side.
JSP er en spesialisert type servlet.
JSF er et sett med koder du kan bruke med JSP.