1. Det implicita objektet application
Objektet är av typen javax.servlet.ServletContext. application-objektet hanterar resurser som är gemensamma för applikationen, som t.ex. att skriva till logg-filen eller komma åt initparametrarna. En servlet måste hämta application-objektet ur config-objektet för att ha tillgång till det. Du hämtar application-objektet såhär:
ServletContext application=config.getServletContext(); |
2. Spara objekt i applikationen
Ibland vill man lägga till objekt till applikationen, dessa objekt delar alla anvädare på. Du kan addera och ta bort objekt med dessa metoder:
Metoder | | Returnerar | | Beskrivning |
getAttributeNames() | | Enumeration | | Returnerar en Enumeration innehållande alla namnen på de objekt som finns lagrade i applikationen. |
setAttribute(String name, Object obj) | | void | | Lägger till objektet obj till applikationen. |
getAttribute(String name) | | Object | | Returnerar det objekt som har namnet name. |
removeAttribute(String name) | | void | | Tar bort det objekt som har referensen name ur applikationen. |
3. Skriva till logfilen
Att regelbundet lägga in små utskrifter till logg-filen i din kod underlättar felsökningen. Det finns två metoder som gör detta:
Metoder | | Returnerar | | Beskrivning |
log(String msg) | | void | | Skriver msg till logg-filen, inklusive datum. |
log(String msg, Throwable exception) | | void | | Som ovan men skriver även ut stacktrace på undantaget. |
I exemplet nedan skriver vi till logg-filen:
<HTML>
<BODY>
<H1>Skriv till logfilen</H1>
<% application.log("hej"); %>
</BODY>
</HTML>
|
Vi sparar filen till CATALINA_HOME/webapps/programmera/log.jsp. Vi kör log.jsp en gång och försöker sedan hitta vårt meddelande. I Tomcat4 ligger logg-filerna i mappen CATALINA_HOME/logs/. Sist i den nyaste filen hittar vi följande rad:
4. Hämta initparameterar
När en server startar läser den filen web.xml för varje applikation. I web.xml kan man deklarera parametrar (context-param) som man senare kan hämta ur application-objektet. Det finns två metoder för att hämta dessa parametrar:
Metoder | | Returnerar | | Beskrivning |
getInitParameterNames() | | Enumeration | | Returnerar en Enumeration innehållande namnen på alla initparametrar. |
getInitParameter(String name) | | String | | Returnerar värdet på den parameter som är knuten till name. |
Vi gör en JSP-sida som läser initparametrar:
<HTML>
<BODY>
<H1>Läs initparametrarna</H1>
<%
String var,val;
java.util.Enumeration names=application.getInitParameterNames();
while(names.hasMoreElements()){
var=(String) names.nextElement();
val=application.getInitParameter(var);
%>
<%=var %>=<%= val %><BR/>
<% } %>
</BODY>
</HTML>
|
Vi sparar sidan till CATALINA_HOME/webapps/programmera/initparam.jsp. Än så länge visar vår sida ingenting eftersom det inte finns några initparametrar i applikationen. Vi testar att skapa några initparametrar genom att klistra in följande i web.xml:
<context-param>
<param-name>DATA_PATH</param-name>
<param-value>c:\programmera\datafile.txt</param-value>
</context-param>
|
För att parametrarna ska läsas måste servern startas om. Efter detta ser vi:
5. Information om filer
application har metoder som ger information om filer:
Metoder | | Returnerar | | Beskrivning |
getMimeType(String path) | | String | | Returnerar MIME-typen på den specifierade filen. |
getRealPath(String path) | | String | | Returnerar den verkliga sökvägen från en virtuell sökväg. |
getResource(String path) | | String | | Returnerar URLen för resursen specifierad i path. |
getResourcePaths(String path) | | Set | | Returnerar en mängd innehållande alla filer och mappar i den givna katalogen. Om path är en fil innehåller mängden bara filen om den finns. |
6. Övriga metoder
application har en del övriga metoder som är nyttiga för programmeraren, nedan listas några:
Metoder | | Returnerar | | Beskrivning |
getRequestDispatcher(String path) | | RequestDispatcher | | Returnerar en RequestDispatcher för resursen i path. |
getNamedDispatcher(String name) | | RequestDispatcher | | Returnerar en RequestDispatcher för servleten name. name är ett servlet-name specifierat i web.xml. |
getServerInfo() | | String | | Returnerar webb-behållarens namn och version. |
Följande blir utskriften av getServerInfo():