教你用Java的方式创建一个自己的Tomcat容器
当我们开始接触到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的映射
当我们访问这个servlet的时候,访问地址应该是:ip:<端口>/<tomcat上下文>/index
但是,但是,但是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 ServletExceptionweb应用资源添加到此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.8080文件夹
5.5.访问IndexServlet
请求地址:ip:<端口>/<tomcat上下文>/index
请求地址:127.0.0.1:8080/demosevlet/index