vlambda博客
学习文章列表

教你用Java的方式创建一个自己的Tomcat容器

顶级架构师
顶级架构师,专注分享架构技术干货,企业架构、系统架构、网站架构、大规模分布式架构、高可用架构等架构讨论,以及结合互联网技术的架构调整。欢迎有想法、乐于分享的架构师朋友们交流学习。
1篇原创内容
Official Account
点击上方 " "关注, 星标或置顶一起成长
后台回复“ 大礼包 ”有惊喜礼包!

日英文

If I was simple in the mind, everything would be fine. 

如果不是我想太多,一切都会好好的。

每日掏心话

有时候,我们不得不坚强,于是乎,在假装坚强中,就真的越来越坚强。
 
   
   
 

责编:乐乐 | 来自歪桃

链接:blog.csdn.net/m0_37892044/article/details/107963187


往日回顾:


     

   正文   

  
    
    
  
        
          
          
        

当我们开始接触到SpringBoot项目的时候,我们特别惊讶,为什么没有了tomcat服务器,web项目还能跑起来。为什么只用了一个main方法就能讲一个web项目跑起来。学习了这篇文章你就能明白了。

1.发现内置Tomcat

打开一个SpringBoot项目,我们发现,有tomcat的依赖

教你用Java的方式创建一个自己的Tomcat容器

接下来让我们把tomcat的依赖找到

首先找到spring-boot-starter-web

教你用Java的方式创建一个自己的Tomcat容器

点进去之后我们看到他用的是2.1.0版本,我们继续点击去

教你用Java的方式创建一个自己的Tomcat容器

果然在里面找到tomcat的依赖,我们继续点进去

教你用Java的方式创建一个自己的Tomcat容器

这是我们我们就能看到tomcat的相关依赖了。

教你用Java的方式创建一个自己的Tomcat容器

因此我们是可以使用Java提供内置Tomcat容器框架,使用Java语言操作Tomcat容器。这样我们也能创建一个maven项目,并且内置一个tomcat容器了。

2.创建一个maven项目

3.添加tomcat依赖

这里我们使用8.5版本的tomcat

<!--Java语言操作tomcat -->
<dependency>
 <groupId>org.apache.tomcat.embed</groupId>
 <artifactId>tomcat-embed-core</artifactId>
 <version>8.5.16</version>
</dependency>

4.创建一个servlet:IndexServlet

public class IndexServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  doPost(req, resp);
 }
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  resp.getWriter().print("IndexServletIndexServletIndexServletIndexServletIndexServletIndexServlet");
 }
}

我们先看看传统的Servlet需要怎么配置,我们需要在WEB-INF目录下的web.xml文件中,配置sevlet的映射

教你用Java的方式创建一个自己的Tomcat容器

但是,但是,但是tomcat和web.xml没了,怎么配置?简单,没有我们就用main方法来创建一个tomcat。

5.创建一个tomcat

5.1.定义servlet配置参数

我们先定义几个servlet的配置参数:servlet的名字,servlet的映射

教你用Java的方式创建一个自己的Tomcat容器

5.2.内置Tomcat常用API介绍

org.apache.catalina.startup.Tomcat

创建tomcat

Tomcat tomcatServer = new Tomcat();

设置tomcat端口

void setPort(int port);
void setPath(String path)

添加监听

void addLifecycleListener(LifecycleListener listener)

添加sevlet

Wrapper addServlet(String contextPath,String servletName,Servlet servlet)

添加sevlet映射

void addServletMappingDecoded(String pattern, String name)

启动tomcat

void start() throws LifecycleException

获取服务

Server getServer()

服务异步

tomcatServer.getServer().await()

将Web应用程序添加到Tomcat的webapps目录中,等效的默认web.xml将应用于该Web应用程序,并且与该应用程序打包的任何WEB-INF/web.xmlMETA-INF/context.xml都将被正常处理。

Context addWebapp(String contextPath, String docBase) throws ServletException

web应用资源添加到此Web应用程序

void addPreResources(WebResourceSet webResourceSet)

5.3.创建tomcat并且添加servlet

public class TestTomcat {
 private static int PORT = 8080;
 private static String CONTEX_PATH = "/demosevlet";
 private static String SERVLET_NAME = "index";
 private static String MAPPING = "index";

 public static void main(String[] args) throws LifecycleException, InterruptedException {
  System.out.println("开始启动tomcat");
  Tomcat tomcatServer = new Tomcat();
  //设置tomcat端口
  tomcatServer.setPort(PORT);
  //此tomcat端口是否自动部署
  tomcatServer.getHost().setAutoDeploy(false);
  //创建一个web应用程序
  StandardContext standardContex = new StandardContext();
  //设置web应用程序的上下文地址
  standardContex.setPath(CONTEX_PATH);
  //添加web应用程序的监听
  standardContex.addLifecycleListener(new FixContextListener());
  //将web应用程序添加到服务器中
  tomcatServer.getHost().addChild(standardContex);
  //配置servelt和映射
  tomcatServer.addServlet(CONTEX_PATH, SERVLET_NAME, new IndexServlet());
  standardContex.addServletMappingDecoded("/"+MAPPING, SERVLET_NAME);
  //启动tomcat
  tomcatServer.start();
  System.out.println("启动tomcat完毕");
  //开启异步服务,接收请求
  tomcatServer.getServer().await();
 }
}

5.4.启动main方法创建tomcat

启动结果如下,我们看到tomcat以8080端口启动。

教你用Java的方式创建一个自己的Tomcat容器

并且在此目录下生成了tomcat.8080文件夹

教你用Java的方式创建一个自己的Tomcat容器

5.5.访问IndexServlet

教你用Java的方式创建一个自己的Tomcat容器

你还有什么想要补充的吗?


PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

   
     
     
   

欢迎加入后端架构师,在后台回复“”即可。

教你用Java的方式创建一个自己的Tomcat容器

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。

教你用Java的方式创建一个自己的Tomcat容器

别找了,想获取史上最简单的Java大厂面试题学习资料

扫下方二维码回复面试就好了

猜你还想看



嘿,你在看吗