programmera.net -> jsp -> normal för utskrift | info@programmera.net |
web.xml
1. Vad är web.xml?
Filen web.xml kallas även deployment descriptor (sjösättningsbeskrivare) och används till att göra inställningar för webbapplikationen. Några fakta om filen:
2. conf/web.xml
I mappen CATALINA_HOME/conf/ ligger en fil web.xml som fungerar som defaultinställning för alla webbapplikationerna på servern. Denna fil innehåller mestadels grundinställningar och en massa mime-mapping-märken. Du ska vanligtvis inte göra dina inställningar där, utan istället ändra i den web.xml som hör till din applikation.
3. En enkel web.xml
Varje applikation kan ha en egen web.xml. Om webbapplikationen heter programmera så ska web.xml ha sökvägen CATALINA_HOME/webapps/programmera/WEB-INF/web.xml. Den enklaste web.xml har följande utseende:
Här innehåller web-app-märket ingenting.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
</web-app>
4. Element
Nedan listas de 23 elementtyper som kan innefattas inuti web-app-märket. Elementens inbördes ordning kan inte ändras, display-name måste t. ex. alltid ligga före description om båda finns.
Element Max Beskrivs Beskrivning icon 1 Nej Kopplar en ikon till applikationen som representerar applikationen i serverns GUI. display-name 1 Nej Webbkomponentens namn. description 1 Nej En beskrivning av webbkomponenten. distributable 1 Nej Sätt till true om applikationen är programmerad för att köras i en distrubuerad miljö. context-param * Ja Egendefinierade parametrar som man kan komma åt från JSP-sidorna. filter * Nej Kopplar ett filternamn till en filterklass. filter-mapping * Nej Kopplar en URL till ett tidigare definierat filternamn. listener * Ja Alla lyssnare som ska användas måste deklareras här. servlet * Ja Kopplar ett servletnamn till en servlet. Här kan en mängd inställningar göras för en enskild servlet. servlet-mapping * Ja Kopplar en URL till ett tidigare definierat servletnamn. session-config 1 Ja Bestämmer hur länge användaren kan vara inaktiv innan sessionen kastas. mime-mapping * Nej Kopplar en filändelse till en MIME-type. T.ex. txt till text/plain. welcome-file-list 1 Ja Här listas de filnamn som kan vara indexfiler för en katalog. error-page * Ja Kopplar ett visst fel till en viss JSP-sida. taglib * Ja Kopplar ett märkesbiblioteks sökväg till en URI. resource-env-ref * Nej Innehåller en deklaration av en referens till ett objekt kopplat till en resurs i webbapplikationens miljö. resource-ref * Nej Innehåller en deklaration av en referens till en extern resurs, t.ex. databas. security-constraint * Ja Ser till att endast vissa roller får tillgång till en del av webbplatsen. login-config 1 Ja Bestämmer vilken loginmetod applikationen ska använda. security-role * Nej Deklarerar en roll. env-entry * Nej Deklarerar en miljö-ingång för applikationen. ejb-ref * Nej Används för att få ett JNDI-namn på en EJB. ejb-local-ref * Nej Används för att få en referens till en lokal EJB.
5. context-param
Genom att deklarera variabler i web.xml, kan man senare komma åt dem via context/application-objektet. Dessa variabler kan vara sökvägar eller lösenord eller liknande. Genom att lägga dessa detaljer i web.xml blir de lättare att hitta (och ändra). Deklarationen ser ut såhär:
Hur man sen använder dessa variabler i programkoden visas på sidan
application .
<context-param>
<param-name>myPath</param-name>
<param-value>C:\myapp\bin\a.exe</param-value>
</context-param>
6. listener
Lyssnare diskuteras på sidan
lyssnare . En lyssnare måste deklareras i web.xml för att den ska kunna användas. Nedan följer ett exempel på en deklaration:
<listener>
<listener-class>nu.programmera.listening.MySessionListener</listener-class>
</listener>
7. servlet och servlet-mapping
Dessa element bestämmer hur du anropar din servlet via webben.
I exemplet nedan mappar vi servleten HelloWorld.class till URLen http://localhost:7070/hw:
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloWorld</servlet-name>
<url-pattern>/hw</url-pattern>
</servlet-mapping>
8. session-config
Med detta element kan du bestämma hur länge webbapplikationen ska spara sessionen då användaren är inaktiv. I conf/web.xml sätts session-timeout till 20 minuter, så det är standard. Om du tycker att användarna av din applikation ska få 30 minuter på sig kan du skriva såhär:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
9. welcome-file-list
Här listas de filnamn som kan vara indexfiler för en katalog. Indexfilen anropas automatiskt då det kommer en HTTP-förfrågan efter katalogen som indexfiler ligger i. Som default fungerar index.html,index.htm och index.jsp som indexfiler. Såhär deklareras de i CATALINA_HOME/conf/web.xml:
Om du använder welcome-file-list för att göra en egen lista, kommer din lista att ersätta defaultinställningarna. Se till att alla de filer du vill ha kommer med. Om servern inte hittar någon fil med namn deklarerat i denna lista får man ett 404-fel (file not found).
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
10. error-page
Kopplar ett visst fel till en viss JSP-sida. Webb-behållaren genererar alltid en defaultfelsida om man inte har gjort någon egen, men dessa har inte samma stil som webbplatsen, en hemmagjord felsida gör inte kunden lika förskräckt. Man kan koppla en HTTP-felkod (error-code) till en felsida på detta sätt:
Vi kan också koppla en viss typ av undantag till en felsida på detta sätt:
<error-page>
<error-code>404</error-code>
<location>/exceptions/404.jsp</location>
</error-page>
Felhantering beskrivs i detalj på sidan om
undantag .
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/exceptions/exception.jsp</location>
</error-page>
11. taglib
Kopplar märkesbibliotekets sökväg till en URI. Märkesbibliotek kan användas utan att de deklareras i web.xml, men man döljer den riktiga sökvägen genom att deklarera i web.xml. Om ett taglib-element finns i web.xml kan man använda det i JSP endast genom att referera till det namn som specifieras av taglib-uri parametern. Märkesbibliotek beskrivs närmare på sidan
märkesbibliotek . Nedan kopplas märkesbiblioteket med sökvägen /WEB-INF/ollestaglib.tld till URIn ollestaglib:
<taglib>
<taglib-uri>ollestaglib</taglib-uri>
<taglib-location>/WEB-INF/ollestaglib.tld</taglib-location>
</taglib>
12. resurser
Om du vill använda resurser som databaser ska du använda elementen resource-env-ref, resource-ref och env-entry.
<resource-ref>
<res-ref-name>jdbc/BookDB</res-ref-name>>
<res-type>javax.sql.DataSource</res-type>>
<res-auth>Container</res-auth>>
</resource-ref>
13. säkerhet
De element som handlar om säkerhet är security-constraint, login-config och security-role. De beskrivs närmare på sidan
säkerhet .