programmera.net -> jsp -> normal     för utskrift      info@programmera.net

Det inbyggda märkesbiblioteket jsp

1. Det inbyggda märkesbiblioteket jsp
2. jsp:include
3. jsp:forward

1. Det inbyggda märkesbiblioteket jsp

Med det inbyggda märkesbiblioteket jsp kan man utföra följande:

  • Skapa olika JSP-element, scriptlets, uttryck, deklarationer och direktiv, på ett alternativt sätt.
  • useBean: Inkluderar en böna i sidan.
  • include: Inkluderar en sida.
  • forward: Gör en omdirigering till en annan webbsida.
  • plugin: Inkluderar en resurs i sidan, t.ex. en applet.
Att skapa JSP-element med märken istället för som vanligt är "pratigare", och om man gillar pratig eller inte pratig kod är ju en smaksak. Nedan listas märkena i biblioteket jsp:

Märkesbiblioteket jsp Beskrivning
<jsp:declaration> kod </jsp:declaration>  <%! kod %>
<jsp:scriptlet> kod </jsp:scriptlet>  <% kod %>
<jsp:expression> kod </jsp:expression>  <%=kod %>
<jsp:directive.page att="val"/>  <%@ page att="val" %>
<jsp:directive.include file="x.inc"/>  <%@ include file="x.inc" %>
Finns inget märke för taglib  <%@ taglib uri="tglb.tld" prefix="tl" %>
<jsp:include page="x.jsp"/>  Inkluderar sidan x.jsp dynamiskt.
<jsp:forward page="x.jsp"/>  Omdirigerar till sidan x.jsp.
<jsp:useBean id="x" scope="y" class="z"/>  Deklarerar en böna, som kan användas i koden med namnet x.
<jsp:setProperty name="x" property="age" value="7"/>  Sätter egenskapen age för bönan x till 7.
<jsp:getProperty name="x" property="age"/>  Skriver ut egenskapen age för bönan x.
<jsp:plugin type="applet" code="x" codebase="y"/>  Inkluderar en extern resurs i sidan.

2. jsp:include

Skillnaden mellan jsp:include och jsp:directive.include är:

  • jsp:include inkluderar en sida dynamiskt. Om den inkluderade sidan förändras märks det direkt i huvudsidan.
  • Med jsp:include kan du dynamiskt välja vilken sida som ska inkluderas.
Man kan även skicka parametrar till den sida som ska inkluderas med param-märket. Parametrarna som skickas adderas till request-objektet, som om de postats från ett formulär. Vi skriver filen testinclude.jsp som skickar parametern a till den inkluderad sidan x.jsp:
<HTML>
<BODY>
<H1>Testa jsp:include</H1>
Denna sida försöker inkludera <B>x.jsp</B>.
<BR/>
<BR/>
<jsp:include page="x.jsp" >
  <jsp:param name="a" value="7" />
</jsp:include>
</BODY>
</HTML>
Spara filen till CATALINA_HOME/programmera/testinclude.jsp. Vi skriver filen x.jsp:
Detta är <B>x.jsp</B>, Variabeln a är:
<%= request.getParameter("a") %>
Spara filen till CATALINA_HOME/programmera/x.jsp. Vi öppnar en webbläsare och ser:



Då JSP-sidan översätts till en servlet ersätts jsp:include till:
request.getRequestDispatcher("/x.jsp").include(request, response);

3. jsp:forward

jsp:forward används för att göra en omdirigering till en annan webbsida. jsp:forward skiljer sig från response.sendRedirect() genom att märket får webb-behållaren att hoppa direkt till en annan webbsida inom applikationen, utan att gå omvägen via webbläsaren. Detta får följande konsekvenser:

  • jsp:forward kan bara omdirigera till en sida på samma server.
  • jsp:forward omdirigerar snabbare.
jsp:forward kan skicka parametrar till den nya sidan med param-märket. Vi skriver testsidan testforward.jsp som skickar variabeln a till x.jsp:
<HTML>
<BODY>
<H1>Testa jsp:forward</H1>
Denna sida försöker omdirigera till <B>x.jsp</B>.
<BR/>
<BR/>
<jsp:forward page="x.jsp" >
  <jsp:param name="a" value="7" />
</jsp:forward>
</BODY>
</HTML>
Vi skriver sidan x.jsp:
<HTML>
<BODY>
<H1>x.jsp</H1>
Detta är <B>x.jsp</B>, Variabeln a är:
<%= request.getParameter("a") %>
</BODY>
</HTML>
Vi sparar till CATALINA_HOME/programmera/x.jsp. Vi öppnar sidan testforward.jsp i en webbläsare och ser:



Då JSP-sidan översätts till en servlet ersätts jsp:forward till:
request.getRequestDispatcher("/x.jsp").forward(request, response);