JavaWEB项⽬静态资源访问问题
springmvc选择题 今天碰到⼀个问题,SSM项⽬WEB-INF⽬录下的静态资源例如.css .js .font等⽂件⽆法访问。百度了⼀下,需要配置SpringMvc对访问静态资源的⽀持。
如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当成⼀个普通请求处理,因此不到对应处理器将导致错误。这可能是个历史性的问题。由于早期的Spring MVC不能很好地处理静态资源,所以在l中配置DispatcherServlet的请求映射,往往使⽤ *.do 、 *.xhtml等⽅式。这就决定了请求URL必须是⼀个带后缀的URL,⽽⽆法采⽤真正的REST风格的URL。
如何让Spring框架能够捕获所有URL的请求,同时⼜将静态资源的请求转由Web容器处理,是可将DispatcherServlet的请求映射配置为"/"的前提。由于REST是Spring3.0最重要的功能之⼀,所以Spring团队很看重静态资源处理这项任务,给出了堪称经典的两种解决⽅案。
⽅法⼀:采⽤<mvc:default-servlet-handler />
在l中配置<mvc:default-servlet-handler />后,会在Spring MVC上下⽂中定义⼀个
org.springframework.source.DefaultServletHttpRequestHandler,它会像⼀个检查员,对进
⼊DispatcherServlet的URL进⾏筛查,如果发现是静态资源的请求,就将该请求转由Web应⽤服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。
⼀般Web应⽤服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以到它。如果你所有的Web应⽤服务器的默认Servlet名称不是"default",则需要通过default-servlet-name属性显⽰指定:
<mvc:default-servlet-handler default-servlet-name="所使⽤的Web服务器默认使⽤的Servlet名称" />
采⽤这种⽅式的静态资源最好都放在webapp⽬录下,也就是WEB-INF的同级⽬录。更⽅便寻址,路径不会很长。./就代表了webapp⽬录。 ⽅法2.采⽤<mvc:resources />
暂时还未看懂,看懂了再来更新。。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论