欢迎光临Software MyZone,有问题可留言或到站点论坛发帖,争取第一时间帮忙解决 || 站点论坛:火龙论坛 || 淘宝小店:应小心的易淘屋 【欢迎大家提建设性意见】

DefaultServlet

欢迎热爱编程的朋友们参与到cocos2d-x编程中,为了给大家提供良好的交流环境,网站以开启QQ群
Software MyZone:66202765(群号,欢迎加入,若满,请加1群)
Software MyZone 1群(2dx):286504621
Software MyZone 2群(山东):204954191
Software MyZone【Java群】:162865493
【加群请写:Software MyZone或者是firedragonpzy】
淘宝店:【应小心的易淘屋】初次开店,大家多多支持……
群论坛:【火龙论坛】正试运营阶段,欢迎大家多提些建设性意见……
群问答:【火龙问答】正试运营阶段,欢迎大家多提些建设性意见……
摘自:http://blog.csdn.net/zdhcumt/article/details/6867264

我的digitalocean推广链接:https://www.digitalocean.com/?refcode=65dfdb158f1a,Everyone you refer gets $10 in credit,从此链接注册,你将获得10美元。

tomcat、jboss、jetty等容器提供了一个默认的servlet:default,该servlet将静态资源的映射从/改为 /static,该servlet在jboss中的定义位置为:${jboss_home}/server/default/deployers /jbossweb.deployer/web.xml;在tomcat中的定义位置:${tomcat_home}/conf/web.xml。那么 DefaultServlet究竟是做什么用的呢?我们先看tomcat官方给出的解释:

 

简介

这里讨论不同的操纵默认servlet的方法。讨论的话题有:

什么是DefaultServlet

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

它在什么地方被声明的?

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


<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启动时被装载,目录列表可被使用,日志调试功能被关掉。(笔者备注:在Tomcat 5.5.13之后的版本,已经将listings默认设置为false,默认是禁止目录列表了 参见http://issues.apache.org/bugzilla/show_bug.cgi?id=37150)

 

 

我能做什么样的改变?

DefaultServlet允许以下初始化参数:

debug 日志级别。如果你不是tomcat开发人员,这对你没有什么用处。目前,有用的值是0, 1, 11, 1000。
listings 如果没有欢迎文件,要不要显示目录列表?值可以是truefalse
欢迎文件是servlet api的一部分。
警告:列表显示包含太多记录的目录是非常消耗服务性能的 . 大量请求访问大目录列表会吃掉服务器大部分的资源.
readmeFile 如果允许目录列表,可能有一个readme文件和这个列表在一起。这个文件包含HTML被插入。默认值是null。
globalXsltFile 如果你希望定制你的目录列表显示效果,你可以使用一个XSL转换(transformation)。这个值是一个可用 于所有目录列表的绝对路径文件名。它可以被每个webapp 重新自定义使用,或者通过在你局部webapp的web.xml文件里声明默认servlet取消使用。这个xml文件的格式在下面有显示。
localXsltFile 你还可以在每个目录通过配置localXsltFile定制你的目录列表。它应该是在产生列表的目录里的一个相对路径文件名。它覆盖globalXsltFile。如果这个值存在,但是文件不存在,那么就使用globalXsltFile。如果globalXsltFile也不存在,那么默认的目录列表就会被显示出来。
input 在读取用于服务的资源时的输入缓冲容量(in bytes)。[2048]
output 在读取用于服务的资源时的输出缓冲容量(in bytes)。[2048]
readonly 这个上下文否”read only”,因此如PUT 和 DELETE的HTTP命令将被拒绝执行? [true]
fileEncoding 文件编码用于读取静态资源时. [平台默认值]
sendfileSize 如果连接器支持 sendfile, 这个参数表示sendfile将用到的最小文件大小(以KB为单位) . 使用负数 可以禁止使用sendfile. [48]

 

官方文档还对如何定制目录列表做了说明,这里不再研究

那么在实际应当当中,我们的应用的一些静态资源就可以交给该servlet去处理,以减轻服务器压力,节省资源。比如我们把对静态资源的访问路径从 /变更为/static,如访问http://localhot/style.css改成http://localhost/static /style.css,然后再应用的web.xml文件中增加如下配置代码:


<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>