Java启动Tomcat

article/2025/11/10 0:52:05

文章目录

  • 目标:
  • 实现:
    • 一、前期准备
      • 1、加入依赖
      • 2、定义Servlet类
      • 3、定义Servlet类
      • 4、启动Tomcat并测试
  • 总结
    • 流程图
    • 重点及易错点
      • 1、服务器阻塞等待请求

目标:

学习使用java代码启动Tomcat

实现:

一、前期准备

实现自定义注解,并用自定义注解模拟正常的业务逻辑,实现将用户发送给服务器的数据回写给用户的功能。

1、加入依赖

本项目使用java代码操作Tomcat,所以需要引入servletjar包。为了在浏览器等前端显示信息,所以需要引入JSP相关jar包。源码如下:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>handwritingproject</artifactId><groupId>com.njust</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>javaStartTomcat</artifactId><dependencies><!--Java语言操作tomcat --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>8.5.16</version></dependency><!-- tomcat对jsp支持 --><dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-jasper</artifactId><version>8.5.16</version></dependency></dependencies></project>

2、定义Servlet类

定义IndexServlet类,继承 HttpServlet,该类只是简单的向客户端输出一行信息以证明服务成功启动。源码如下:

IndexServlet .java

package com.njust.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class IndexServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().print("this is index... tomcat");}}

3、定义Servlet类

定义IndexServletC类,继承 HttpServlet,该类只是简单的向客户端输出一行信息以证明服务成功启动。该类和上面的类功能相同,只是输出不同的信息,以证明Tomcat服务器可以将请求分发到不同的servlet处理。源码如下:

IndexServletC .java

package com.njust.servlet;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 IndexServletC extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().print("this is index... tomcat IndexServletC");}}

4、启动Tomcat并测试

定义Main类。配置Tomcat的基本信息。同时将不同路径映射到不同的servlet。源码如下:

Main .java

package com.njust.tomcat;import com.njust.servlet.IndexServletC;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.Tomcat.FixContextListener;import com.njust.servlet.IndexServlet;/*** 使用Java语言创建Tomcat服务器<br>* Tomcat 底层执行程序 最终servlet<br>* SpringMVC底层使用servlet 包装<br>**/
public class Main {private static int PORT = 8080;private static String CONTEX_PATH = "/njust";private static String SERVLET_NAME = "indexServlet1";private static String SERVLET_NAMET = "indexServletC";public static void main(String[] args) throws LifecycleException, InterruptedException {// 创建tomcat服务器Tomcat tomcatServer = new Tomcat();// 指定端口号tomcatServer.setPort(PORT);// 是否设置自动部署tomcatServer.getHost().setAutoDeploy(false);// 创建上下文StandardContext standardContex = new StandardContext();standardContex.setPath(CONTEX_PATH);// 监听上下文standardContex.addLifecycleListener(new FixContextListener());// tomcat容器添加standardContextomcatServer.getHost().addChild(standardContex);// 创建ServlettomcatServer.addServlet(CONTEX_PATH, SERVLET_NAME, new IndexServlet());tomcatServer.addServlet(CONTEX_PATH, SERVLET_NAMET, new IndexServletC());// servleturl映射standardContex.addServletMappingDecoded("/index", SERVLET_NAME);standardContex.addServletMappingDecoded("/indexc", SERVLET_NAMET);tomcatServer.start();System.out.println("tomcat start success..");// 异步进行接收请求tomcatServer.getServer().await();}}

运行该程序。控制台输出如下:

Console

四月 03, 2020 3:32:30 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-nio-8080"]
四月 03, 2020 3:32:31 下午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
四月 03, 2020 3:32:31 下午 org.apache.catalina.core.StandardService startInternal
信息: Starting service [Tomcat]
四月 03, 2020 3:32:31 下午 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/8.5.16
四月 03, 2020 3:32:31 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-nio-8080"]
tomcat start success..

根据控制台信息,我们发现程序成功启动。接下来我们在浏览器访问Tomcat服务器。

在这里插入图片描述

我们访问 http://localhost:8080/njust/indexc可以定位到 IndexServletC,访问 http://localhost:8080/njust/index,可以定位到 IndexServlet。说明的Tomcat可以正常工作了。

在这里插入图片描述

总结

流程图

Created with Raphal 2.2.0 开始 创建tomcat服务器 配置Tomcat基本信息 创建并监听上下文 向Tomcat容器添加上下文 创建Servlet 指定servleturl映射 开启Tomcat服务器 异步进行接收请求 结束

重点及易错点

1、服务器阻塞等待请求

        tomcatServer.start();System.out.println("tomcat start success..");// 异步进行接收请求tomcatServer.getServer().await();

在服务启动后,一定要调用 await() 方法异步进行接收请求,否则服务器启动成功就直接关闭了。
有问题欢迎各位读者批评指正。

点个赞再走呗!欢迎留言哦!


http://chatgpt.dhexx.cn/article/vswc3kE9.shtml

相关文章

Tomcat安装和启动

Tomcat下载 地址&#xff1a;Apache Tomcat - Apache Tomcat 8 Software Downloads解压得到以下目录&#xff1a; bin: 专门用来存放Tomcat服务器的可执行程序 conf: 专门用来存放Tomcat服务器的配置文件lib&#xff1a;专门用来存放Tomcat服务器的jar包logs&#xff1a;专门用…

tomcat启动网站

servlet里没有主方法&#xff0c;靠tomcat里的主方法运行 一般程序安装程序都包含 bin&#xff1a;包含启动脚本 conf&#xff1a;config的缩写&#xff0c;里面有配置文件&#xff0c;程序启动会读配置文件 lib&#xff1a;程序的主体部分 logs&#xff1a;运行日志 tom…

Tomcat的安装与启动

1、JavaWeb的基本概念 JavaWeb 是指&#xff0c;所有通过 Java 语言编写可以通过浏览器访问的程序的总称&#xff0c;叫 JavaWeb。 JavaWeb 是基于请求和响应来开发的。 请求&#xff1a;是指客户端给服务器发送数据&#xff0c;叫请求 Request。 响应&#xff1a;是指服务…

Tomcat的server启动

1.server的启动 前面我们说过了&#xff0c;server的启动过程主要是通过catalina进行一个启动&#xff0c;而在启动过程中他又经历了哪些过程呢&#xff1f; 从代码中看&#xff0c;server的启动过程中&#xff0c;他继承了lifecycleMbeanBase这个类并且实现了接口server&…

tomcat(17)启动tomcat

【0】README 1&#xff09;本文部分文字描述转自“how tomcat works”&#xff0c;旨在学习“tomcat(17)启动tomcat”的相关知识&#xff1b; 2&#xff09;本文重点关注启动Tomcat时会用到的两个类&#xff0c;分别是Catalina类和 Bootstrap类&#xff1b;&#xff08;干货——…

Tomcat的安装和启动

前言&#xff1a;Tomcat 是 Servlet 容器的一种&#xff0c;它是一个小型的&#xff08;体积小&#xff09;、轻量级的、免费开源的 Java Web 服务器。Tomcat 运行时占用的系统资源少&#xff0c;性能稳定&#xff0c;并且采用了先进和前沿的技术&#xff0c;所以它成为目前比较…

Tomcat安装及启动

日升时奋斗&#xff0c;日落时自省 目录 1、Tomcat下载 2、JDK安装及配置环境 3、Tomcat配置环境 4、启动Tomcat 5、部署演示 1、Tomcat下载 直接入主题&#xff0c;下载Tomcat 首先就是别下错了&#xff0c;直接找官方如何看是不是广告&#xff0c;或者造假 搜索Tomc…

Tomcat启动流程

一、流程简述 在Tomcat的bin目录下存放着Tomcat在Windows环境下和Linux环境下的启动脚本 在start脚本文件中会去启动catalina的脚本文件 catalina脚本文件中会去调用启动类(org.apache.catalina.startup.Bootstrap)来进行Tomcat的初始化 启动的流程图如下 二、启动流程 Init …

两种启动tomcat的方法

一&#xff0c;找到 Tomcat 目录下的 bin 目录下的 startup.bat 文件&#xff0c;双击&#xff0c;就可以启动 Tomcat 服务器 在D:\Tomcat\apache-tomcat-8.0.50\bin下找到setclasspath.bat右击编辑&#xff0c;在最后输入pause&#xff0c;即可查看错误 二&#xff0c;1打开命…

idea热启动

快捷键&#xff1a;ctrlshiftalt/ 然后重启 IDEA 注意&#xff1a;开发阶段开启热部署&#xff0c;生产阶段必须关闭

IntelliJ2021 设置热启动

在IntelliJ中设置了热启动后&#xff0c;更改代码保存后&#xff0c;系统会自动重启&#xff0c;无需手动重启。 1. IntelliJ2021 设置热启动 File -> settings -> Advanced Settings ,选中下面的选项 在pom.xml中 <dependency><groupId>org.springfram…

springboot 配置热启动

为解决开发过程中功能调试过程中的频繁启动项目的烦恼&#xff0c;可以为项目添加热启动&#xff0c;使得修改项目逻辑后&#xff0c;无需重启项目&#xff0c;即可实时使新修改的代码生效。 1、添加如下配置即可 <dependency><groupId>org.springframework.boot&…

SpringBoot 项目实现热启动

引入依赖。在pom.xml 文件 <dependencies></ dependencies> 添加如下内容 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </de…

eclipse实现热部署和热启动

eclipse实现热部署和热启动 &#xff08;1&#xff09; 热部署:就是容器状态在运行的情况下重新部署整个项目.在这种情况下一般整个内存会清空,重新加载.简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项目.这种方式可能会造成sessin丢失等情况. &#xff08;2&#x…

MIKE水动力笔记8_冷启动与热启动

本文目录 前言Step 1 冷启动与热启动的概念Step 2 案例的简介与对比设置Step 3 热启动初始条件文件的获取Step 4 冷启动与热启动的运行结果对比 前言 在本系列博文【MIKE水动力笔记5_建立水动力模型】中&#xff0c;在讲【Step 2 设置模型参数】中的【Initial Conditions】时&…

springboot热启动与热部署

一、热启动&#xff1a; 每自修改后&#xff0c; 程序自动启动spring Application上下文。 Pom中直接添加依赖即可&#xff1a; [html] view plain copy <dependency> <groupId>org.springframework.boot</groupId> <artif…

idea怎么设置热启动

idea更改代码后每次都需要重新启动才生效&#xff0c;如果需要进行多次小幅度调整时就会显得很繁琐&#xff0c;下面介绍一种更改代码后自动生效的热启动小技巧 以IntelliJ IDEA 2021.2.3汉化版为例进行设置热启动 1、运行》编辑配置。 2、执行“更新”操作时和切换出IDE时选…

【SpringBoot】springboot启动热部署

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ SpringBoot——手工启动热部署 一、pom.xml导入…

Java(四):高效调试之IDEA热启动

项目背景&#xff1a; 在开发过程&#xff0c;遇到问题要进行调试的时候&#xff0c;每次修改完代码&#xff0c;都需要重启应用&#xff0c;重新运行才能看到效果。配置了热启动后&#xff0c;修改代码后就不需要重启程序也可以看到效果&#xff0c;从而大大提升了开发效率。 …

键盘上什么组合键表示热启动计算机,什么是电脑热启动?电脑怎么热启动

什么是电脑热启动? 电脑热启动又称键盘启动&#xff0c;在不断电状态下(即开机状态下)进行的电脑程序启动&#xff0c;就叫做电脑热启&#xff0c;也可以简化为热启动。 电脑怎么热启动? 电脑在DOS状态下运行时&#xff0c;即同时按下键盘上的CtrlAltDelete组合键&#xff0c…