Maison >Java >javaDidacticiel >Comment accéder aux ressources statiques lors de l'utilisation d'un servlet Global Front Controller dans Spring MVC ?

Comment accéder aux ressources statiques lors de l'utilisation d'un servlet Global Front Controller dans Spring MVC ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-05 02:35:11409parcourir

How to Access Static Resources When Using a Global Front Controller Servlet in Spring MVC?

Accès aux ressources statiques avec un servlet de contrôleur frontal global

Lors du mappage d'un répartiteur Spring MVC en tant que servlet de contrôleur frontal global sur / , cela peut entraîner des problèmes d'accès aux ressources statiques telles que CSS, JS et images, qui sont généralement stockées dans un dossier tel que /res. En effet, le mappage / capture toutes les requêtes et les achemine vers le servlet, empêchant ainsi l'accès à ces fichiers statiques.

Pour résoudre ce problème, un modèle d'URL plus spécifique peut être défini pour le servlet du contrôleur, tel que /pages/. Le contenu statique peut ensuite être placé dans un dossier séparé, tel que /static. Un filtre peut être configuré pour écouter sur / et transmettre de manière transparente les requêtes de contenu statique au servlet par défaut, tout en distribuant d'autres requêtes au servlet du contrôleur.

Voici un exemple de code simplifié :

<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>

Et dans la méthode doFilter() du filtre :

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

Cette configuration garantit que les ressources statiques, telles que CSS et JS, sont accessibles sans perturber la fonctionnalité du servlet du contrôleur, qui gère les requêtes restantes. De plus, l'utilisation d'un filtre garantit que l'accès aux fichiers statiques est totalement transparent du point de vue du navigateur.

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