• DefaultServlet


     

    缺省servlet:org.apache.catalina.servlets.DefaultServlet,作用是处理其他servlet处理不到的请求

    我们知道,在我们工程的web.xml中,会配置servlet映射,但是有些访问无法找到映射,如一些静态图片,一些js文件等,那服务器是如何返回给客户端的呢?

    要回答上面的问题,我们必须详细了解下DefaultServlet,下面我们看tomcat的官方解释。

    1.什么是DefaultServlet?

    默认的servlet是既服务于静态资源又服务于目录列表(如果允许目录列表的话)的servlet。

    2.它被声明在哪里?

    它在$CATALINA_HOME/conf/web.xml中被全局声明。默认形式的声明是这样的: $CATALINA_HOME/conf/web.xml

    1. <servlet>  
    2.         <servlet-name>default</servlet-name>  
    3.         <servlet-class>  
    4.           org.apache.catalina.servlets.DefaultServlet  
    5.         </servlet-class>  
    6.         <init-param>  
    7.             <param-name>debug</param-name>  
    8.             <param-value>0</param-value>  
    9.         </init-param>  
    10.         <init-param>  
    11.             <param-name>listings</param-name>  
    12.             <param-value>true</param-value>  
    13.         </init-param>  
    14.         <load-on-startup>1</load-on-startup>  
    15.     </servlet>  
    16.   
    17. ...  
    18.   
    19.     <servlet-mapping>  
    20.         <servlet-name>default</servlet-name>  
    21.         <url-pattern>/</url-pattern>  
    22.     </servlet-mapping>  
    <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>

    因此在默认的情况下,默认servlet在webapp启动时被装载,目录列表不可用,日志调试功能被关掉。

    当访问的资源在工程的web.xml中没有Servlet映射时,我们如何加载资源的呢?

    其实这就是一个io操作,DefaultServlet先根据客户端的访问路径,获取资源路径,然后找到服务器上资源绝对路径,再判断是否存在,如果不存在,则返回404或做其他处理,如果存在,则进行一个io读取操作返回给客户端。

  • 相关阅读:
    Spring Cloud Alibaba Sentinel 服务限流降级
    干掉 Feign,Spring Cloud Square 组件发布
    Linux命令之free
    Java 导入excel获取表格信息
    [转] 阿里云服务器 liunx 安装配置 redis
    tomcat 动态日志查看
    linux服务器只部署了2个项目,却时常内存占满的问题解决路程
    电脑换了,重装了,配置了环境,然后重新导入项目, 结果爆红
    IDEA External libraries 不显示Maven中引入的repository
    linux 手动释放buff/cache
  • 原文地址:https://www.cnblogs.com/firstdream/p/9087739.html
Copyright © 2020-2023  润新知