springMVC静态资源访问

本文介绍在SpringMVC框架下如何配置处理静态资源,避免404错误。提供了三种解决方案:通过web.xml配置defaultServlet,spring-servlet.xml中使用<mvc:resources>配置静态资源路径,及启用<mvc:default-servlet-handler/>让默认Servlet处理静态资源请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在spring mvc框架中为了使URL更符合RESTful风格,通常在web.xml中会配置spring框架servlet 的 url 拦截为 “/” ,也就是拦截所有资源的url请求,包括静态的资源.css, .html, .htm, .jpg, .js, .png … 等等。但如果不对静态资源访问处理的话,将会出现404错误,所以有了对应servlet的url拦截为“/”的时候,对静态资源访问不应该经过servlet拦截的问题处理(如果 servlet-mapping 的 url-pattern 为 “*.do”,就是只拦截有一定后缀的url,那么就不会有静态资源访问的问题了。)

有以下三种方法:

1.在web.xml中配置多个defaultServlet来处理静态文件,要写在DispatcherServlet的前面, 让defaultServlet先拦截

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

2.在spring-servlet.xml中配置

<mvc:resources mapping="/static/**" location="/static/" />

这种方式可以指定你的静态资源在你项目中的任何位置,包括在jar 里面,因为 配置中的 location 可以配置成 classpath:/com/ctx/…. 的形式

3.在spring-servlet.xml中配置

<mvc:default-servlet-handler/> 

在spring-servlet.xml中配置后,会在springMVC上下文中定义个
org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。

一般Web应用服务器(tomcat)默认的Servlet名称是”default”,因此DefaultServletHttpRequestHandler可以找到它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值