Java & het Web Programma: JSP
JSP....herhaling Welke van de volgende expressions is geldig/ongeldig? %>
JSP....lifecycle(1) Deployment van JSP Web/servlet container web.xmlMijnJSP.jsp Deploy
JSP....lifecycle(2) Client doet request naar MijnJSP.jsp (het allereerste request) Web/servlet container MijnJSP.jspMijnJSP_jsp.java (servlet) RequestTranslateGenerate
JSP....lifecycle(3) Client doet request naar MijnJSP.jsp Web/servlet container MijnJSP_jsp.java MijnJSP_jsp.class CompileGenerate
JSP....lifecycle(4) Web/servlet container MijnJSP_jsp.class Load
JSP....lifecycle(5) Web/servlet container MijnJSP_jsp instance jspInit()
JSP....lifecycle(6) Web/servlet container MijnJSP_jsp instance _jspService() Thread A
JSP....initialisatie(1) Net als een servlet kun je een JSP initializeren met parameters. hello /MijnJSP.jsp groet Hallo....
JSP....initialisatie(2) De JSP servlet API ziet er als volgt uit: interface javax.servlet.jsp.JspPage heeft 2 methodes: jspInit() en jspDestroy() --> kunnen overridden worden interface javax.servlet.jsp.HttpJspPage extends JspPage heeft 1 methode: _jspService() --> kan NIET overridden worden
JSP....initialisatie(3) <%! //declaratie! public void jspInit() { ServletConfig sConfig = getServletConfig(); String groet = sConfig.getInitParameter("groet"); ServletContext ctx = getServletContext(); ctx.setAttribute("greet", groet); } %> Vergeet niet in de page directive de nodige imports te doen!
JSP....attributen(1) Het zetten en vinden van attributen in de verschillende scopes in een JSP gaat als volgt: Zet in page scope: of Haal uit page scope: of <% pageContext.getAttribute("getal", PageContext.PAGE_SCOPE);
JSP....attributen(2) Zet in request scope: of Haal uit page scope: of Zelfde principe PageContext.SESSION_SCOPE voor en PageContext.APPLICATION_SCOPE.
JSP....attributen(3) Het vinden van een attribuut een onbekende scope: Zonder scope op te geven: De methode zoekt eerst in page scope. Als het daar niet wordt gevonden achtereenvolgens in request scope, session scope en application scope. Zodra er een 'hit' is stopt het zoeken. Het verwijderen van een attribuut: Uit ALLE scopes Uit opgegeven scope
Tag libraries...wat is dat? Tag library is een verzameling van (veelgebruikte) functionaliteiten die als java code gebundeld zijn en gebruikt kunnen worden in een JSP. Tag libraries kun je zelf maken of kunnen, meestal in de vorm van 'jar' bestanden, gedownload worden. Voordelen: -helpen je JSP's 'scriptlet vrij' te houden, schonere code. -Generieke functionaliteiten kunnen gemakkelijk hergebruikt worden. -Met zelfgebouwde taglibs (custom taglib) kun je functionaliteit bouwen die elders niet te vinden is. Nadelen: -het maken en configureren van custom taglibs is heel ingewikkeld.
Scriptlet vrije pagina's...wat is dat?... Tot nu toe JSP's gezien waarin java en HTML. Dit is al een verbetering t.o.v. servlets, maar nog niet ideaal. In de praktijk zijn er designers (HTML, CSS, javascript) en programmers (java) Er zijn weinig mensen dit goed zijn in beide disciplines. Het ultieme doel is: -GEEN java code in JSP pagina's -alleen opmaak code in JSP pagina's. Eventuele flow/logica wordt geregeld door taglibs en de (E)xpression (L)anguage, afgekort (EL). Dit zien we volgende week....eerst de opbouw van een webapp.
Opbouw van een webapp Een java webapplicatie heeft altijd een vaste opbouw. de container kijkt op bepaalde plaatsen naar bepaalde zaken. De web.xml speelt een belangrijke rol in de configuratie. Als voorbeeld nemen we Tomcat, maar in principe is de opbouw voor elke container hetzelfde
Opbouw van een webapp(2)