网站首页 > 技术文章 正文
当我们开始接触到 SpringBoot 项目的时候,我们特别惊讶,为什么没有了tomcat服务器,web项目还能跑起来。为什么只用了一个main方法就能将一个web项目跑起来。学习了这篇文章你就能明白了。
文章目录
- 发现内置Tomcat
- 创建一个maven项目
- 添加tomcat依赖
- 创建一个servlet:IndexServlet
- 创建一个tomcat
- 定义servlet配置参数
- 内置Tomcat常用API介绍
- 创建tomcat并且添加servlet
- 启动main方法创建tomcat
- 访问IndexServlet
1.发现内置Tomcat
打开一个SpringBoot项目,我们发现,有tomcat的依赖
tomcat的依赖
接下来让我们把tomcat的依赖找到。
首先找到spring-boot-starter-web。
spring-boot-starter-web
点进去之后我们看到他用的是2.1.0版本,我们继续点击去。
tomcat-embed
果然在里面找到tomcat的依赖,我们继续点进去。
tomcat-embed
这是我们我们就能看到tomcat的相关依赖了。
tomcat-embed
因此我们是可以使用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的映射。
配置sevlet的映射
当我们访问这个servlet的时候,访问地址应该是:ip:<端口>/<tomcat上下文>/index。
但是,但是,但是。。。
当 tomcat和web.xml 没了,怎么配置?
简单,没有我们就用main方法来创建一个tomcat。
5.创建一个tomcat
5.1.定义servlet配置参数
我们先定义几个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端口启动
并且在此目录下生成了tomcat.8080文件夹。
tomcat.8080文件夹
5.5.访问IndexServlet
请求地址:ip:<端口>/<tomcat上下文>/index。
请求地址:127.0.0.1:8080/demosevlet/index。
手写main方法启动tomcat
有了本文的基础,后面我再给大家手写 SpringBoot 教程时,就能更得心应手了!
- 上一篇: vue项目本地开发完成后部署到服务器后报404是什么原因呢?
- 下一篇: 前端必读书籍推荐
猜你喜欢
- 2024-11-18 Web前端、应用服务器、数据库SQL等性能优化总结
- 2024-11-18 C# .NET 6 校园图书管理系统:第七章 引入前端界面
- 2024-11-18 清华架构师用24章Git笔记带你完全学会Git,GitHub,Gitserver
- 2024-11-18 作为一名前端工程师,这些你一定要懂
- 2024-11-18 程序员私活攻略 (下)
- 2024-11-18 Web前端最强JavaScript Excel处理插件——exceljs
- 2024-11-18 前端必读书籍推荐
- 2024-11-18 vue项目本地开发完成后部署到服务器后报404是什么原因呢?
- 2024-11-18 前端工程化体系设计与实践第4章第1节本地开发服务器解决的问题
- 2024-11-18 前端启动本地服务的四种方法,看完不会你锤我
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)