xiao1star2025-12-31文章来源:SecHub网络安全社区
是用来解决C/S开发的问题
什么是C/S架构
支持多个客户端同时向服务器发送请求并得到响应的过程,为了更好的引用这种架构就有了SpringBoot,Springboot有一个内置软件是Tomcat
tomcat的端口号是8080


src->用于存放java源码
src/main/java->正式的java代码
src/test/java->测试代码,@Test表示的这是一个测试入口
Module2Application类->入口方法,必须放在contorller,dto,service包的上一层

src/main/resource/static->html源码
src/main/resource/application->配置文件
src/main/java/controller->控制器类
src/main/java/dto->一些数据
src/main/java/service->业务逻辑类
输出
一般都是在控制器类中,要与我们的入口方法同级或在下一级
条件:
@Controller--标记为控制器类,一般控制器类调用Service类,Service调用Mapper
@Mapper//声明这个是一个专用于增删改查的接口
@RequestMapping("/hello"):控制了url路径和方法之间的关系
@ResponseBody:用来处理方法的返回结果
@Service 加在业务逻辑类上,会自动创建一个对象

访问该页面的url
http://localhost/hello
输入
一般是通过web页面进行输入的
在我们的scr/main/resource/static下

输入和输出的联系

打包是为了发布在各个平台
流程
控制反转
对象的创建权转移到Spring框架,这种思想称为控制反转
依赖注入
框架帮助我们找到依赖注入,按一定的规则供给你,成为依赖注入

CalculatorController必须依赖下面的Service才可以正常运作,所有我们称这些Service为Controller的依赖
@Autowired:根据类型找Sring中的对象

异常处理
在Spring中只需要抛出异常的方法,不需要写try catch语句的处理异常的方法,因为Spring会自动生成try catch语句

路径参数
@PathVariable–表示该方法参数要从路径中取代
@RuequesetMapping("/video/{bv}")
@ResponseBody
public Video t(@PathVariable String bv)//bv由上面的路径中的bv控制
{
if(bv.equals("1")){
.....
}
if(bv.equals("2")){
....
}
}
如果有大量的视频和图片文件,我们不可能把所有的文件都弄到Spring目录下,因此我们可以将url地址和磁盘目录相关联

表示如果想要访问play路径下的文件就去d盘的aa文件中寻找
前提:需要在pom.xml加入mybaties和mysql的依赖
用于数据库与java代码进行连接,通过java代码对数据库进行增删改查
建立数据库连接
在resource在新建一个application.properties文件(文件名必须是这个)

建立增删改查接口
在src/main下创建一个mapper包
@Mapper//声明这个是一个专用于增删改查的接口
@Select用来写查询语句
查询所有

调用findall()就会执行@Select语句中的内容,将查询出来的学生数据封装成Student对象,多个Student对象封装成List集合
查询学生编号

新增学生

mybatis不支持多个参数传参,需要使用@Param说明那个值传递给那个参数
接口利用
实现类来实现这个增删改查接口(由mybatis和spring共同提供),可以通过@Autowired依赖注入获取实现类对象
例如上面是一个StudentMapper接口,我们可以定义一个StudentMapper studentMapper并在上面加一个@Autowired,就会根据StudentMapper这个字段的类型到Spring中去寻找是否有StudentMapper的实现类对象(由mybatis和spring共同提供)

文件分布
pom.xml-->标志当前是一个maven项目,maven的配置文件
main-->主体文件
test-->单元测试文件
java->.java文件
resources->处理.java文件都可以存放,配置文件,静态资源文件

Maven是为了让构建过程能够尽可能自动化完成,所以必须约定目录结构的作用
pom文件
在pom.xml中最重要的是

<!-- 坐标信息 本工程坐标信息 每个maven项目都有唯一的坐标-->
<!--怎么配置本工程坐标信息
项目:(只有一个项目)
groupId:(反域名) com.baiidu
artifactId:当前项目名
模块:(当前项目中的一个模块) OA(前台、后台、common)
groupId:(反域名) com.baiidu.oa
artifactId:当前模块名
-->
<groupId>org.example</groupId>
<artifactId>Test</artifactId>
<version>1.0-SNAPSHOT</version>
模块表示只是当前项目中的一个模块,例如有前台和后台,前台和后台又有相同的部分即common,前台后台和common一起成为聚合maven项目
一般存放在dependencies标签中
<!--怎么通过一个坐标信息引用一个jar包,通常叫做依赖-->
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api 中央仓库-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
jar包的寻找

2.属性变量
存放在properties标签中
<!-- 属性 变量 通常设置依赖的版本
好处:同一管理版本-->
<properties>
<project.build.sourceEncoding> UTF-8</project.build.sourceEncoding>
<javax.servlet.version>3.1.0</javax.servlet.version>
</properties>
3.设置打包方式,默认是jar包
使用packaging标签,
<!-- tomcat的打包方式是war包, -->
<packaging>war</packaging>
4.依赖范围
用scope标签去划定范围
范围

因为上述使用了<scope>test</scope>所以引用的serlet依赖只能在test中使用,例如junit
<scope>provided</scope>可以在编译、测试中但是不能用在打包中,例如servlet,因为tomcat的lib中有serlet的依赖
<scope>compile</scope>默认的,编译、测试、打包都可以
<scope>runtime</scope>可以在测试、打包中使用。通常用于反射,数据库驱动class.forName()
<scope>system</scope>等同于provided,但是引用的是本地物理路径的jar包,通常需要使用systemPath标签去指定一个物理路径
5.依赖传递
注意:war包不能被传递

创建一个bproject项目作为hello的依赖

将bproject的坐标放入hello的pom的dependency标签中,在没有使用<scope>provided</scope>hello就可以使用bproject中的依赖,当然<optional>false</optional>也有类似效果
6.依赖排除和覆盖
7.聚合项目
好处:当聚合项目中的一个项目依赖另一个子项目时,我们不需要再次点击install来建立一个本地jar包,提高了效率
把src删除,因为聚合项目通常只是管理子项目
把packaging修改为pom包,表示当前不是一个具体的包
把子工程管理起来
使用modules标签

两个子项目分别为frontend、backend
8.maven继承
idea自动添加继承

手动添加
使用parent标签,再将其坐标放入其中

子项目的groupId和version可以省略掉,因为都会继承父maven的
对于子工程不需要的依赖可以放到dependencyManagement标签当中,如果想要使用的话可以直接使用dependency标签然后不需要加入version
通常在父maven中管理所有依赖的版本
1.DAO层
全称数据访问层,全称data access object,属于一种比较底层,比较基础的操作。具体到对于某个表、某个实体类的增删改查,即用于数据库的增删改查,表达的是对SQL语句的封装,建议对DAO只做原子操作。有多少张表就有多少个DAO层。在mybatis中,方法主要与xxx.xml内一一对应,相互映射。
2.Service层
全称业务逻辑层,在该层进行复杂的业务逻辑处理,且只专注逻辑处理,即对于多个dao层进行封装、处理。其中需要的数据库操作通过DAO层去实现。所以我们再Service层需要事务管理。
3.Controller层
Collertroler层俗称控制层,负责请求转发,接收页面(前端H5或者App)传过来的参数,并调用Service层中定义的方法进行业务操作,再将处理结果返回前端。
前端传入数据–>Controller层->Service层处理业务–>dao层数据库操作,之后依次返回