阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

通过Tomcat自身实现简单的动静分离

152次阅读
没有评论

共计 2788 个字符,预计需要花费 7 分钟才能阅读完成。

一般的动静分类会使用 Apache+tomcat 或者 Nginx+tomcat 的方式进行实现,Nginx+tomcat 的方式配置较为简单,而且 Nginx 处理并发性能也更强;此处仅使用 tomcat 进行简单的动静分离处理。

tomcat、jboss、jetty 等容器提供了一个默认的 servlet:default,该 servlet 将静态资源的映射从 / 改为 /static,该 servlet 在 jboss 中的定义位置为:${jboss_home}/server/default/deployers/jbossweb.deployer/web.xml;在 tomcat 中的定义位置:${tomcat_home}/conf/web.xml。

默认的 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 启动时被装载,目录列表可被使用,日志调试功能被关掉。

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>

以此来实现简单的动静分离。

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5 下安装 Tomcat  http://www.linuxidc.com/Linux/2015-01/111415.htm 

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-09/123394.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2788字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中