当前位置: 首页 > 科技观察

教你用Java创建自己的Tomcat容器

时间:2023-03-16 16:21:42 科技观察

刚开始接触SpringBoot项目的时候,特别奇怪为什么web项目没有tomcat服务器也能跑起来。为什么一个web项目只用一个main方法就可以跑起来。看完这篇文章你就明白了。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版本的tomcatorg.apache.tomcat.embedtomcat-embed-core8.5.164.创建一个servlet:IndexServletpublicclassIndexServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;@OverrideprotectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOQ{doPost);}@overrideProtectionVoidDopost(httpsevletrequestreq,httpservletResponseresp)throwsservletexpection,ioexception{resp.getWriter()print()print(“indexSssSservSservletIndExsSssSssSssSssSsSsSsSssSsSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSssSerletLetletsleteTextexletslet}}web.xml文件,配置sevlet映射。当我们访问这个servlet时,访问地址应该是:ip://index但是,但是,但是tomcat和web.xml都没有了,怎么配置呢?很简单,不用我们用main方法创建一个tomcat。5.创建一个tomcat5.1。定义servlet配置参数我们首先定义几个servlet配置参数:servlet名称,servlet映射5.2。内置Tomcat常用API介绍);设置tomcat端口voidsetPort(intport);设置上下文地址voidsetPath(Stringpath)添加侦听器voidaddLifecycleListener(LifecycleListenerlistener)添加sevletWrapperaddServlet(StringcontextPath,StringservletName,Servletservlet)添加sevlet映射voidaddServletMappingDecoded(Stringpattern,Stringname)启动tomcatvoidgetSevercevercevercevercevercycleget())服务异步tomcatServer.getServer().await()添加webapplication到Tomcat的webapps目录,等效的默认web.xml将应用于web应用程序,任何与应用程序一起打包的WEB-INF/web.xml和META-INF/context.xml都会被正常处理。ContextaddWebapp(StringcontextPath,StringdocBase)throwsServletExceptionWeb应用程序资源添加到这个web应用程序voidaddPreResources(WebResourceSetwebResourceSet)5.3。创建tomcat并添加servletpublicclassTestTomcat{privatestaticintPORT=8080;privatestaticStringCONTEX_PATH="/demosevlet";APPprivatestaticSERVLETString_NAME="indexic"publicstaticvoidmain(String[]args)throwsLifecycleException,InterruptedException{System.out.println("starttomcat");TomcattomcatServer=newTomcat();//设置tomcat端口tomcatServer.setPort(PORT);//这个tomcat端口是否自动部署tomcatServer.getHost().setAutoDeploy(false);//创建一个web应用StandardContextstandardContex=newStandardContext();//设置contextaddressofthewebapplicationstandardContex.setPath(CONTEX_PATH);//添加web应用的监听standardContext。addLifecycleListener(newFixContextListener());//添加web应用到服务端标准Contex.addServletMappingDecoded("/"+MAPPING,SERVLET_NAME);//启动tomcattomcatServer.start();System.out.println("启动tomcat完成");//启动异步服务,接收请求tomcatServer.getServer()。等待();}}5.4。启动创建tomcat的main方法启动结果如下,我们看到tomcat以8080端口启动另外,关注Java知音公众号,回复“后端面试”,送你面试题集!并且在5.5这个目录下生成了一个tomcat.8080文件夹。访问IndexServlet请求地址:ip://index请求地址:127.0.0.1:8080/demosevlet/index