JSP en gebruik van data

Introductie

Dit is een artikel uit een reeks over JSP . Zie ook de volgende delen :

JSP pagina’s moeten natuurlijk gebruik maken van data : om weer te geven en om gebruikersinvoer te verzamelen en naar de server naar servlets (of andere JSP pagina’s) te versturen. Er zijn hiervoor een aantal technieken beschikbaar zoals form parameters, JavaBean objecten en session attributen. Verzamelde form parameters worden aan serverzijde in een servlet ingelezen via request.getParameter(). Aan serverzijde kan een servlet een JavaBean opslaan als sessie attribuut via request.setAttribute(). Met een forward() call wordt een JSP pagina geopend die de sessie attribute als JavaBean kan benaderen. JSP kent verschillende JavaBean acces technieken om deze in pagina’s te gebruiken en weergeven. De meest eenvoudige is via Expression Language (EL) $(bean).

De getParameter() en setAttribute() methods worden uitgevoerd op het Request object. Deze is binnen JSP één van de standaard JSP objecten (implicit objects).

JavaBeans

JavaBeans kunnen worden benaderd met deaction tags of met de ${bean} Expression Language. Detag biedt de,enmogelijkheden om een JavaBean variabele te definiëren en vervolgens de properties te gebruiken.

Hieronder een voorbeeld van <jsp: > gebruik:

<jsp:useBean id="employee" class="org.biz.Employee">
<jsp:setProperty name=" employee " property="name" value="Jan"/>
</jsp:useBean>

<p>Employee name : <jsp:getProperty name="employee" property="name"/></p>

JSP Expression Language (EL)

De JSP Expression Language biedt een taal om applicatie data te benaderen, evalueren en andere expressies mee uit te voeren. De EL kan worden gebruikt om JSP tag attributen in te stellen en het vereenvoudigt het gebruik van JavaBean properties voor bewerkingen en weergave.

JSP EL wordt gebruikt tussen de haken ${ }. De JSP compiler zal de code tussen deze haken evalueren en hiervoor code genereren die het resultaat daarvan zal produceren op de betreffende plek in de JSP pagina.

Bijv:

<p>
Oppervlakte =  ${lengte * breedte}
</p>

Met EL kunnen JavaBeans heel eenvoudig worden gebruikt zoals in het volgende voorbeeld:

<c:forEach items="${employees}" var="emp">
<c:out value="${emp.employeeId}"
</c:forEach>

Hieronder een voorbeeld waarin een expressie wordt gebruikt als test conditie in een if tag waarin twee JavaBean properties worden vergeleken:

<c:if test="${dep.departmentId == employee.department.departmentId}">
</c:if>

Standaard objecten

De volgende objecten zijn als standaard variabele in JSP pagina’s beschikbaar:

  • Request : Javax.servlet.http.httpservletrequest
  • Response : Javax.servlet.http.httpservletresponse
  • Out : Javax.servlet.jsp.JspWriter
  • Session : Javax.servlet.http.httpsession
  • PageContent : Javax.servlet.jsp.pagecontext
  • Application : Javax.servlet.http.ServletContext
  • Config : Javax.servlet.http.ServletConfig
  • Page : Java.lang.Object

Request

Het Request object bevat de gegevens die vanuit de browser naar de server worden verzonden. Het wordt echter ook gebruikt om vanuit de applicatie (servlet) gegevens terug te sturen. Nadat een servlet een forward heeft gedaan naar een nieuwe pagina zal deze bijv. JavaBean objecten en Header parameters in het request object kunnen benaderen.

Het Request object wordt aan serverzijde gebruikt om gebruikers input en browserdata te verwerken en eventueel nieuwe of aangepaste data toe te voegen. Via het Request object kunnen objecten, parameters, headers, sessions worden gelezen, gemaakt etc. Voorbeeld van enkele request methods:

  • String getParameter(String name)
  • Enumeration getParameterNames()
  • Object getAttribute(String name)
  • Enumeration getAttributeNames()
  • Enumeration getHeaderNames();

Hieronder een voorbeeld van het uitlezen van alle parameter namen:

<%
   Enumeration paramNames = request. getParameterNames ();
   while(paramNames.hasMoreElements()) {
      String paramName = (String) paramNames.nextElement();
      out.print("<tr><td>" + paramName + "</td>\n");
      String paramValue = request.getParameter(paramName);
      out.println("<td> " + paramValue + "</td></tr>\n");
   }
%>

Response

Het Response object bevat de gegevens die de server naar de browser stuurt. Het wordt aan serverzijde vanuit de applicatie (servlets, jsp’s) eigenlijk niet gebruikt. Het kan bijv. worden gebruikt om een http Status code terug te sturen:

<%
   response.sendError(407, "Need authentication!!!" );
%>

Deze zal in de browser de typische html error pagina laten zien met de aangegeven code en melding.

Out

Stuurt output naar de response bijv:

<p>
out.print("tekst zonder newline");
out.println("tekst met newline");
</p>

Session

Het Session object wordt gebruikt om data op te slaan over verschillende http requests heen.
Op deze manier wordt “conversational state” toegevoegd.

Voorbeeld van enkele session methods:

  • public void setAttribute(String name, Object value)
  • Object getAttribute(String name)
  • Enumeration getAttributeNames()
  • public String getId() //Geeft de unieke session id
<%
String name = new String("Jan");

session.setAttribute(“name”, name);
name = (String) session.getAttribute(“name”);
%>

<p><% out.print(name); %></p>

Application

Wordt gebruikt om op application level data op te slaan. Typisch voorbeeld is een hitcounter.

  • application.setAttribute(String Key, Object Value);
  • application.getAttribute(String Key);

Config

Wordt nagenoeg niet gebruikt. Kan worden gebruikt om bijv. de servlet naam op te vragen:

<p> servlet : <%=config.getServletName()%>
This entry was posted in JEE, JSP and tagged . Bookmark the permalink.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd.

De volgende HTML tags en attributen zijn toegestaan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>