注:本文参考原文地址为:https://mp.weixin.qq.com/s/QVvwv__bqXhd7wqOIlzkpQ
当我们刚开始玩spring boot的时候,会惊奇的发现没有tomcat服务器,web项目还能跑起来,为什么只用一个mian方法就能将一个web项目跑起来,接下来我们来分析分析。
1.发现内置Tomcat
当构建一个spring boot 项目时,你看依赖会发现有tomcat的依赖
image.png
2.构建一个基础的maven项目
略
3.pom中添加tomcat依赖
<!--Java语言操作tomcat -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.16</version>
</dependency>
4.创建一个servlet:IndexServlet
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("indexservletindexservletindexservletindexservletindexservletindexservlet");
}
}
接下来,我们再回想一下,传统的servlet是如何配置的,之前我们是需要在WEB-INF目录下找到web.xml,然后在该文件中配置servlet。
image.png
但是现在tomcat和web.xml没有了,该如何配置呢。这简单,我们用mian方法来创建一个tomcat。
5.创建一个tomcat
import org.apache.catalina.LifecycleException;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
public class TestTomcat {
private static int PORT = 8080;
private static String CONTEX_PATH = "/demoservlet";
private static String SERVLET_NAME = "index";
private static String MAPPING = "index";
public static void main(String[] args) throws LifecycleException {
System.out.println("启动tomcat");
Tomcat tomcat = new Tomcat();
//设置端口
tomcat.setPort(PORT);
//此tomcat端口是否自动部署
tomcat.getHost().setAutoDeploy(false);
//创建一个web应用
StandardContext standardContext = new StandardContext();
//设置web应用程序的上下文地址
standardContext.setPath(CONTEX_PATH);
//添加web应用程序的监听
standardContext.addLifecycleListener(new Tomcat.FixContextListener());
//将web应用程序添加到服务中
tomcat.getHost().addChild(standardContext);
//配置servlet和映射
tomcat.addServlet(CONTEX_PATH, SERVLET_NAME, new IndexServlet());
standardContext.addServletMappingDecoded("/"+MAPPING, SERVLET_NAME);
//启动tomcat
tomcat.start();
System.out.println("启动tomcat完毕");
//开启异步服务,接收请求
tomcat.getServer().await();
}
}
对上面几个常量参数和之前web.xml文件中的配置信息的一个对应说明
image.png
6.启动main方法然后打开浏览器访问
请求地址:ip:<端口>/<tomcat上下文>/index
测试请求地址:http://127.0.0.1:8080/demoservlet/index
并且在工程目录下生成了一个tomcat.8080的文件夹
image.png
网友评论