gogozz

导航

关于web项目中静态资源加载不了的一些解决思路

问题的产生:

<!--springMVC前端控制器加载-->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--contextConfigLocation配置SpringMVC加载的配置文件(配置处理器,映射器等等)
    如果不配置contextConfigLocation,默认加载的是:/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml)
    -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/springmvc.xml</param-value>
    </init-param>
  </servlet>
    
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

在使用springmvc的DispatcherServlet去拦截所有的URL的时候,会将http://localhost:8080/blog/css/bootstrap.min.css这样的静态资源请求发送到controller层的方法里面处理,通过@RequestMapping注释的筛选后,因为没能匹配通过,所有页面加载不了。

这是别的文章看到的,如果你的DispatcherServlet拦截 *.do或者*.action这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了。

其中解决方法在网上一般都能查到,修改或添加配置就可以,一般是三种解决方法,下面的俩个地址已经写得非常清楚了:

https://blog.csdn.net/u013126379/article/details/52087308

https://blog.csdn.net/qq_30546099/article/details/71404574

 

但是我在用了上面的三个方法之后仍然得不到问题的解决,于是想到可能在JSP页面上引入静态资源的相对路径写错了,于是用了绝对路径,最终顺利解决问题。步骤如下:

一开始是图中红色圈中的格式,用CRTL+左键,会有引用,我以为没有错,后来在POM添加了,

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>

在相对路径前面加了${pageContext.request.contextPath},问题得到解决。

posted on 2018-04-01 22:10  stfzhuang  阅读(6907)  评论(0编辑  收藏  举报