这篇文章将为大家详细讲解有关静态文件怎么在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中进行访问就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。