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

巴扎黑
巴扎黑original
2017-09-08 09:38:201847parcourir

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>

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/" />
/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 463d7d566f84e66ad507872587b9c14c

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


<mvc:default-servlet-handler/>
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

6dc807b7f3e65fc0346efcca89666ce8 La valeur de l'attribut de commande du SimpleUrlHandlerMapping automatiquement enregistré est : 2147483646


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

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