Tomcat实际上是通过DispatcherServlet接口进行交互
请求
postman
Postman 是一款功能强大的 API 开发工具。
主要功能
接口测试:
可以轻松发送各种 HTTP 请求,包括 GET、POST、PUT、DELETE 等。
设置请求头、请求参数、请求体等,模拟不同的请求场景。
查看响应结果,包括响应状态码、响应头、响应体等,便于分析接口的正确性。
环境管理:
可以创建多个不同的环境,例如开发环境、测试环境、生产环境等。
在不同环境中设置不同的变量,方便在切换环境时快速修改请求参数。
集合管理:
可以将多个请求组织成集合,方便管理和复用。
可以对集合进行分类、排序、搜索等操作。
自动化测试:
使用 Postman 的测试脚本功能,可以对接口进行自动化测试。
可以设置断言来验证响应结果是否符合预期。
团队协作:
Postman 支持团队协作,可以共享集合、环境、测试脚本等。
方便团队成员之间的协作和沟通。
获取请求参数的方法
通过HttpServletRequest对象进行获取
springboot方法
如果请求参数不对应
注意,这个注解中有一个required参数,默认为true,如果不修改,则必须带上注解指定的参数。
RequestMapping表示请求的路径:localhost:8080/simpleParam?name = Liushiyu&age=10000
实体参数
需要传递的参数和实体的属性一一对应
复杂实体参数的封装(如果存在继承关系)
数组集合参数
数组参数
定义成数组,然后传递所有的即可
集合参数
需要加上@RequestParam的注解来绑定参数关系
日期时间参数
LocalDateTime是jdk1.8提供的一个对象
Json参数
postman发送请求参数
需要放在请求体中,所以必须是post请求
服务端接收Json参数
需要加上@RequestBody注解,来将Json数组赋值给对象
路径参数
参数已经成为url的一部分
响应
像这样的每一个函数都叫一个功能接口
为了方便前后端处理和项目的管理维护,一般会约定一个统一的响应结果
直接返回对象会被转化对应每一个对象属性的json数据
小结
案例
== 补充学习xml解析 ==
springboot默认静态资源存放位置
在 Spring Boot 中,默认的静态资源存放位置有以下几个:
静态资源目录
/static:可以直接存放静态文件,如 CSS、JavaScript、图片等。
/public:也是用于存放公共静态资源的默认位置。
/resources目录下的/static子目录和/public子目录也被视为静态资源存放处。
访问方式
当 Spring Boot 应用程序运行时,你可以通过相对 URL 来访问这些静态资源。例如,如果有一个名为style.css的 CSS 文件存放在/static目录下,你可以在浏览器中通过/style.css来访问它。
静态资源的加载顺序通常是先在/static目录中查找,如果找不到,再在/public目录中查找,最后在/resources/static或/resources/public中查找。这样的设计使得你可以根据需要灵活地组织和管理静态资源。
分层解耦
三层结构
请求的处理流程:
代码实现:
解除耦合
由于上层定义了其他层的对象,所以这两层存在耦合,维护时不方便。
高内聚低耦合
高内聚
高内聚指的是一个模块内部的各个元素之间联系紧密,功能相关性强。
例如,一个用户管理模块,它负责用户的注册、登录、信息修改等功能,这些功能都是围绕用户这个主题展开的,具有高内聚性。
低耦合
低耦合指的是不同模块之间的依赖关系尽可能地弱。
例如,在一个电商系统中,订单模块和商品模块之间通过接口进行交互,订单模块只关心商品的基本信息,而不关心商品模块的具体实现,这样就实现了低耦合。
解决方案
设计一个容器,将层对象放在容器之中,在使用时从容器之中调用。
IOC & DI
Bean对象
Bean 对象是一种符合特定规范的 Java 对象。通常具有以下特点:
是一个普通的 Java 对象(POJO,Plain Old Java Object),即没有继承特定的类或实现特定的接口,只是一个简单的类的实例。
具有私有属性,并提供公共的 getter 和 setter 方法来访问这些属性。
@Component 注解表示将当前类交给容器或框架进行管理,成为IOC的Bean对象
@Autowired注解表示运行时会从IOC容器中获取对应的Bean对象并赋值给变量
如果要实现不同功能的切换,只需要将@Component注解注释掉,在新功能上加上注解。
在实际项目开发中,一般使用其衍生注解,以达到区分的目的。
可以通过Value属性指定Bean对象的名字
注意
组件扫描
定义与作用
组件扫描是一种自动发现和注册 Java 类为可管理组件的机制。它可以扫描指定的包或类路径,查找带有特定注解的类,并将这些类注册为 Spring 容器中的 bean。
作用主要有以下几点:
提高开发效率:开发者不需要手动在配置文件中逐个注册 bean,减少了繁琐的配置工作。
增强可维护性:当有新的组件添加到项目中时,只需要添加相应的注解,组件扫描会自动发现并注册新的组件,无需修改配置文件。
实现松散耦合:通过注解来标识组件,使得组件之间的依赖关系更加清晰,降低了代码的耦合度。
常见的注解用于组件扫描
@Component:这是一个通用的注解,可以用于标识任何类型的组件。Spring 容器会自动扫描带有这个注解的类,并将其注册为 bean。
@Service:通常用于标识业务逻辑层的组件。
@Repository:用于标识数据访问层的组件,例如 DAO(Data Access Object)类。
@Controller:用于标识 Web 层的控制器组件。
在 Spring 中的使用
在 Spring 配置文件中,可以通过开启组件扫描来自动发现和注册 bean。例如,在 XML 配置文件中,可以使用 ··· <context:component-scan>
元素来指定要扫描的包:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.example.packageName"/>
</beans>
在 Java 配置类中,可以使用 @ComponentScan 注解来实现组件扫描:
@Configuration
@ComponentScan(basePackages = "com.example.packageName")
public class AppConfig {
// 其他配置...
}
注意事项
确保注解的正确使用:只有带有适当注解的类才会被组件扫描发现。
包路径的准确性:在配置组件扫描时,要确保指定的包路径正确,以避免遗漏或错误地扫描组件。
命名冲突:如果多个类具有相同的名称,可能会导致命名冲突。在这种情况下,可以使用 @Qualifier 注解来明确指定要注入的 bean。
默认扫描启动类所在的包,如果定义在其外,则扫描不到。可以在main类中显式定义要扫描的包:
但是一般都要定义在启动类之中。
自动装配
== 如果定义两个相同的注解== 存在两个相同类型的Bean会直接报错。
解决方法
1.用Primary注解进行最高优先级服务的指定
2.利用Qualifier注解
3.利用Resource注解(利用Jdk进行实现,以上两个都是利用Spring框架进行实现的,此方法默认按照名称进行注入而AutoWire默认按照类型------ 类似Controller和Service的区别? 进行注入)