静态文件怎么在Spring MVC中进行访问

  介绍

这篇文章将为大家详细讲解有关静态文件怎么在Spring MVC中进行访问,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强>方案一:强激活Tomcat的defaultServlet来处理静态文件

Xml代码,,

& lt; servlet-mapping>   & lt; servlet-name> default   & lt; url-pattern> * .jpg   & lt;/servlet-mapping>   & lt; servlet-mapping>   & lt; servlet-name> default   & lt; url-pattern> * .js   & lt;/servlet-mapping>   & lt; servlet-mapping>   & lt; servlet-name> default   & lt; url-pattern> * .css   & lt;/servlet-mapping>   

要配置多个,每种文件配置一个,,,

要写在DispatcherServlet的前面,让,defaultServlet先拦截请求,这样请求就不会进入春天了,我想性能是最好的吧。

Tomcat、Jetty, JBoss,和GlassFish自带的默认Servlet的名字——“default"
Google App Engine 自带的,默认Servlet的名字——“_ah_default"
Resin 自带的,默认Servlet的名字——“resin-file"
WebLogic 自带的,默认Servlet的名字,——“FileServlet"
WebSphere ,自带的,默认Servlet的名字——“SimpleFileServlet",

<强>方案二:在spring3.0.4以后版本提供了mvc:资源,使用方法:
Xml代码,,

& lt; !——对静态资源文件的访问——比;   & lt; mvc:资源映射=?图片/* *”;位置=?图片/?/比;

/图片/* *映射到ResourceHttpRequestHandler进行处理,位置指定静态资源的位置。可以是web应用程序的根目录下,jar包里面,这样可以把静态资源压缩到jar包中.cache-period可以使得静态资源进行web cache ,

如果出现下面的错误,可能是没有配置& lt; mvc:注解驱动/祝辞的原因只
报错警告:没有发现HTTP请求的URI映射[/mvc/user/findUser lisi/770]在DispatcherServlet名称& # 39;springmvc # 39;,

使用& lt; mvc:资源/祝辞元素,把映射的URI注册到SimpleUrlHandlerMapping的urlMap中,主要为映射的URI模式值,而价值为ResourceHttpRequestHandler,这样就巧妙的把对静态资源的访问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持类目录,jar包内静态资源的访问。

另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler。因为对静态uri的defaultHandler就是ResourceHttpRequestHandler,否则无法处理静态资源请求只

<强>方案三:使用& lt; mvc: default-servlet-handler/祝辞
Xml代码,,

& lt; mvc: default-servlet-handler/比;   

会把“/* *”;url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回。
DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet只

补充说明:多个HandlerMapping的执行顺序问题:
DefaultAnnotationHandlerMapping的订单属性值是:0

& lt; mvc:资源/,在自动注册的,SimpleUrlHandlerMapping的订单属性值是:,2147483646,

& lt; mvc: default-servlet-handler/祝辞自动注册,的SimpleUrlHandlerMapping 属的顺序性值是:,2147483647,

春天会先执行顺序值比较小的。当访问一个a.jpg图片文件时,先通过DefaultAnnotationHandlerMapping来找处理器,一定是找不到的,因为我们没有叫a.jpg的行动。然后再按顺序值升序找,由于最后一个SimpleUrlHandlerMapping是匹配“/* *”的,所以一定会匹配上,就可以响应图片。

,访问一个图片,还要走层层匹配。不知性能如何?

最后再说明一下,方案二,方案三在访问静态资源时,如果有匹配的(近似)总拦截器,就会走拦截器。如果你在拦截中实现权限检查,要注意过滤这些对静态文件的请求。

如何你的DispatcherServlet拦截*。做这样的URL后缀,就不存上述问题了。还是有后缀方便。

关于静态文件怎么在Spring MVC中进行访问就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

静态文件怎么在Spring MVC中进行访问