robot ha scritto:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Questo è di per sé corretto. Ma giusto perché tu lo sappia, a partire dalle Servlet API 2.5 il XSD di descrizione del web.xml è stato ampliato ed è diventato lecito avere più <url-pattern> dentro <servlet-mapping>.
Quindi quella parte si potrebbe compattare.
robot ha scritto:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
Qui hai sostanzialmente la API della Servlet ripetuta e in due versioni differenti. Non va bene. Visto che il web.xml ce l'hai con version 3.0, allora tieni la 3.0.1 e togli la 2.5 .
Inoltre: le dipendenze della Servlet API e la JSP API sono già implementate di certo nel Servlet container (qualunque esso sia), quindi di norma queste dipendenze si mettono nel pom.xml con scope "provided". Ovvero sono messe in classpath da Maven in compilazione ma NON vengono portate avanti nel pacchetto war finale (se si arriva a quello) perché sarà già il container a fornirle a runtime.
Quindi
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
La JSTL non so se la usi.