zoukankan      html  css  js  c++  java
  • 过滤静态资源

    回顾一下web.xml中配置DiepatcherServlet

    <!-- 配置DispatcherServlet -->                                                        
    <servlet>                                                                           
        <servlet-name>mvc</servlet-name>                                                
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>                                            
    </servlet>                                                                          
    <servlet-mapping>                                                                   
        <servlet-name>mvc</servlet-name>                                                
        <!-- 所有资源都要经Dispatcher处理 -->                                                    
        <url-pattern>/</url-pattern>                                                    
    </servlet-mapping>                                                                  

    配置好后,新建mvc-servlet.xml,在该xml文件中启动mvc注解,启动包的扫描,配置视图解析器等操作,即可实现SpringMVC注解方式的使用。

    但这里会出现一个问题,注意配置DispatcherServlet时url-pattern中的路径为/,表示所有的请求都要经DispatcherServlet截获,并且经处理器处理后在Controller中执行路径对应的方法;但是诸如媒体资源、JS文件、CSS文件等也带有路径的资源也会被当做请求路径处理,然而我们并没有在Controller中设置路径。

    比如我们在JSP中想显示一幅图片:

    <img alt="加载失败" src="images/1.jpg">

    如果配置了上面的DispatcherServlet,这时就会报警告信息:

    警告: No mapping found for HTTP request with URI [/web02/images/1.jpg] in DispatcherServlet with name 'mvc'

     因此我们需要将媒体资源、js文件、css文件等静态资源过滤掉。下面介绍几种方法:

    (一)在mvc-servlet.xml文件中添加

    <!-- 过滤静态资源 -->                                              
    <mvc:default-servlet-handler/>

    即可过滤掉静态资源,该标签有个默认参数default-servlet-name="default",该参数指定了一个名为default的servlet,该servlet在tomcat发布位置的conf目录的web.xml(该xml文件作用于所有的web项目,类似于Java中的全局变量。所以在单个项目的xml文件中也可以引用该default servlet)文件中找到,这里引述该servlet的注释:

      <!-- The default servlet for all web applications, that serves static     -->
      <!-- resources.  It processes all requests that are not mapped to other   -->
      <!-- servlets with servlet mappings (defined either here or in your own   -->
      <!-- web.xml file).                                                       -->

    可见default servlet就是用来过滤静态资源的。

    (二)在web.xml中添加

    <!-- 过滤静态资源 -->                         
    <servlet-mapping>                       
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>    
    </servlet-mapping>                      

    这里的uer-pattern可设置多个,每个对应一个格式的静态资源。

    (三)在mvc-servlet.xml文件中添加:

    <!-- 过滤静态资源 -->                                                       
    
    <mvc:resources location="/WEB-INF/images/" mapping="/images/**"/>     
    <mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>             

    当发现标签中有/images/为前缀的路径,解析器就将/images/替换为/WEB-INF/images/寻找资源。但浏览器中的资源路径还是mapping中的路径。

  • 相关阅读:
    linux下php环境的装配以及php storm的链接
    p4 : a problem about "./behavioral-model"
    p4factory下 targets/basic_rout
    P4安装
    第二次结对编程作业——毕业导师智能匹配
    初识GIT
    结对项目之需求分析与原型设计
    调研《构建之法》指导下的全国高校的历届软工实践作品、全国互联网+竞赛、物联网竞赛等各类全国性大学生信息化相关的竞赛平台的历届作品及其看法
    SDN 收集一下最近的资料
    软件工程的实践项目课程的自我目标
  • 原文地址:https://www.cnblogs.com/qingyaxuan/p/6508492.html
Copyright © 2011-2022 走看看