共计 3303 个字符,预计需要花费 9 分钟才能阅读完成。
当咱们开始接触到 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 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
申请地址:ip:< 端口 >/<tomcat 上下文 >/index
申请地址:127.0.0.1:8080/demosevlet/index
原文链接:https://blog.csdn.net/m0_3789…
版权申明:本文为 CSDN 博主「歪桃」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
近期热文举荐:
1.1,000+ 道 Java 面试题及答案整顿(2021 最新版)
2. 别在再满屏的 if/ else 了,试试策略模式,真香!!
3. 卧槽!Java 中的 xx ≠ null 是什么新语法?
4.Spring Boot 2.5 重磅公布,光明模式太炸了!
5.《Java 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!