解决springMVC 跳转js css图片等静态资源无法加载的问题

作者:TheBetterMe 时间:2022-04-13 04:06:51 

web.xml中


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>

会导致页面引用的JS CSS发生找不到的错误 ,以下有两种方式解决问题,仅供参考:

方法一:在web.xml中添加


<servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>*.css</url-pattern>
 </servlet-mapping>

<servlet-mapping>
 <servlet-name>default</servlet-name>
 <url-pattern>*.gif</url-pattern>
</servlet-mapping>

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

指明对于如上资源文件不采用spring的过滤器

关于default是tomcat配置的一个servlet,“DefaultServlet被定义在CATALINAHOME/conf/web.xml中,配置文件中被定义的东西会在Tomcat启动的时候被加载,对所有的webapp都有效。DefaultServlet在Tomcat中主要是做目录列表(DirectoryListing)用指明对于如上资源文件不采用spring的过滤器关于default是tomcat配置的一个servlet,“DefaultServlet被定义在CATALINA_HOME/conf/web.xml中,配置文件中被定义的东西会在Tomcat启动的时候 被加载,对所有的webapp都有效。DefaultServlet在Tomcat中主要是做目录列表(Directory Listing)用指明对于如上资源文件不采用spring的过滤器

关于default是tomcat配置的一个servlet,“DefaultServlet被定义在$CATALINA_HOME/conf/web.xml中,配置文件中被定义的东西会在Tomcat启动的时候 被加载,对所有的webapp都有效。DefaultServlet在Tomcat中主要是做目录列表(Directory Listing)用


<servlet>
  <servlet-name>default</servlet-name>
  <servlet-class>
  org.apache.catalina.servlets.DefaultServlet
  </servlet-class>
  <init-param>
   <param-name>debug</param-name>
   <param-value>0</param-value>
  </init-param>
  <init-param>
   <param-name>listings</param-name>
   <param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>

...

<servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>/</url-pattern>
 </servlet-mapping>

有一些参数可以控制DefaultServlet的行为。此外,当请求的URL是/的时候, 也就是没有匹配的时候,就会触发这个DefaultServlet。

方法二:使用spring mvc 的 resources 注解 用来处理静态文件

spring mvc 的< mvc:resources mapping=”” location=”“>标签是在spring3.0.4出现的,主要是用来进行静态资源的访问。在spring3.0.4出来的时候spring还没有更新其schema所以在配置文件中有可能找不到< mvc:resources >标签,这个问题在spring3.0.5中已经解决,而且网上也有很多其他的解决方案,我在这里就不记录了。

首先使用spring mvc需要配置其使用的servlet.在web.xml中:

有一些参数可以控制DefaultServlet的行为。此外,当请求的URL是/的时候, 也就是没有匹配的时候,就会触发这个DefaultServlet。


<servlet>  
<servlet-name>springMVC</servlet-name>  
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
<load-on-startup>1</load-on-startup>  
</servlet>  

<servlet-mapping>  
 <servlet-name>springMVC</servlet-name>  
 <url-pattern>/</url-pattern>  
</servlet-mapping>

这是会影响到静态资源文件的获取,这样就需要有这个标签来帮你分类完成获取静态资源的责任。

所以在springMVC-servlet.xml文件中加入如下代码


<?xml version="1.0" encoding="UTF-8"?>  
 <beans xmlns="http://www.springframework.org/schema/beans"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xmlns:mvc="http://www.springframework.org/schema/mvc"  
  xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  

<mvc:resources mapping="/javascript/**"
  location="/static_resources/javascript/"/>  
  <mvc:resources mapping="/styles/**"
  location="/static_resources/css/"/>  
  <mvc:resources mapping="/images/**"
  location="/static_resources/images/"/>  
  <mvc:default-servlet-handler />

这里可以看到我所有的页面引用到/styles/**的资源都从/static_resources/css里面进行查找。

根据以上的两种方法,就可以访问到站点的静态资源了。

来源:http://www.th7.cn/web/html-css/201411/69506.shtml

标签:springMVC,静态资源,无法加载,跳转,js,css图片
0
投稿

猜你喜欢

  • Java函数式编程(十二):监控文件修改

    2022-08-11 10:21:01
  • Java实现监听文件变化的三种方案详解

    2022-07-18 11:20:34
  • springmvc+shiro自定义过滤器的实现代码

    2021-08-11 21:23:11
  • SpringBoot整合WebSocket的客户端和服务端的实现代码

    2023-03-30 04:19:07
  • Mybatis Plus中的流式查询案例

    2023-08-18 16:35:13
  • Activiti常用类简介

    2021-07-02 21:58:13
  • Java三种IO模型原理实例详解

    2022-05-20 02:36:37
  • Java实现的日期处理类完整实例

    2023-12-08 00:16:10
  • UnityUI中绘制线状统计图

    2022-12-03 14:30:43
  • SpringBoot自定义Starter实现流程详解

    2022-05-19 07:03:25
  • Java中定时器Timer致命缺点案例详解

    2022-08-27 08:38:45
  • Android屏蔽软键盘并且显示光标的实例详解

    2023-01-16 16:54:20
  • java实现把对象数组通过excel方式导出的功能

    2022-07-01 13:20:09
  • 使用@Order控制配置类/AOP/方法/字段的加载顺序详解

    2023-09-05 17:34:35
  • java动态导出excel压缩成zip下载的方法

    2022-07-13 07:29:27
  • C#实现策略模式

    2022-02-09 17:19:01
  • 使用SpringMVC访问Controller接口返回400BadRequest

    2023-06-05 00:14:01
  • SpringMVC接收多个对象的4种方法

    2023-11-23 06:24:18
  • 微信公众平台开发教程(三) 基础框架搭建

    2022-08-12 00:33:50
  • 详解Elasticsearch如何实现简单的脚本排序

    2022-03-13 13:17:50
  • asp之家 软件编程 m.aspxhome.com