Maison >Java >javaDidacticiel >Comment servir des ressources statiques lors de l'utilisation d'un servlet de contrôleur frontal global mappé sur /* ?

Comment servir des ressources statiques lors de l'utilisation d'un servlet de contrôleur frontal global mappé sur /* ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-18 03:30:09673parcourir

How to Serve Static Resources When Using a Global Front Controller Servlet Mapped to /*?

Accès aux ressources statiques avec un servlet de contrôleur frontal global mappé sur /*

Mappage d'un servlet de contrôleur frontal global, tel que le répartiteur Spring MVC, sur le modèle d'URL /* fournit un contrôle centralisé pour le traitement des demandes entrantes. Cependant, ce mappage peut interférer avec l'accès aux ressources statiques, telles que les fichiers CSS, les scripts JavaScript et les images.

Pour résoudre ce problème, une approche multiforme est nécessaire :

  1. Utilisez un modèle d'URL spécifique pour le servlet du contrôleur : Mappez le servlet du contrôleur à un modèle d'URL plus spécifique, tel que /pages/*. Cela garantit que la servlet ne traite que les requêtes destinées au contenu dynamique.
  2. Placez le contenu statique dans un dossier dédié : Organisez les ressources statiques dans un dossier séparé, tel que /static. Cela aidera à les différencier des autres types de requêtes.
  3. Implémentez un filtre pour gérer le contenu statique : Créez un filtre qui écoute le modèle d'URL /*. Ce filtre doit transmettre de manière transparente les demandes de contenu statique au servlet par défaut. Pour les requêtes destinées à un traitement dynamique, le filtre doit envoyer la requête au servlet du contrôleur.

Dans la méthode doFilter() du filtre, implémentez la logique suivante :

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);
}

Ceci Le filtre permet aux ressources statiques d'être servies sans aucune modification de la barre d'adresse du navigateur. De plus, vous pouvez personnaliser les chemins "/static" et "/pages" en utilisant les paramètres d'initialisation dans le filtre.

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!

Déclaration:
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