Maison > Java > javaDidacticiel > Comment puis-je accéder aux ressources statiques avec un servlet Global Front Controller mappé sur /* ?

Comment puis-je accéder aux ressources statiques avec un servlet Global Front Controller mappé sur /* ?

Barbara Streisand
Libérer: 2024-12-08 14:22:10
original
352 Les gens l'ont consulté

How Can I Access Static Resources with a Global Front Controller Servlet Mapped to /*?

Servlet de contrôleur frontal global sur /* : résolution de l'accès aux ressources statiques

Lors du mappage d'un servlet de contrôleur frontal global sur /*, il devient difficile d'accéder à des ressources statiques telles que CSS, JS et images généralement stockés dans un dossier séparé. Cet article explore une solution pour restaurer l'accès à ces fichiers statiques tout en conservant la fonctionnalité globale du contrôleur frontal.

L'approche recommandée comporte deux étapes :

1. Mappez le servlet du contrôleur sur un chemin spécifique

Au lieu d'utiliser / comme modèle d'URL pour le servlet du contrôleur, mappez-le sur un chemin plus spécifique, tel que /pages/. Cela permettra d'exclure les ressources statiques de la portée du contrôleur.

2. Implémentez un filtre pour le contenu statique

Créez un filtre qui écoute sur /*. Ce filtre continuera de manière transparente la chaîne pour toute requête vers des ressources statiques et distribuera les requêtes au servlet du contrôleur pour d'autres contenus.

Dans la méthode doFilter() du filtre, utilisez le code suivant :

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" + path).forward(request, response);
}
Copier après la connexion

Ce code vérifie si le chemin de la requête commence par "/static" (ou tout autre préfixe attribué aux ressources statiques). Si c'est vrai, la demande est transmise au servlet par défaut qui correspond généralement au dossier de ressources statiques. Sinon, la requête est envoyée au servlet du contrôleur (en supposant qu'elle soit mappée sur */pages).

Cette solution garantit que les ressources statiques sont exclues du mappage du servlet du contrôleur, tout en permettant aux autres requêtes d'être traitées par le contrôleur comme prévu. C'est un moyen pratique d'équilibrer le besoin d'un contrôleur frontal global avec l'accessibilité des ressources statiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal