zoukankan      html  css  js  c++  java
  • springmvc之静态资源访问不到 -记一次惨痛的经历

    springmvc之静态资源访问不到 -记一次惨痛的经历

    问题描述:项目正常启动,可以访问页面,但是无法找到静态资源文件,如css,js等文件资源。

    控制台:

    $ 未定义

    页面:

    GET http://localhost:8080/SpringMvc16_20/js/jquery,min.js net::ERR_ABORTED 404 (Not Found)

    问题原因:是web.xml下对spring的DispatcherServlet请求url映射的配置,原配置如下:

    <!DOCTYPE web-app PUBLIC
            "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
            "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
        <display-name>Archetype Created Web Application</display-name>
        <servlet>
            <servlet-name>dispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc.xml</param-value>
            </init-param>
            <!--沃妮马 忘了写这一行-->
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>dispatcherServlet</servlet-name>
            <url-pattern>/</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>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.ico</url-pattern>
        </servlet-mapping>-->
    
    
        <!--解决中文乱码-->
        <filter>
            <filter-name>characterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>characterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
    </web-app>
    
    

    分析原因:/把所有的请求都交给spring去处理了,

    1这一行忘记写了,导致怎么配置都不生效。

    1. 解决方案一

    修改web.xml

    <servlet-mapping>
            <servlet-name>spring</servlet-name>
            <url-pattern>*.do</url-pattern>
     </servlet-mapping>
    

    url需要以.do结尾

    1. 解决方案二

    修改springmvc.xml

    <mvc:resources location="/images/" mapping="/images/**"/>
    <mvc:resources location="/css/" mapping="/css/**"/>
    <mvc:resources location="/js/" mapping="/js/**"/>
    

    需要spring3+ , 这个配置告诉spring 静态资源的处理方式

    1. 解决方案三

    修改web.xml

    <servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.js</url-pattern> 
    <url-pattern>*.css</url-pattern> 
    <url-pattern>/assets/*"</url-pattern> 
    <url-pattern>/images/*</url-pattern> 
    </servlet-mapping>
    
    1. 解决方案四

    修改springmvc.xml

    <mvc:default-servlet-handler/>
    
  • 相关阅读:
    sql 笔记之一
    js的Location
    VS无法使用.XXXX附加到程序
    C#遍历对象的方法
    解决tomcat启动时中文乱码问题。
    动态sql foreach 循环报错问题
    java跳过https证书直接请求工具类
    安装svn报2503错误处理方法
    oracle常用的一些查询命令
    Oracle11g安装过程中忘记进行口令配置
  • 原文地址:https://www.cnblogs.com/wenqiangit/p/11309348.html
Copyright © 2011-2022 走看看