# Laptime-Show-Page **Repository Path**: RoderickXiang/Laptime-Show-Page ## Basic Information - **Project Name**: Laptime-Show-Page - **Description**: 关于纽伯格林量产车的展示界面 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README - [简介](#简介) - [核心功能](#核心功能) - [具体实现](#具体实现) - [数据库设计](#数据库设计) - [文件上传以及前端回显](#文件上传以及前端回显) - [前端发送数据](#前端发送数据) - [后端接收数据](#后端接收数据) - [前端回显图片(不经过后端)](#前端回显图片不经过后端) - [防止明文密码泄露](#防止明文密码泄露) - [导包](#导包) - [配置](#配置) - [获取加密字符](#获取加密字符) ## 简介 springboot的练手项目,没有使用前后端分离,直接使用thymleaf模板引擎和jsp类似 1. 项目简介展示 2. SpringBoot介绍 3. Thymleaf模板引擎 4. SpringSecurity 5. CRUD操作 6. 百度接口 7. AJAX发送数据 8. 前端回显 ## 核心功能 1. 对于车辆圈速的展示 2. 简单的CRUD,实现对车辆成绩的增删改查 3. 继承SpringSecurity实现登录 4. 图片上传和前端回显 5. 调用百度智能接口实现车辆识别 ## 具体实现 ### 数据库设计 数据库: 由于核心功能是比较圈速,所以核心是对时间的比较(因为要排序) 在数据库中使用time(2)保留秒后两位 后端: 从前端接收字符串,然后转换为特定的日期格式入库 ```java lap_time = new SimpleDateFormat("mm:ss.SSS").parse(lap_timestr); ``` 入库: ```xml insert into vehicle (model_name,lap_time,introduction) value (#{model_name},#{lap_time},#{introduction}) ``` ### 文件上传以及前端回显 #### 前端发送数据 1. 使用post提交数据 2. enctype="multipart/form-data" 3. input标签 type="file" ```html
``` #### 后端接收数据 后端接收: ```java @PostMapping("/management/vehicleIdentification") @ResponseBody public String vehicleIdentification(@RequestParam("file") MultipartFile file) throws IOException { file.transferTo(new File("PATH")) //储存文件 return null; } ``` #### 前端回显图片(不经过后端) 获取图片的src: ```javascript function getObjectURL(file) { //获取上传图片的地址生成零时文件(名称为uuid) let url = null; if (window.createObjectURL !== undefined) { // basic url = window.createObjectURL(file); } else if (window.URL !== undefined) { // mozilla(firefox) url = window.URL.createObjectURL(file) } else if (window.webkitURL !== undefined) { // webkit or chrome url = window.webkitURL.createObjectURL(file); } return url; } ``` 修改图片: ```javascript let $file = $("#file"); //获取表单数据 let src = getObjectURL($file[0].files[0]); //转化为DOM对象后,获取文件(使用jQuery对象无法进行操作) $("#image").attr("src", src) //修改图片的src属性 ``` ### 防止明文密码泄露 #### 导包 ```xml com.github.ulisesbocchio jasypt-spring-boot-starter 3.0.2 ``` #### 配置 使用一个字符串作为解密密码 ```yml jasypt: encryptor: password: Roderick # 明文密码接管 ``` #### 获取加密字符 ```java @Autowired StringEncryptor stringEncryptor; @Test public void encryptTest() { String admin = stringEncryptor.encrypt("admin"); //加密 System.out.println(stringEncryptor.decrypt(admin)); //解密 } ``` 开始运行(配置了解密密码),可以直接从配置文件中获取解密的密码 ```java @Value("${baidu.SECRET_KEY}") private String SECRET_KEY; ``` 如果没有配置解密密码会导致无法解析ApplicationContext文件