servlet必知细节(三)-- DefaultServlet

xiaoxiao2021-02-28  85

servlet必知细节(三)-- 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

[html] view plain copy <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读取操作返回给客户端。

转载请注明原文地址: https://www.6miu.com/read-55546.html

最新回复(0)