SpringMVC静态资源访问问题

刚开始使用springmvc,出现了各种意想不到的问题。今天遇到了一个:在springmvc下静态资源无法被前端访问到,出现这种问题的原因如下:

在web.xml中配置springmvc的DispatcherServlet一般如下:

	<servlet>
		<servlet-name>SpringMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath*:spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
		<async-supported>true</async-supported>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringMVC</servlet-name>
		
		<url-pattern>/</url-pattern>
	</servlet-mapping>
如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括在这里讨论的静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误。

 解决的办法有两个:

1.在web.xml 中配置默认的servlet,具体方法如下:

<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 >
	<servlet-mapping >
		<servlet-name >default </servlet-name >             
		<url-pattern >*.png</url-pattern>   	     
	</servlet-mapping >
	<servlet-mapping >
		<servlet-name >default </servlet-name >             
		<url-pattern >*.woff</url-pattern>   		     
	</servlet-mapping >
	<servlet-mapping >
		<servlet-name >default </servlet-name >             
		<url-pattern >*.ttf</url-pattern>   		     
	</servlet-mapping >
	<servlet-mapping >
		<servlet-name >default </servlet-name >             
		<url-pattern >*.jpg</url-pattern>   		     
	</servlet-mapping >
根据请求文件的不同配置不同的后缀名。

注意:这种配置方式必须加载DispatcherServlet的配置之前,意思也就是在springmvc启动之前将静态资源的请求处理交给web容器来处理。

2.在springmvc-Servlet.xml中加入以下的配置:

 <mvc:resources location="/assets/" mapping="/assets/**"></mvc:resources>
解释:这段配置即配置静态资源的请求及路径对应的资源mapping表示请求的路径,location表示请求所对应的资源。也可以配置的更加详细:

  1.     <mvc:resources mapping="/javascript/**" location="/static_resources/javascript/"/>  
  2.     <mvc:resources mapping="/styles/**" location="/static_resources/css/"/>  
  3.     <mvc:resources mapping="/images/**" location="/static_resources/images/"/>  
建议将静态资源的请求路径和实际路径写成一样。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值