JavaWeb开发04-综合案例-部门管理-员工管理-配置文件-登录

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

一、案例

无论增删改查都会返回一个统一响应结果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:

  1. 这里的page和pageSize只要和请求中的变量名一致就会自动接收
  2. 由于接口文档中要求返回文档中包含两部分内容,总记录数和员工列表,所以创建PageBean对象来封装这两部分的数据
  3. 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返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值