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

创新互联专注于古塔企业网站建设,成都响应式网站建设,商城开发。古塔网站建设公司,为古塔等地区提供建站服务。全流程按需开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
打开一个SpringBoot项目,我们发现,有tomcat的依赖
接下来让我们把tomcat的依赖找到
首先找到spring-boot-starter-web
点进去之后我们看到他用的是2.1.0版本,我们继续点击去
果然在里面找到tomcat的依赖,我们继续点进去
这是我们我们就能看到tomcat的相关依赖了。
因此我们是可以使用Java提供内置Tomcat容器框架,使用Java语言操作Tomcat容器。这样我们也能创建一个maven项目,并且内置一个tomcat容器了。
略
这里我们使用8.5版本的tomcat
org.apache.tomcat.embed tomcat-embed-core 8.5.16 
- 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和web.xml没了,怎么配置?简单,没有我们就用main方法来创建一个tomcat。
我们先定义几个servlet的配置参数:servlet的名字,servlet的映射
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)
 
- 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();
 - }
 - }
 
启动结果如下,我们看到tomcat以8080端口启动。另外,关注Java知音公众号,回复“后端面试”,送你一份面试题宝典!
并且在此目录下生成了tomcat.8080文件夹
请求地址:ip:<端口>/
请求地址:127.0.0.1:8080/demosevlet/index
                新闻标题:教你用Java的方式创建一个自己的Tomcat容器
                
                网站URL:http://www.csdahua.cn/qtweb/news39/28589.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网