Tomcat 详解 一
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 详解 一相关推荐
- 用idea建立jsp项目_用idea创建maven项目,配置tomcat详解
用idea创建maven项目,配置tomcat详解,电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上 下面就直接开始看图啦: 这个我刚刚开始没注意细看,原来w ...
- java servlet dao_Java+MyEclipse+Tomcat 详解Servlet和DAO数据库增删改查操作(源码)
[实例简介] 该资源主要参考自己的博客http://blog.csdn.net/eastmount/article/details/45936121 讲诉Java+MyEclipse+Tomcat 详 ...
- 用idea创建maven项目,配置tomcat详解
以前用的开发工具是eclipse,虽然对idea有了解过,长时间不用都忘掉了,不知道你是不是也是这样呢 你电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上吧. ...
- centOS下安装tomcat详解
本人是用的vmware上安装的centOS系统. 先去apache的tomcat官网上下载下来所需要的文件,网址为http://tomcat.apache.org/download-70.cgi 点击 ...
- Tomcat详解(下)
配置监听端口 1.编辑配置文件 1 2 3 4 [root@plinuxos ~]# vim /usr/local/tomcat/conf/server.xml <Connector ...
- centos下部署tomcat详解
2019独角兽企业重金招聘Python工程师标准>>> 这篇文章将介绍安装和基本配置Tomcat 8在CentOS6X Tomcat8实现jsp2.2和Servlet 3.0规范和大 ...
- lnmp构架——对tomcat详解
tomcat的安装部署 安装jdk和tomcat tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ tar zxf apache-tomcat-7.0. ...
- Apache整合Tomcat详解系列(三)Apache性能调优
一.总结前一天的学习 在前两天的学习中我们知道.了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构.这个架构是一个非常基础的J2ee工程上线布署时的一种架构.在 ...
- 【JavaEE WEB 开发】Tomcat 详解 Servlet 入门
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/47146817 一. Tomcat 下载安装配置 1. Tomcat 下载 T ...
最新文章
- Android中设置控件可见与不可见详解
- Web Storage
- 安卓开发30:AsyncTask的用法
- 和php工具箱一样的,将php工具箱或其它类似工具正确安装好,并写出安装步骤与注意事项...
- C#调用JAVA接口WSSE方式用WebClient方式
- 【转】使用Eclipse的代码追踪功能
- openwrt 挂载摄像头
- cdh 安装_CDH的介绍和部署
- 一分钟读懂java的super关键字
- 阿里云-对象存储 OSS > 开发指南 > 基本概念
- 考上985能改变命运吗_2021艺考生:文化课成绩一般,有机会考上985、211吗?
- ACS与目录服务器进行用户身份控制管理
- 扫雷游戏网页版_《我的世界》简单的两款小游戏 带你回味和同学在电脑课上的时光...
- 供应链运作参考模型(SCOR):一种用于改善供应链管理的模型
- Ubuntu Desktop LTS - 开机数字小键盘
- wcdma码片速率_码片速率 解释
- 基于smart_rtmp直播,最简单的部署手册
- 编译问题追踪 :高通驱动移植 <utils/Log.h>问题
- 安装memsql与将数据库从 MySQL 移植到 MemSQL
- 图解项目产品需求评审流程及详细的评审规范实例