教你用Java的方式创建一个自己的Tomcat容器
责编:乐乐 | 来自:歪桃
链接:blog.csdn.net/m0_37892044/article/details/107963187
往日回顾:
正文
当我们开始接触到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: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的映射
但是,但是,但是tomcat和web.xml没了,怎么配置?简单,没有我们就用main方法来创建一个tomcat。
5.创建一个tomcat
5.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并且添加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端口启动。
并且在此目录下生成了tomcat.8080文件夹
5.5.访问IndexServlet
你还有什么想要补充的吗?
PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!
欢迎加入后端架构师,在后台回复“”即可。
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。
别找了,想获取史上最简单的Java大厂面试题学习资料
扫下方二维码回复「面试」就好了
猜你还想看
嘿,你在看吗?