1.嵌入式Tomcat
<dependency> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </dependency>
简单的一个servlet
public class DemoServlet extends HttpServlet {
private static final long serialVersionUID = 1L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.println(" " ); out.println(" " ); out.println("
"
); out.println(" "); out.println(""); out.println(" " ); out.println("嵌入式tomcat
"); out.println(""); out.println(""); } }
EmbeddedTomcatServer 嵌入式Tomat入口:
public class EmbeddedTomcatServer {
public static void main(String[] args) throws Exception {
//把目录的绝对的路径获取到 String classpath = System.getProperty("user.dir"); System.out.println(classpath); //new一个Tomcat Tomcat tomcat = new Tomcat(); //插件是6或者6以前的 //Embbedded //设置Tomcat的端口 //tomcat.setPort(9090); Connector connector = tomcat.getConnector(); connector.setPort(9091); //设置Host Host host = tomcat.getHost(); //我们会根据xml配置文件来 host.setName("localhost"); host.setAppBase("webapps"); //前面的那个步骤只是把Tomcat起起来了,但是没啥东西 //要把class加载进来,把启动的工程加入进来了 Context context = tomcat.addContext(host, "/", classpath); if (context instanceof StandardContext) {
StandardContext standardContext = (StandardContext) context; standardContext.setDefaultContextXml("E:\\apache-tomcat-8.5.51\\conf\\web.xml"); //我们要把Servlet设置进去 Wrapper wrapper = tomcat.addServlet("/", "DemoServlet", new DemoServlet()); wrapper.addMapping("/embeddedTomcat"); } //Tomcat跑起来 tomcat.start(); //强制Tomcat server等待,避免main线程执行结束后关闭 tomcat.getServer().await(); } }
运行结果:

EmbeddedTomcatServer类作为程序的入口,代码逻辑其实就是通过tomcat提供的外部接口类在配置server.xml这个文件;要了解这个类的每个配置步骤,可能需要对tomcat相关组件有一定的理解,如下所示,对于每个组件的作用,博主画了一个图进行简单的介绍

对于Tomcat源码的构建,有兴趣的童鞋可参考这篇文章:https://www.jb51.net/article/95120.htm
2. Spring内嵌Tomcat原理剖析
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213691.html原文链接:https://javaforall.net
