自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 16.用户搜索历史保存到redis中

目的:将用户搜索的关键词保存到redis中,且只显示最近的8条,在redis中,key的格式是HISTORY+用户的id实现方式:使用单键多值的列表实现具体代码package com.cy.store.util;import com.cy.store.common.Const;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.Redis

2022-05-19 23:01:42 1168 2

原创 15.登录模块增加验证码部分

验证码登录流程,别人博客看的实现过程之前SSM其实就做过了,保存session中,只不过之前是将验证码的值放到session中,而这次是将验证码的值保存到redis中,并给它设置一个过期时间,120秒引入redis和Kaptcha依赖<!--kaptcha依赖--><dependency> <groupId>com.github.axet</groupId> <artifactId>kaptcha</artifactI

2022-05-19 22:48:15 366

原创 14.设置默认地址模块

1.业务分析可能存在的异常: 用户在设置的时候,该地址可能同时被管理员删除,抛AddressNotFoundException异常在设置当前地址为默认之前,将该用户的所有地址都设置成非默认,即is_default设置成为0根据地址的id设置其字段is_default为12.持久层接口及mapper映射/** *@描述 根据aid查找收货地址是否存在 *@参数 收货地址id *@返回值 收货地址 *@创建人 ZhangHailong */Address selectAddressBy

2022-05-15 12:16:31 401

原创 13.用户收货地址展示

1.持久层根据用户的id查找收货地址/** *@描述 根据用户id查找他的收货地址 *@参数 用户id *@返回值 收货地址列表 *@创建人 ZhangHailong */List<Address> selectAddressesByUid(Integer uid);<!--...........................收货地址展示start...............................--><resultMap id="add

2022-05-15 12:00:09 373

原创 12.收货地址模块-新增收货地址②

本博客处理该部分1.业务流程首先通过观察表得知,该表是将省、市、区都进行了存放,省的parent是国(编号是86),市的parent是省(编号依省而定),区的parent是市(编号依市而定),用户在页面的操作肯定是,先选择省份下拉框,得到所有市的数据,选择市以后,得到所有区的数据,再加上省一开始就能选择,说明进入页面以后,发送了一次请求,得到国家下的所有省份,综合以上操作,都是根据parent进行查询查询到的数据返回给前端,前端将下拉框里的选项和数据中的code进行绑定,以便进行下一级的查询返回

2022-05-15 11:42:27 448

原创 11.收货地址模块-新增收货地址①

1.前端输入的信息后端用Address实体类对象接收,接收的数据存到对象中的数据有private String name; // 收货人姓名private String provinceCode; // 省份编号private String cityCode; // 城市编号private String areaCode; // 区县编号private String zip; // 邮政编号private String address; // 详细地址private String ph

2022-05-15 11:18:46 1439

原创 10.集成Swagger2

1.添加pom依赖<!--swagger2依赖--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><dependency> <groupId>io.sprin

2022-05-14 23:09:10 279

原创 9.上传头像模块

持久层更新用户的头像的流程: 将用户的头像保存到服务器,然后将头像的地址更新到数据库中,一般存放的是相对路径,这对服务器迁移提供方便,但是这里仅实现将头像文件保存到本地,并将文件地址存放到数据库中保存头像的持久层操作是: 将用户更新后的头像地址,更新人,更新时间存放到数据库中<update id="updateAvatarByUid"> UPDATE t_user SET avatar=#{avatar}, modified_user=#{m

2022-05-13 12:02:09 481

原创 8.修改密码模块

修改密码模块功能用户在前端输入的原密码加密后与数据库中的原密码不一致,抛出PasswordNotFoundException异常新密码加密存储1.持久层修改用户密码持久层核心代码<update id="UpdatePassword" > UPDATE t_user SET password=#{password}, modified_user=#{modifiedUser}, modified_time=#{modifie

2022-05-12 10:28:37 673

原创 7.登录模块-控制层开发

控制层基类添加功能session中的uid和username在后续的其他模块中也能使用,并且只在控制层会使用到,所以将获取uid和username声明到控制层的基类BaseController中package com.cy.store.controller;import com.cy.store.service.ex.*;import com.cy.store.util.JsonResult;import org.springframework.web.bind.annotation.Exc

2022-05-12 10:02:50 159

原创 6.登录模块-业务层开发

业务层要实现的功能拦截所有的请求,根据session中是否存在uid判断用户是否已经登录,如果登录,放行请求,如果没有登录,如果访问的网址不在白名单内,就跳转到登录页面根据用户名查找是否存在该用户,如果不存在,抛出UserNotFoundException异常还需要判断用户在登录页面输入的登录名在库中对应的用户是否已经逻辑删除,如果已经逻辑删除,则抛出UserNotFoundException异常该登录用户名的用户存在,根据用户的盐值对登录密码进行加密,加密后与查找结果的密码比对,不同抛出Pass

2022-05-12 09:58:00 188

原创 5.登录模块-持久层开发

登录模块要实现的功能用户输入用户名和密码验证登录实现思路: 用户在前端输入登录用户名和登录密码以后,后台接收,在持久层的操作是,根据用户名去查找用户,①如果找到了该用户名的用户,根据结果的盐值将登录密码加密,与结果中的密码进行验证,②如果没找到,抛出UserNotFound异常,③如果用户名和密码不匹配,抛出PasswordNotMatchException异常用户在第一次登录以后,将uid和username存放到session中,头像存放到cookie中系统检测用户是否登录,如果没有登录,

2022-05-12 09:12:52 200

原创 4.注册模块-控制层开发

响应体响应体应该包含状态码,描述信息(如果需要的话),响应数据(如果需要的话)package com.cy.store.util;import java.io.Serializable;/** * @author ZhangHailong * @date 2022/5/10 - 9:12 * @project_name 统一使用json格式的数据进行响应 */public class JsonResult<E> implements Serializable{

2022-05-10 11:33:27 106

原创 3.用户注册-业务层开发

用户注册模块需要关注的事项业务层要抛出可能存在的异常,而用户注册过程中可能出现的异常有用户名已被其他用户使用,服务器宕机,数据库宕机等问题,都是运行时异常,所以创建一个业务层异常基类,继承运行时异常,重写它的方法package com.cy.store.service.ex;/** * @author ZhangHailong * @date 2022/5/9 - 21:09 * @project_name 业务层异常的基类,业务层的异常只会发生在运行时,所以继承RuntimeExcept

2022-05-10 11:22:43 274

原创 2.用户注册-持久层开发

创建用户表CREATE TABLE t_user ( uid INT AUTO_INCREMENT COMMENT '用户id', username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名', password CHAR(32) NOT NULL COMMENT '密码', salt CHAR(36) COMMENT '盐值', phone VARCHAR(20) COMMENT '电话号码', email VARCHAR(30) COMMENT '电

2022-05-10 11:00:22 135

原创 1.开发环境+新建项目

开发环境jdk版本: 1.8maven版本: 3.8.4MySQL数据库版本: 5.5.27新建springboot项目有网的情况下项目命名,注意这里使用jdk8选择依赖, ①Web下的Spring Web ②SQL下的MyBatis Framework ③SQL下的MySQL Driver选择项目存放位置项目结构创建名为store的数据库,偷个懒,用可视化工具navicat创建配置文件application.propertiesspring.datasou

2022-05-10 10:25:34 227

原创 6.pagehelper+el-pagination

因为在项目中有很多视频展示模块,都会用到分页查询,所以使用pageHelper和el-pagination进行实现,参考博客后端部分,以分页查看BATB视频为例添加pom依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version&gt

2022-04-03 15:06:32 728

原创 5.主页部分

轮播图插件: vue-awesome-swiper此时还未集成element-ui,所以图片轮播就找了一个插件,参考博客使用步骤:安装vue-awesome-swiper(安装稳定版本2.6.7)npm install vue-awesome-swiper@2.6.7 --save引入vue-awesome-swiper:一般通过main.js进行全局引入import VueAwesomeSwiper from ‘vue-awesome-swiper’import ‘swiper/d

2022-04-03 14:50:45 966

原创 4.公共组件

创建公共组件headerheader组件还有其子组件LoginAbout和LoginAboutNull,用户登录成功以后,将id用sessionStorage保存,通过判断sessionStorage中的id是否为空显示LoginAbout还是LoginAboutNull组件<!-- Header部分 --><template> <div id="header" ref="header"> <!-- 颜色选择器 --> &l

2022-04-03 14:39:29 900

原创 3.购买服务器并部署

购买服务器我购买的是阿里云的服务器,参考教学视频前端部署我使用的是nginx部署的前端,nginx配置如下在服务器中新建路径 /mydata/frontCode, 然后将前端项目通过 npm run build指令打包,将打包生成的dist文件夹通过Xftp上传到创建的该路径下,给该vue项目888端口,注意: 别忘记在阿里云服务器的安全组里添加后端部署宝塔面板在安装的时候,会提供tomcat的安装,但是我给卸载了,手动安装了一遍,参考博客但是这篇博客的打包项目的步骤我试了之后无效,看了

2022-04-03 13:33:40 1886

原创 0.准备工作

该项目的想法

2022-04-03 12:45:42 820

原创 2.注册模块

注册页面主要实现的功能① 验证vip: 非vip用户不得注册② 用户头像上传并回显,默认显示默认头像③ 验证用户的注册是否是第二次注册④ 用户注册成功,添加登录日志一. 验证vip: 用户在输入学号和姓名的时候,姓名输入框失去焦点触发axios请求,在数据库中的vip表查询是否存在该用户,如果存在返回true,否则返回false,返回false,弹出提示框提示信息,并在用户点击确定之前,清空刚才输入的信息,并重新将焦点定位到学号一栏页面显示前端代码一, 验证是否存在该vipche

2022-03-13 19:53:32 3411

原创 1.登录模块

登录模块主要实现的功能有:① 登录功能: 用户输入学号,密码,验证码验证登录② 用户登录日志: 用户登录成功后,将用户的学号,登录时间,ip地址存入数据库一. 登录功能验证码模块实现的思想: 后台将生成验证码传给前端,并同时保存到session中, 用户输入学号,密码,验证码发送给后端, 后端取出session中的验证码进行对比,如果验证码错误,直接返回字符串"验证码错误", 如果验证码正确,继续查找是否存在该用户,如果存在, 返回"用户存在", 不存在返回 “用户不存在”验证码实现: 我

2022-03-13 18:16:14 5602 2

原创 饿汉式和懒汉式实现单例模式

单例模式采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法饿汉式实现单例模式class SingleTon { private String name; // get,set方法 public String getName() { return name; } public void setName(String name) { this.name = name;

2022-02-01 10:55:14 722

原创 访问修饰符的访问控制和关键字的使用

访问修饰符访问控制private缺省protectedpublic同一类中的其他成员√√√√同一个包中的其他类×√√√不同包中的子类××√√不同包中的非子类×××√this关键字this修饰属性,方法this调用构造器super关键字this和super使用的注意事项static关键字final关键字abstract关键字...

2022-01-27 21:03:51 231

原创 基本数据类型,包装类,String之间的转换

2022-01-26 23:43:46 267

原创 接口以及它的实现类的方法的调用注意事项

jdk8开始,允许接口中定义静态方法和默认方法一. 静态方法: 只能通过接口调用interface TestCall { public static void fun() { System.out.println("这里是接口的静态方法"); }}class TestCallImp implements TestCall { public static void main(String[] args) { // 静态成员随着接口的加载而加载,只能通过接口调用

2022-01-26 13:44:52 2912

原创 子类同时继承父类和实现接口,如果出现同名的属性或同名同参的方法,子类如何调用

父类和接口有同名的属性如果父类和接口中有同名的属性,子类继承父类又实现接口,那么调用这个属性的时候,就会报错class Person { int x = 10;}interface Behavior { int x = 20;}class Student extends Person implements Behavior { public static void main(String[] args) { System.out.println(x);

2022-01-26 12:35:31 1914

原创 ==和Object.equals()的区别以及重写equals()方法

==的作用作用: ==是一个运算符,可以参与基本数据类型的比较和引用数据类型的比较==比较基本数据类型==比较两个基本数据类型的数值是否相等,注意: 基本数据类型存在自动类型提升,所以参与比较的两个数据也可能是不同类型的 // int->double自动类型提升 int a = 10; double b = 10.0; System.out.println(a == b); // true==比较引用数据类型==比较引用数据类型,比较的是两个

2022-01-26 12:19:38 225

原创 java匿名对象

匿名对象以及在抽象类的子类和接口的实现类中创建匿名对象

2022-01-25 21:11:17 1927

原创 仿B站首页头部动画的实现

B站的前端样式一直是我学习和模仿的对象,特别是它的首页头部动画,可以随着鼠标的移动进行场景的变化,很酷,所以我对它进行了大体上的模仿废话不多说,先看效果完整代码如下:这里将css、js、html代码整合到一块去了,大家也可以去码云自行下载<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" c

2021-03-22 16:37:29 2237 11

原创 scala插件和IDEA不兼容解决方案

出现"Plugin ‘Scala’ is incompatible with this installation"的错误,就是scala插件和IDEA不兼容File->Setting->Plugins,搜索scala,点击最左边install jetBrains…查看当前版本对应的scala插件版本 点击查看下载scala版本大全点击下载对应版本,无需解压插件下载完毕以后,IDEA内插件安装如下File->Setting->Plugins->搜索scala->

2020-06-29 23:17:23 1847

原创 scala安装和环境变量的配置

所有版本的scala链接:https://www.scala-lang.org/download/all.html,根据需求下载,我这里下载的是2.11.8版本的Windows可以下载msi或zip文件,我下载的是zip文件因为下载完以后要配置环境变量,所以路径不能存在中文接下来要配置环境变量:右击我的电脑->属性->高级系统设置->环境变量新建用户变量,名为SCALA_HOME 变量值为scala的安装路径再在path路径中新建变量,变量值精确到scala下的bin文件夹环

2020-06-22 21:39:21 461

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除