Les exemples de cet article résument les méthodes de traitement courantes des fichiers statiques dans Javaweb, qui sont d'une grande valeur pratique dans le développement de programmes Javaweb. Les méthodes spécifiques sont résumées comme suit :
Méthode 1 : Activer le defaultServlet de Tomcat. pour traiter les fichiers statiques
Ajouter dans web.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>
Remarque : à écrire devant DispatcherServlet, laissez defaultServlet intercepter la demande en premier, de sorte que la demande ne rentre pas dans Spring, je pense que les performances sont les meilleures.
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"
Méthode 2 : mvc:resources est fourni au printemps 3.0.4 et dans les versions ultérieures. Méthode d'utilisation :
<!-- 对静态资源文件的访问 --> <mvc:resources mapping="/images/**" location="/images/" />
. Description : /images/** est mappé à ResourceHttpRequestHandler Processing, l'emplacement spécifie l'emplacement de la ressource statique. Il peut se trouver dans le répertoire racine de l'application Web ou dans le package jar, afin que les ressources statiques puissent être compressées dans le fichier jar. emballer. cache-period peut créer un cache Web de ressources statiques
Méthode 3, utilisez <mvc:default-servlet-handler/>
<mvc:default-servlet-handler/>
L'url "/**" sera enregistrée dans l'urlMap de SimpleUrlHandlerMapping, et l'accès aux ressources statiques sera transféré de HandlerMapping vers org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler pour traitement et retour.
DefaultServletHttpRequestHandler utilise 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/>La valeur de l'attribut de commande du SimpleUrlHandlerMapping automatiquement enregistré est : 2147483647
Spring exécutera d'abord la commande avec une valeur 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, s'il existe un intercepteur total (approximatif) correspondant lors de l'accès aux ressources statiques, l'intercepteur sera utilisé. 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 tels que *.do, les problèmes ci-dessus n'existeront pas. Il est toujours pratique d'avoir un suffixe.
Pour plus d'articles sur les méthodes courantes de traitement des fichiers statiques dans javaweb, veuillez faire attention au site Web PHP chinois !