Carte de la servlet contrôleur sur un plan plus spécifique url-pattern
comme /pages/*
, mettre le contenu statique dans un dossier spécifique, comme /static
et de créer un Filter
écoute sur /*
qui de manière transparente continue de la chaîne de contenu statique et distribue les requêtes au contrôleur de servlet pour d'autres contenus.
En un mot:
<filter>
<filter-name>filter</filter-name>
<filter-class>com.example.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>com.example.Controller</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>/pages/*</url-pattern>
</servlet-mapping>
avec les éléments suivants dans le filtre de l' doFilter()
:
HttpServletRequest req = (HttpServletRequest) request;
String path = req.getRequestURI().substring(req.getContextPath().length());
if (path.startsWith("/static")) {
chain.doFilter(request, response); // Goes to default servlet.
} else {
request.getRequestDispatcher("/pages" + uri).forward(request, response);
}
Non, ce n'est pas la fin avec l' /pages
dans la barre d'adresse du navigateur. Il est totalement transparent. Vous pouvez, si nécessaire, faire "/static"
et/ou "/pages"
un init-param
du filtre.