# welcome-file in web.xml



## deamon (8. Dez 2008)

Hallo,

ich will, dass man meine Servlet-Anwendung ohne Dateinamen aufrufen kann, also etwa mit http://localhost:8080/meinContext/. Dazu habe ich (auf das Wesentliche reduziert) Folgendes in die Datei web.xml geschrieben.


```
<servlet-mapping>
        <servlet-name>siki</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>/index.html</url-pattern> 
    </servlet-mapping>
   <welcome-file-list>
      <welcome-file>index.html</welcome-file>
    </welcome-file-list>
```

Es funktioniert aber nur, wenn als Muster auch "/index.html" angegeben ist. Wenn die Zeile fehlt, funktioniert es nicht. Warum funktioniert das ohne nicht? Das Muster "*.html" passt doch auch auf "index.html".

Das Servlet, auf das verwiesen wird ist übrigens org.springframework.web.servlet.DispatcherServlet, die Abbildung auf den Controller erfolgt über BeanNameUrlHandlerMapping. Vielleicht wirkt sich das ja hier aus?

Und NetBeans sagt mir bei der obigen Variante: "Property url-pattern already bound to a dom node." Was will mir diese Fehlermeldung sagen? Hört sich so an, als könnte man nur ein Muster je Mapping haben, aber normalerweise müssten ja beliebig viele möglich sein. Wenn man die beiden Muster auf zwei Mappings aufteilt kommt der Fehler nicht.

Wäre schön, wenn mir jemand Erleuchtung geben könnte.


----------



## maki (8. Dez 2008)

> Und NetBeans sagt mir bei der obigen Variante: "Property url-pattern already bound to a dom node." Was will mir diese Fehlermeldung sagen? Hört sich so an, als könnte man nur ein Muster je Mapping haben, aber normalerweise müssten ja beliebig viele möglich sein. Wenn man die beiden Muster auf zwei Mappings aufteilt kommt der Fehler nicht.


Pro Servletmapping 1 servlet-name und ein url-pattern, mehrere url-pattern pro mapping sind nicht erlaubt.

Könntest in der "echten" index.html ja einen redirect haben.

Warum du ein Servlet auf die Endung html mappest ist mir nicht klar.


----------



## deamon (8. Dez 2008)

maki hat gesagt.:
			
		

> Warum du ein Servlet auf die Endung html mappest ist mir nicht klar.



Das habe ich so aus einem Beispiel übernommen. Was spricht dagegen? .html ist doch eine schöne Endung für HTML-Seiten (jedenfalls besser als .jsp).


----------



## maki (8. Dez 2008)

> Das habe ich so aus einem Beispiel übernommen. Was spricht dagegen? .html ist doch eine schöne Endung für HTML-Seiten (jedenfalls besser als .jsp).


Hast imho ein mieses Beispiel erwischt.

JSPs sind JSPs, nicht html, selbst wenn dieses dabei rauskommt.
Ein Servletmapping ist wieder etwas anderes, wichtig ist, dass du einen Namen wählst der noch nicht belegt ist (.do, .form), was machst du denn wenn du eine echte .html Seite ausliefern möchtest?


----------

