一、案例




无论增删改查都会返回一个统一响应结果Result

开发流程:
二、案例-部门管理
1.查询部门

部门的controller部分:
只接收Get请求方式,然后调用部门Service中的list方法去获取全部部门信息
部门的Service部分:
这个实现类首先实现了DeptService接口,接口中有list方法,然后调用部门Mapper中的list方法去获取数据库中的部门信息
部门的Mapper部分:
因为这个查询所有数据很简单所以采用注解的方式向MYSQL数据库发送查询部门所有数据的SQL语句。
2.前后端联调
得先运行nginx

3.删除部门
删除部门思路:


controller:
service:

mapper:
4.新增部门

controller:
将Json数据封装到dept中去
service:
再为dept的两个时间赋值
mapper:
5.controller代码优化

由于这些功能都在depts请求下所以可以用RequestMapping注解简化代码


三、案例-员工管理
1.分页查询



controller:
- 这里的page和pageSize只要和请求中的变量名一致就会自动接收
- 由于接口文档中要求返回文档中包含两部分内容,总记录数和员工列表,所以创建PageBean对象来封装这两部分的数据
- RequestParam可以定义参数默认值
service:
mapper:
分页插件PageHelper
service:

mapper:
使用插件只需要查询全部内容,再service中设置第几页和每页显示多少条数据的参数,再调用mapper的list方法得到Emp的Page对象就可以通过这个列表去获取记录数和显示的数据。插件内部会自动执行查询limit。
2.条件分页查询
接收查询条件参数


对于controller:
接收参数再传递参数
对于service:
也是增加接收的参数和传递的参数
由于模糊查询比较负载采用XML映射文件传递SQL语句:
3.删除员工

controller:
service:
mapper:![]()
xml映射文件:
4.新增员工
思路

controller:
service:
mapper:
5.文件上传
①简介




②本地存储

multipartFile常用方法:
在SpringBoot中,文件上传,默认单个文件允许最大大小为1M。如果要上传大文件,需要对Properties进行配置:
③阿里云OSS


第三方服务-通用思路:

![]()

使用OSS:
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import java.io.ByteArrayInputStream;
public class Demo {
public static void main(String[] args) throws Exception {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 填写Bucket名称,例如examplebucket。
String bucketName = "examplebucket";
// 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
String objectName = "exampledir/exampleobject.txt";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
String content = "Hello OSS";
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
上传后阿里云OSS就会为每个文件分配URL

④案例中阿里云存储图像:
上传后可以在界面进行展示

步骤:
uploadcontroller

其中使用的aliOSSUtils的方法,将MultipartFile接收到的文件上传到OSS并分配url
6.修改员工
注意要想修改员工信息首先得拿到该员工的信息需要查询回显,再修改响应操作
查询回显:

修改员工

四、配置文件
1.参数配置化
之前使用OSS需要配置信息



2.yml配置文件


推荐采用yml配置文件


必须有空格
3.ConfigurationProperties

首先配置文件中的名字要一一对应,且有getset方法,且交给IOC容器管理

加上这两个注解就需要在Spring的yml或者properties文件中进行相应值的配置,这样这个对象在创建的时候就会自动注入配置文件中的值。

五、登录
1.登录功能

获取用户输入的username和password查看数据库是否有数据,有则通过没有则不通过
controller:
service:
mapper:
2.登录校验
没有校验就只要有网址就可以进入


①会话技术

Cookie:
第一次请求后会在响应头里包含一个Cookie,浏览器会储存在本地,在后续请求中会将其放在请求头中。

跨域指的是协议、ip、端口不同就是跨域
Session:
底层也是基于Cookie的

由于负载均衡会将请求放在不同的服务器上
令牌技术:

第一次登录成功后会生成一个令牌,会响应给前端,前端可以将令牌存储在任何空间中,后续在响应中就要携带该令牌,后端会去校验其有效性,要有效才会放行。

②JWT令牌

应用场景:
Java创建令牌:
依赖:



案例使用JWT:
引入JWT工具类,包含生成JWT方法和解JWT方法

③过滤器Filter

快速入门:

![]()

注意Springboot启动程序要加上@ServletComponentScan才能使用Filter。
只需要关注doFilter方法,拦截到请求后会调用,可以进行判断
执行流程:
在doFileter中:chain.doFilter是放行



拦截路径:

过滤器链:
案例-登录校验



④拦截器Interceptor

入门:


关注第一个preHandle方法


拦截路径:

执行流程:
Tomcat不识别controller程序,它识别servlet程序,springboot提供了一个DispatcherServlet容器,叫做前端控制器,Tomcat提交的请求会先进入前端控制器,再转给controller,如果定义了拦截器就会在前端控制器和controller中进行拦截。

案例-登录校验
逻辑与Filter一致。


六、异常处理





ResponseBody会将数据以JSON返回
本文详细描述了IT项目中的部门管理、员工管理(包括分页查询、条件查询和文件上传)、阿里云OSS的使用以及登录验证、异常处理等关键环节,涉及Controller、Service、Mapper的代码实现和配置文件的管理。
5194

被折叠的 条评论
为什么被折叠?



