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

点击上方 "编程技术圈"关注, 星标或置顶一起成长

后台回复“大礼包”有惊喜礼包!

日英文

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

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

每日掏心话

有时候,我们不得不坚强,于是乎,在假装坚强中,就真的越来越坚强。
责编:乐乐 | 来自:歪桃链接:blog.csdn.net/m0_37892044/article/details/107963187

编程技术圈(ID:study_tech)第 1274 次推文

往日回顾:Windows 11 一夜全网曝光!附下载+激活

     

   正文   



当我们开始接触到SpringBoot项目的时候,我们特别惊讶,为什么没有了tomcat服务器,web项目还能跑起来。为什么只用了一个main方法就能讲一个web项目跑起来。学习了这篇文章你就能明白了。
1.发现内置Tomcat打开一个SpringBoot项目,我们发现,有tomcat的依赖
接下来让我们把tomcat的依赖找到
首先找到spring-boot-starter-web
点进去之后我们看到他用的是2.1.0版本,我们继续点击去
果然在里面找到tomcat的依赖,我们继续点进去
这是我们我们就能看到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:IndexServletpublic 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的映射
当我们访问这个servlet的时候,访问地址应该是:ip:<端口>/<tomcat上下文>/index
搜索公众号后端架构师后台回复“架构整洁”,获取一份惊喜礼包。
但是,但是,但是tomcat和web.xml没了,怎么配置?简单,没有我们就用main方法来创建一个tomcat。
5.创建一个tomcat5.1.定义servlet配置参数我们先定义几个servlet的配置参数:servlet的名字,servlet的映射
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.xml和META-INF/context.xml都将被正常处理。
Context addWebapp(String contextPath, String docBase) throws ServletException
web应用资源添加到此Web应用程序
void addPreResources(WebResourceSet webResourceSet)
5.3.创建tomcat并且添加servletpublic 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端口启动。
并且在此目录下生成了tomcat.8080文件夹
5.5.访问IndexServlet请求地址:ip:<端口>/<tomcat上下文>/index
请求地址:127.0.0.1:8080/demosevlet/index

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

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

欢迎加入后端架构师交流群,在后台回复“学习”即可。

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。
别找了,想获取史上最简单的Java大厂面试题学习资料
扫下方二维码回复「面试」就好了


猜你还想看
阿里、腾讯、百度、华为、京东最新面试题汇集
Stack Overflow被收购了,以后要付费“抄代码”?

哈哈哈哈,16 岁高中生开发「粤语编程」项目,在 GitHub 火了!
稳的一比,鸿蒙系统霸榜Github!

嘿,你在看吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值