springboot实现登录功能
springboot实现登录功能
springboot实现登录功能需完成以下步骤:
- 实现springboot启动器
- 使用maven下载相应的包
- 配置resources目录下的application.yaml文件
- 编写数据库entity实体层、service业务层
- 实现公共函数result
- 编写controller控制层
springboot启动类
使用idea创建的springboot项目,会自动生成启动类,有@SpringBootApplication
注解的类就是启动类
springboot使用maven
springboot生成后在会生成pom.xml,在pom.xml
写对应的包名、版本、下载链接,点击idea右上角的刷新按钮就可以自动下载,但是包下载的路径是在哪里呢?
这就需要修改一下idea的maven设置了,
File >> setting >> 搜索maven
页面有三个设置需要修改:
- Maven home directory(maven安装路径)
- User setting file(maven配置文件路径)
- Local repository(包下载路径)
- 注意:包的下载路径尽量放在repository目录(自己手动创建该目录)下,不然可能会报错,找不到对应的包
配置resources目录下的application.yaml文件
application.yaml
是springboot的配置文件,yaml类型需使用key: value方式,:
后面一定要跟空格分隔。使用登录只需要设置数据库和端口号
server:
port: 8081
spring:
datasource:
username: root
password: 123
url: jdbc:mysql://localhost:3306/exam?serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
port
是sprongboot启动后的访问端口username
是数据库的登录用户名password
是登录密码url
数据库访问地址,jdbc:mysql://localhost:3306可直接复制,exam
是我的数据库名字,serverTimezone=Asia/Shanghai
设置时区,不设置有时会报错, driver-class-name
是mysql驱动,MySQL版本以上使用com.mysql.cj.jdbc.Driver
,mysql5及以下使用 com.mysql.jdbc.Driver
。
编写数据库entity实体层、service业务层
springboot在maven中配置mybatis-plus依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
entity实体层为数据库添加字段映射
service业务层包含数据库的常用操作
实体层
实体类主要是为了方便在java代码中使用数据库字段,实现java属性与数据库字段的一个一个地映射。
在springboot启动类同级目录下新建一个entity目录,entity目录下新建一个Entity类
使用lombok依赖可以减少代码开发量,lombok会生成get、set方法@data注解
:生成所有属性的get、set方法@AllArgsConstructor
:生成该类下全部属性的构造方法NoArgsConstructor
:生成无参的构造方法
服务层service
服务层可以实现数据库常用操作:增删改查,这些命令都已写好,可以直接使用,减少大家开发量。
在springboot启动类同级目录下新建一个service目录,service目录下新建一个EmployeeService接口,该接口继承mybatisplus的IService接口
public interface EmployeeService extends IService<Employee> {
}
然后在EmployeeService同级目录下新建一个impl目录,该目录下新建EmployeeImplService类,@Service标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {
}
EmployeeServiceImpl
继承mybatisplus的ServiceImpl
再实现刚才的EmployeeService
接口。
到现在为止,数据库相关配置已经做好了
实现公共函数result
web应用中,后端和前端交互,返回值包含:数据、返回码、消息
这些事每次交互都会返回的,既然每次访问都需要返回,那这个功能可以提取出来,作为一个公共类Result
在启动类同级目录下创建common目录,在该目录下创建Result类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> {
private Integer code;
private String msg;
private T data;
private Map map = new HashMap();
public static <T> Result<T> success(T data){
Result<T> result = new Result<>();
result.data = data;
result.code = 1;
return result;
}
public static <T> Result<T> error(String msg){
Result<T> result = new Result<>();
result.msg = msg;
result.code = 0;
return result;
}
}
定义了success、error两个方法,一个是访问成功的返回、一个是访问失败的返回。
编写controller控制层
最后一步,编写controller层,该层实现路由控制以及具体的功能
在启动类同级目录下创建controller目录,该目录下创建EmployeeController类
@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
/**
* 员工登录
* @param request
* @param employee
* @return
*/
@PostMapping("/login")
public Result<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
//1、讲页面提交的密码进行md5加密
String password = employee.getPassword();
password = DigestUtils.md5DigestAsHex(password.getBytes());
//2、根据用户名查数据库
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Employee::getUsername, employee.getUsername());
Employee emp = employeeService.getOne(queryWrapper);
//3、没有查询到结果则返回登录失败
if(emp ==null){
return Result.error("登陆失败");
}
if (!emp.getPassword().equals(password)) {
return Result.error("登录失败");
}
if (emp.getStatus() == 0) {
return Result.error("该用户已被禁用");
}
//存个Session,只存个id就行了
request.getSession().setAttribute("employee",emp.getId());
return Result.success(emp);
}
@Slf4j
是日志注解,使用该注解之后,在类中可以直接使用log
方法生成日志@RestController
注解是Spring MVC中的一个组件,用于将Java类标记为处理RESTful请求的控制器@RequestMapping("/employee")
注解使得该类所有的控制器方法映射的请求前面都加上/employee
EmployeeController 类中先声明了employeeService,用于使用数据库的增删改查@PostMapping("/login")
注解代表网页访问/login时,会使用当前方法,且使用的是POST方式访问。
然后就是具体的login方法,这里实现了
- 将页面提交的密码进行md5加密
- 根据用户名查询数据库
- 若没有查询到该用户、密码不一致、用户被禁用则返回
登录失败
- 登录成功,在session中保存id值
到这里为止登录的后端就已经写好了,只需要配置好前端的代码就可以实现登录功能了。
###启动
运行springboot启动类,在终端显示下列信息则成功:
在浏览器访问:http://localhost:8081/employee/login
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhfhfk
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01