Maison > Java > javaDidacticiel > Introduction détaillée à Spring MVC accédant aux fichiers statiques

Introduction détaillée à Spring MVC accédant aux fichiers statiques

巴扎黑
Libérer: 2017-09-08 09:38:20
original
1890 Les gens l'ont consulté

Cet article présente principalement les informations pertinentes de Spring MVC pour accéder en détail aux fichiers statiques. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à

Comment intercepter "*. Pour les URL avec un suffixe comme ". do", il n'y a aucun problème de ne pas pouvoir accéder aux ressources statiques.

Si votre DispatcherServlet intercepte "/" et intercepte toutes les requêtes afin d'implémenter le style REST, alors l'accès aux fichiers statiques tels que *.js, *.jpg sera également intercepté.

Nous devons résoudre ce problème.

Objectif : les fichiers statiques sont accessibles normalement et 404 ne peut pas être signalé lorsque les fichiers statiques sont introuvables.

Option 1 : Activer le serveur par défaut de Tomcat pour traiter les fichiers statiques

Code XML


<servlet-mapping>  
  <servlet-name>default</servlet-name> 
 <url-pattern>*.jpg</url-pattern>   
</servlet-mapping>  
<servlet-mapping>    
  <servlet-name>default</servlet-name>  
  <url-pattern>*.js</url-pattern>  
</servlet-mapping>  
<servlet-mapping>    
  <servlet-name>default</servlet-name>    
  <url-pattern>*.css</url-pattern>   
</servlet-mapping>
Copier après la connexion

Pour en configurer plusieurs, un pour chaque fichier

doit être écrit devant DispatcherServlet, laissez defaultServlet intercepter la requête en premier, afin que la requête n'entre pas dans Spring, je je pense que la performance est la meilleure.

Le nom du servlet par défaut fourni avec Tomcat, Jetty, JBoss et GlassFish - "default"
Le nom du servlet par défaut fourni avec Google App Engine --"_ah_default"
Resin est livré avec le nom du servlet par défaut -- "resin-file"
Le nom du servlet par défaut fourni avec WebLogic -- "FileServlet"
Le nom du servlet par défaut fourni avec WebSphere -- "SimpleFileServlet"

Option 2 : Au printemps 3.0.4 et versions ultérieures, mvc:resources est fourni Comment utiliser :
Code XML

<🎜. >


<!-- 对静态资源文件的访问 -->  
<mvc:resources mapping="/images/**" location="/images/" />
Copier après la connexion
/images/** est mappé à ResourceHttpRequestHandler pour le traitement, et location spécifie l'emplacement de la ressource statique. Elle peut se trouver sous le répertoire racine de l'application Web ou dans le fichier jar. package, afin que les ressources statiques puissent être compressées dans le package jar. cache-period peut activer la mise en cache Web des ressources statiques


Si l'erreur suivante se produit, cela peut être dû au fait que

Erreur AVERTISSEMENT : aucun mappage trouvé pour la requête HTTP avec l'URI [/mvc/user/findUser/lisi/770] dans DispatcherServlet avec le nom 'springMVC'

Utiliser

Une autre chose à noter est que ne définissez pas defaultHandler pour SimpleUrlHandlerMapping Parce que le defaultHandler pour l'URI statique est ResourceHttpRequestHandler, sinon la demande de ressources statiques ne peut pas être traitée.


Option trois : Utiliser <mvc:default-servlet-handler/>Code XML


<mvc:default-servlet-handler/>
Copier après la connexion
enregistrera l'URL "/**" dans l'urlMap de SimpleUrlHandlerMapping et transférera l'accès aux ressources statiques de HandlerMapping vers org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler pour le traitement et le retour.

DefaultServletHttpRequestHandler Utilisez le servlet par défaut de chaque conteneur de servlet

Explication supplémentaire : l'ordre d'exécution de plusieurs problèmes HandlerMapping :

La valeur de l'attribut d'ordre de DefaultAnnotationHandlerMapping est : 0

< mvc :resources/ > La valeur de l'attribut de commande du SimpleUrlHandlerMapping automatiquement enregistré est : 2147483646


<mvc:default-servlet-handler/> 2147483647


spring exécutera en premier la valeur de commande la plus petite. Lorsque vous accédez à un fichier image a.jpg, recherchez d'abord le processeur via DefaultAnnotationHandlerMapping. Il ne doit pas être trouvé car nous n'avons pas d'action appelée a.jpg. Recherchez ensuite par ordre croissant de valeur de commande. Puisque le dernier SimpleUrlHandlerMapping correspond à "/**", il correspondra certainement et vous pourrez répondre à l'image.

Pour accéder à une image, il faut passer par des couches de matching. Vous ne savez pas comment se déroule la performance ?


Enfin, les plans 2 et 3 utiliseront l'intercepteur s'il existe un intercepteur total correspondant (approximatif) lors de l'accès aux ressources statiques. Si vous implémentez la vérification des autorisations lors de l'interception, veillez à filtrer ces demandes pour les fichiers statiques.


Si votre DispatcherServlet intercepte les suffixes d'URL comme *.do, les problèmes ci-dessus n'existeront pas. Il est toujours pratique d'avoir un suffixe.

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal