2019独角兽企业重金招聘Python工程师标准>>>

一、ContainerServlet 类。
org.apache.catalina.ContainerServlet  是一个接口类,它可以访问Catalina的内部功能,它有Catalina被类加载器加载,而不是我们的WebApplication类加载器。它的Setter方法在这个Servlet的新的实例被放进Service时被执行。
    我们使用它获取 Engine, Host,  Context等内部对象。要使用这个类必需在Context配置中使 privileged="true" 如下:

<Context docBase="D:/upload" path="/upload" privileged="true"/>

要获取Tomcat的访问控制权限,我们需要一个实现org.apache.catalina.ContainerServlet接口的Servlet,该接口有两个方法,getWrapper和setWrapper,Tomcat启动的时候,会使用setWrapper方法注入org.apache.catalina.Wrapper接口的一个实例,通过这个接口,我们可以获取到Tomcat中所有的容器对象,包括Server,Service,Engine,Host和Context,和server.xml配置文件的标签。
例子:
测试类:

package com.web.servlet;import javax.servlet.http.HttpServlet;import org.apache.catalina.Container;
import org.apache.catalina.ContainerServlet;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.Wrapper;/*** @author WallenHeng* @date 2014-5-4 下午2:23:42*/public class TestServlet extends HttpServlet implements ContainerServlet {/*** */private static final long serialVersionUID = 1L;private Wrapper wrap;private Context context = null;private Host host = null;private Engine engine = null;@Overridepublic Wrapper getWrapper() {System.out.println("getWrapper");return wrap;}@Overridepublic void setWrapper(Wrapper wrap) {System.out.println("setWrapper");this.wrap = wrap;System.out.println("wrap:" + this.wrap);if (this.wrap == null) {context = null;host = null;engine = null;} else {context = (Context) this.wrap.getParent();host = (Host) context.getParent();engine = (Engine) host.getParent();System.out.println("context:" + context + "\thost:" + host+ "\tengine:" + engine);Container[] hosts = engine.findChildren();System.out.println("hosts.length:" + hosts.length);System.out.println(context.getDocBase());Container[] contexts=host.findChildren();for (Container container : contexts) {if(container instanceof Context){Context c=(Context)container;if("/upload".equalsIgnoreCase(c.getPath())){System.out.println(c.getDocBase());}}}}}}

配置文件:

<servlet><servlet-name>TomcatContextServlet</servlet-name><servlet-class>com.web.servlet.TestServlet</servlet-class><load-on-startup>1</load-on-startup>
</servlet>

设置<load-on-startup>使这个Servlet在WebContainer初始化时加载,否则它将没有加载的机会,因为我们在应用中不会直接使用到这个Servlet。

load-on-startup 这个元素的含义是在服务器启动的时候就加载这个servlet(实例化并调用init()方法).这个元素中的可选内容必须为一个整数,表明了这个servlet被加载的先后顺序.当是一个负数时或者没有指定时,则表示服务器在该servlet被调用时才加载。当值为0或者大于0时,表示服务器在启动时就加载这个servlet.该容器肯定可以保证被标记为更小的整数的servlet比被标记为更大的整数的servlet更先被调用,还可已选择同样的load-on-start-up值来夹在servlets.

补充:正数的值越小,启动该servlet的优先级越高。

转载于:https://my.oschina.net/wallenheng/blog/233028

Tomcat 详解 一相关推荐

  1. 用idea建立jsp项目_用idea创建maven项目,配置tomcat详解

    用idea创建maven项目,配置tomcat详解,电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上 下面就直接开始看图啦: 这个我刚刚开始没注意细看,原来w ...

  2. java servlet dao_Java+MyEclipse+Tomcat 详解Servlet和DAO数据库增删改查操作(源码)

    [实例简介] 该资源主要参考自己的博客http://blog.csdn.net/eastmount/article/details/45936121 讲诉Java+MyEclipse+Tomcat 详 ...

  3. 用idea创建maven项目,配置tomcat详解

    以前用的开发工具是eclipse,虽然对idea有了解过,长时间不用都忘掉了,不知道你是不是也是这样呢 你电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上吧. ...

  4. centOS下安装tomcat详解

    本人是用的vmware上安装的centOS系统. 先去apache的tomcat官网上下载下来所需要的文件,网址为http://tomcat.apache.org/download-70.cgi 点击 ...

  5. Tomcat详解(下)

    配置监听端口 1.编辑配置文件 1 2 3 4 [root@plinuxos ~]# vim /usr/local/tomcat/conf/server.xml      <Connector  ...

  6. centos下部署tomcat详解

    2019独角兽企业重金招聘Python工程师标准>>> 这篇文章将介绍安装和基本配置Tomcat 8在CentOS6X Tomcat8实现jsp2.2和Servlet 3.0规范和大 ...

  7. lnmp构架——对tomcat详解

    tomcat的安装部署 安装jdk和tomcat tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ tar zxf apache-tomcat-7.0. ...

  8. Apache整合Tomcat详解系列(三)Apache性能调优

    一.总结前一天的学习 在前两天的学习中我们知道.了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构.这个架构是一个非常基础的J2ee工程上线布署时的一种架构.在 ...

  9. 【JavaEE WEB 开发】Tomcat 详解 Servlet 入门

    转载请注明出处 :  http://blog.csdn.net/shulianghan/article/details/47146817 一. Tomcat 下载安装配置 1. Tomcat 下载 T ...

最新文章

  1. Android中设置控件可见与不可见详解
  2. Web Storage
  3. 安卓开发30:AsyncTask的用法
  4. 和php工具箱一样的,将php工具箱或其它类似工具正确安装好,并写出安装步骤与注意事项...
  5. C#调用JAVA接口WSSE方式用WebClient方式
  6. 【转】使用Eclipse的代码追踪功能
  7. openwrt 挂载摄像头
  8. cdh 安装_CDH的介绍和部署
  9. 一分钟读懂java的super关键字
  10. 阿里云-对象存储 OSS > 开发指南 > 基本概念
  11. 考上985能改变命运吗_2021艺考生:文化课成绩一般,有机会考上985、211吗?
  12. ACS与目录服务器进行用户身份控制管理
  13. 扫雷游戏网页版_《我的世界》简单的两款小游戏 带你回味和同学在电脑课上的时光...
  14. 供应链运作参考模型(SCOR):一种用于改善供应链管理的模型
  15. Ubuntu Desktop LTS - 开机数字小键盘
  16. wcdma码片速率_码片速率 解释
  17. 基于smart_rtmp直播,最简单的部署手册
  18. 编译问题追踪 :高通驱动移植 <utils/Log.h>问题
  19. 安装memsql与将数据库从 MySQL 移植到 MemSQL
  20. 图解项目产品需求评审流程及详细的评审规范实例

热门文章

  1. 中山服务器维修点,中山存储服务器
  2. 奔跑吧linux内核_别了,Linux 的魔法时代!
  3. 小米6指主板图示_小米MIX2手机不开机,修过没修好,通病问题教你一坨锡就能搞定...
  4. 设计模式之依赖倒转原则
  5. java面试题二十六 多线程考题
  6. 支持 简体,繁体,英文的js日历控件
  7. 利用注释及自定义加密免杀Webshell
  8. 【算法与数据结构】堆排序是什么鬼?
  9. python pickle模块:数据序列化和反序列化
  10. 《剑指offer》和为s的连续正数序列