Apache Tomcat
Apache Tomcat是一个开源的Servlet 或 web容器,它实现了Java Servlet、JavaServer Pages (JSP)、Java Unified Expression Language (JUEL) 和 Java WebSocket 规范。
使用
-
官网下载
-
安装:绿色版 , 直接解压
-
卸载:直接删除目录
-
改编码:
# conf/logging.properties java.util.logging.ConsoleHandler.encoding = UTF 8 #改为 java.util.logging.ConsoleHandler.encoding = GBK
-
改端口
-
<!-- conf/server.xml --> <Connector port:"8080" ....> </Connector>
-
-
运行: bin\startup.bat;
-
将web网页,部署在 webapps 文件夹下
-
关闭:
-
直接 x 掉运行窗口:强制关闭
-
bin\shutdown.bat:正常关闭
-
Cltrl+ c :正常关闭
-
springBoot
-
内嵌Tomcat服务器
-
起步依赖(也称为“启动器依赖”或“Starters”)
-
指:特殊的依赖抽象,旨在简化Maven或Gradle项目的依赖管理。起步依赖本质上是一组预定义的依赖项集合,它们通常包括了构建特定类型的Spring应用程序所需的核心库。
-
spring-boot-starter
:基础起步依赖,包含Spring Boot的核心库。 -
spring-boot-starter-web
:用于构建Web应用程序。 -
spring-boot-starter-data-jpa
:用于添加JPA(Java Persistence API)支持。 -
spring-boot-starter-security
:用于添加Spring Security支持。
-
Spring Boot 的主要特点和优势包括:
-
自动配置:Spring Boot 试图根据添加到项目中的 jar 依赖自动配置 Spring 应用程序。例如,如果类路径上有 Spring JDBC,它会自动配置一个 DataSource。
-
独立运行:Spring Boot 应用程序可以打包成一个独立的 JAR 包,包含所有的依赖项,从而可以轻松地运行和部署。这意味着不需要外部的应用服务器,应用程序可以通过运行
java -jar
命令启动。 -
内置的运行时选择:Spring Boot 包含了嵌入式的 Tomcat、Jetty 或 Undertow,开发者可以选择其中之一作为 Web 服务器。
-
生产就绪特性:提供了一系列监控和管理生产环境的特性,如指标、健康检查和外部化配置。
-
无代码生成和 XML 配置:不需要代码生成,也不需要 XML 配置文件,尽可能地利用约定和注解来配置应用程序。
-
简化依赖管理:通过提供 starter 依赖项,Spring Boot 简化了构建配置。例如,要开始一个 Spring Web MVC 应用程序,只需添加
spring-boot-starter-web
依赖。 -
微服务支持:Spring Boot 与 Spring Cloud 配合使用,可以方便地构建微服务架构的应用程序。
创建sprinBootWeb项目
不需要
解析pom.xml
不懂Maven可以看我之前的快速入门http://t.csdnimg.cn/B5jYA
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是XML文件的声明,指定了使用的版本和字符编码 -->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 项目根元素,包含了项目的所有配置信息 -->
<modelVersion>4.0.0</modelVersion>
<!-- 指定了POM遵循的模型版本,这是Maven理解项目结构的方式 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.0</version>
<relativePath/> <!-- 这里通常用于相对查找父POM,但这里留空表示从仓库中获取 -->
</parent>
<!-- 指定了父POM,Spring Boot的父POM提供了许多默认配置,简化了项目配置 -->
<groupId>com.example</groupId>
<!-- 定义了项目组的ID,通常是公司或组织的域逆序,加上项目的路径 -->
<artifactId>SpringWeb5</artifactId>
<!-- 定义了项目的ID,用于唯一标识项目 -->
<version>0.0.1-SNAPSHOT</version>
<!-- 定义了项目的版本号,SNAPSHOT表示这是一个开发中的版本,不是正式发布的版本 -->
<name>SpringWeb5</name>
<!-- 定义了项目的名称,用于在IDE或构建工具中显示 -->
<description>SpringWeb5</description>
<!-- 定义了项目的描述,可以是项目的简短介绍 -->
<properties>
<java.version>17</java.version>
</properties>
<!-- 定义了项目属性,这里指定了Java的版本 -->
<dependencies>
<!-- 定义了项目依赖的库,Maven会自动下载并管理这些依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加了Spring Boot Web Starter依赖,它包含了构建RESTful Web服务所需的Spring组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 添加了Spring Boot Test Starter依赖,它包含了用于测试的Spring组件,scope指定了依赖仅在测试阶段有效 -->
</dependencies>
<build>
<plugins>
<!-- 定义了构建过程中使用的插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Spring Boot Maven插件,提供了创建可执行jar和war文件的功能,以及其他Spring Boot特定的Maven任务 -->
</plugins>
</build>
</project>
两个重要类
自己找找
启动类
-
由javaBoot 的构建系统创建
//启动类
@SpringBootApplication
public class SpringWeb5Application {
public static void main(String[] args) {
SpringApplication.run(SpringWeb5Application.class, args);
}
}
请求处理类
-
用户创建 :为类加上类注解(@RestController), 为每个方法加上注解(@RequestMapping("/test"))
-
自己创建的找不到
//请求处理类 @RestController public class TestController { //请求处理方法 @RequestMapping("/test") public String test(){ return "Hello Spring Boot! old version!"; } //带路径参数的请求方法 @RequestMapping("/test/{id}") public String test(){ return "Hello Spring Boot! old version!"; } }
Javaboot@注解
不做详细解释
@RequestParam
属性 | 描述 | 默认值 |
---|---|---|
value | 指定要绑定的请求参数的名字。通常省略此属性,直接使用注解时的参数名作为value的值。 | (无默认值) |
name | 这是value 属性的别名,用于指定请求参数的名称。 | (无默认值) |
defaultValue | 当请求中未提供参数时,指定参数的默认值。 | "" |
required | 指定参数是否必须存在于请求中。如果设为false ,并且请求中没有此参数,那么将使用defaultValue 或将其视为null 。 | true |
type | 指定转换器的类型,用于将请求参数转换为目标类型。在Spring 5之后,这可以通过@Qualifier 注解实现。 | (无默认值) |
请求HttpServietRequest
工具Postman
默认推荐Apifox
一款强大的模拟网页请求的工具包括但不限于
-
HTTP请求: Postman允许你构建和发送各种类型的HTTP请求,包括GET, POST, PUT, DELETE等,并可以添加各种请求头(headers)、查询参数(query parameters)、请求体(request body)和认证信息(authentication)。
-
响应查看: 可以查看和分析API的响应,包括状态码、响应头和响应体,甚至可以预览JSON或XML格式的数据。
-
环境变量: 可以设置和管理环境变量,这有助于在不同的环境中(如开发、测试、生产)切换API配置。
-
集合(Collections): 这个特性允许你组织相关的请求到集合中,便于管理和共享API测试流程。
-
自动化测试: 支持编写测试脚本,自动运行测试用例,并生成详细的测试报告。
-
监控与集成: 可以设置监控定期检查API的健康状况,并通过Webhooks与其他工具集成。
-
文档生成: Postman可以自动生成API文档,帮助团队成员理解API的功能和用法。
-
协作: 支持团队协作,可以分享集合、环境和文档,促进团队间的沟通和合作。
-
Postman API: 提供了自身的API,允许开发者通过代码来控制和扩展Postman的功能。
-
桌面应用与浏览器插件: Postman不仅有桌面应用版本,也有作为Chrome和Firefox浏览器插件的形式。
(以下使用)工具Apifox
更强跟适合团队开发
-
一体化平台:
-
Apifox 将 API 文档、API 测试、API Mock 服务和 API 自动化测试等功能整合在一个平台上,这意味着你可以在一个地方完成所有与 API 相关的工作,而不需要在多个工具之间切换。
-
-
文档管理:
-
Apifox 的文档功能遵循 OpenAPI 3.0 规范,提供了高效的可视化文档管理,使得创建和维护 API 文档更加直观和方便。
-
-
数据同步:
-
使用 Apifox,你只需要定义一次 API 文档,就可以在测试、调试、模拟和自动化测试中重复使用,避免了数据在多个系统间同步的问题。
-
-
测试效率:
-
Apifox 在测试方面提供了高效的功能,例如环境变量管理、前置/后置脚本、全局共享 Cookie/Session 等,这些功能与 Postman 类似但声称使用起来更高效。
-
-
脚本兼容性与灵活性:
-
Apifox 的自定义脚本支持多种编程语言,包括 JavaScript、Java、Python、PHP 等,这比仅支持 JavaScript 的 Postman 提供了更多的灵活性。
-
-
导入导出:
-
Apifox 支持多种格式的导入,包括 OpenAPI、yapi、RAP2 和 Postman,这使得从其他工具迁移数据变得更加容易。
-
简单参数
-
方法形参名与请求参数,一 一对应,或者使用@requestParam完成映射
@RestController
public class TestController(){
@RequestMapping("/test1")
public String test1(String name,Integer age,@requestParam(addre = "addre") String address){
System.out.println(name + ":" + age +"--" + address);
return "ok";
}
}
实体参数
-
方法形参名与请求参数,一 一对应,或者使用@requestParam完成映射
@RestController
public class TestRestContorller{
@RequstMaping("/test1")
public String test1(user val){
System.out.println(val);
}
}
//其他文件
public class user{
String name;
Integer age;
String addre;
//web的请求参数名和实体类属性无关,只和set/get的有关
void setTest(String ab){
this.name = ab;
//那么 web 请求时带的参数必须是 Test=abc 或 test=abc;
}
@Override
public String toString() {
return "user{" +
"name='" + name + '\'' +
", age=" + age +
", addre='" + addre + '\'' +
'}';
}
}
数组集合参数
-
请求参数名和数组名相同,且参数名重复多个,定义数组或 @RequestParam + 其他
@RestController
public class TestRestContorller{
@RequestMapping("/test3")
public String test3(String []form){
System.out.println(form[0] + "--" + form[1]);
return "ok_test3";
}
@RequestMapping("/test4")
public String test_3(@RequestParam List<String> form){
System.out.println(form.get(0) + "--" + form.get(1));
return "ok_test_3";
}
}
日期参数
-
使用 @DateTimeFormat 注解完成日期
@RestController
public class TestController{
@RequestMapping("/test5")
public String test5(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime time){
System.out.println(time);
return "ok_test5";
}
}
// HH 是24小时制 hh是12小时制
Json参数
-
JSON数据键名与形参对象属性名(其实只要set相同就可以了)相同,定义POJO(Plain Old Java Object)普通的Java对象需要使用@RequestBody标识
@RestController
public class TestController{
@RequestMapping("/test6")
public String test6(@RequestBody _User val) {
System.out.println(val);
return "ok_test6";
}
}
//其他文件
class User{
String name;
String age;
Addres addre;
//所有set/get方法......
}
class Addres{
String province;
String city;
//所有set/get方法......
}
路径参数
-
通过请求URL直接传输参数使用{...}来标识路径参数,需要**@PathVariable获取参数路径.
@RestController
public class TestController{
@RequestMapping("/test7/{id}/{name}")
public String test7(@PathVariable Integer id,@PathVariable String name){
System.out.println("id =" + id + " name =" + name);
return "ok_test7";
}
}
总结
参数类型 | 描述 | 绑定方式 | 适用场景 | 补充说明 |
---|---|---|---|---|
简单参数 | 基本数据类型参数,如int、String等。 | 通过方法形参自动绑定,或使用@RequestParam注解手动映射。 | 适用于单个基本数据类型的参数接收。 | 形参变量名与请求参数名一致时自动绑定。 |
实体参数 | POJO对象参数,请求参数名与实体对象属性名一致。 | 自动封装,通过属性名绑定。 | 适用于接收对象类型的请求参数。 | 支持嵌套对象和数组。 |
数组集合参数 | 数组或集合类型参数,如List、Set等。 | 请求参数名与数组或集合名一致,使用@RequestParam注解绑定。 | 适用于接收数组或集合类型的请求参数。 | 可以接收多个相同类型的参数值。 |
日期参数 | 日期类型的参数,如java.util.Date。 | 使用@DateTimeFormat注解格式化日期参数。 | 适用于接收日期类型的请求参数。 | 支持自定义日期格式。 |
JSON参数 | 请求体为JSON格式的参数。 | 使用@RequestBody注解接收JSON格式的请求体。 | 适用于接收复杂JSON对象或数组。 | 需要在HTTP请求的Content-Type头部设置为application/json。 |
路径参数 | URI模板变量,如RESTful API中的资源标识符。 | 使用@PathVariable注解绑定URI模板变量。 | 适用于RESTful API中,将URL的一部分映射到方法参数。 | 通常与@RequestBody或@RequestParam结合使用。 |