Java 后端实现登录+环境配置

欢迎页面

同意协议

设置安装路径

创建桌面快捷方式

点击安装

安装完成

下载破解激活补丁后,点击无限试用Navicat.bat

百度网盘 下载激活补丁 提取码: uvii

将winmm.dll复制到安装navicat目录,默认目录如下

激活成功

打开Navicat17 看到没有试用提示和激活提示,说明破解成功。此时已永久激活

下载Intellij idea

安装

设置安装路径

设置安装选项

开始 安装

安装完成

Intellij Idea 激活教程

百度网盘 下载激活软件

提取码: fi68

解压zip并进入scripts目录

运行激活脚本

Windows 双击运行install-all-users.vbs

MAC/Linux运行install.sh

等待一会,直至出现Done

打开IDEA激活

再选择Activation code

输入 IDEA激活码.txt 中的激活码,点击Activate,完成激活 下载激活码 百度网盘提取码: 17z6

若激活后提示激活码无效或者We could not validate your license FV8EM46DQYC5AW9或者This license 00T7D0MMPl has been suspended等情况,可配置代理解决

配置代理:

安装MySQL数据库

下载MySQL

设置安装路径

MySQL 配置

验证MySQL 数据库是否安装成功

出现如下图所示表示安装成功

标题
数据库命名 最好和导入的sql文件名一样
字符集 选择utf8的。(mb3和mb4区别就是mb4能表示更多的字符,如果用不到扩容去选择utf8mb4会有点浪费空间)
排序规则填写 选择general_ci结尾的(ci:大小写不敏感、cs:区分大小写、bin:以二进制存储并且区分大小写)

创建一张用户表

在数据中插入数据

Spring Boot 项目创建

创建Bean类

kotlin 复制代码
package com.shop.app.entity;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Getter;
import lombok.Setter;


@Getter
@Setter
public class User {
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Integer id;
    // todo 账号
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String account;
    // todo 密码
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String password;
    // todo 登录的token
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String token;
}

创建UserMapper

arduino 复制代码
package com.shop.app.dao;


import com.shop.app.entity.User;

public interface UserMapper {

    /**
     * 插入用户
     */
    int insertUser(User user);

    /**
     * 根据用户名称查询
     */
    int selectUserCountByAccount(String account);

}

创建UserService

arduino 复制代码
package com.shop.app.service;

import com.shop.app.entity.User;

public interface UserService {

    /**
     * 插入用户
     */
    int insertUser(User user);

    /**
     * 根据用户名称查询
     */
    int selectUserCountByAccount(String account);
}

实现UserService接口

java 复制代码
package com.shop.app.service.impl;

import com.shop.app.dao.UserMapper;
import com.shop.app.entity.User;
import com.shop.app.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


@Service
public class UserServiceImpl implements UserService{

    private final UserMapper userMapper;

    @Autowired
    public UserServiceImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public int insertUser(User user) {
        return userMapper.insertUser(user);
    }

    @Override
    public int selectUserCountByAccount(String account) {
        return userMapper.selectUserCountByAccount(account);
    }

}

创建UserController

java 复制代码
package com.shop.app.controller;

import com.shop.app.common.Constants;
import com.shop.app.common.ServiceResultEnum;
import com.shop.app.entity.User;
import com.shop.app.service.UserService;
import com.shop.app.util.JwtUtil;
import com.shop.app.util.result.Result;
import com.shop.app.util.result.ResultGenerator;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

@Controller
public class UserController {

    @Resource
    UserService userService;

    // todo 登录
    @RequestMapping(value = Constants.API_LOGIN, method = RequestMethod.POST)
    @ResponseBody
    public Result<Object> apiLogin(@ModelAttribute User user) {
        // todo 注册手机号码
        String account = user.getAccount();
        if (Objects.isNull(account)) {
            return ResultGenerator.genFailResult("参数异常!");
        }

        // todo 查询 注册的用户
        int count = userService.selectUserCountByAccount(account);
        if (count > 0) {
            String jwtToken = getJwtToken(user);
            user.setToken(jwtToken);
            // todo 清空账号
            user.setAccount(null);
            // todo 清空密码
            user.setPassword(null);
            // todo 返回登录的用户信息
            return ResultGenerator.genSuccessDataResult(user);
        }

        // todo 登录失败
        String loginFailMsg = ServiceResultEnum.LOGIN_FAIL.getResult();
        return ResultGenerator.genFailResult(loginFailMsg);
    }

    // todo 生成 token
    private String getJwtToken(User user) {
        // todo 其他数据以map集合存放在token中
        Map<String, String> dataMap = new HashMap<>();
        dataMap.put("account", user.getAccount());
        // todo 生成token并存入数据返回
        return JwtUtil.getToken(dataMap);
    }

}

配置 application.properties

ini 复制代码
spring.application.name=app

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

# 指定数据源名称
spring.datasource.name=database_name_datasource
spring.datasource.url=jdbc:mysql://localhost:3306/database_name?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
#数据库登录账号 root
spring.datasource.username=root
# 数据库登录密码 mima123123
spring.datasource.password=mima123123

mybatis.mapper-locations=classpath:mapper/*Mapper.xml

spring.servlet.multipart.max-request-size=500MB
spring.servlet.multipart.max-file-size=10MB

server.port=8085

debug=false

pom.xml 文件配置

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.6.6</version>
       <relativePath/>
    </parent>
    <groupId>com.shop</groupId>
    <artifactId>app</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>app</name>
    <description>Demo project for Spring Boot</description>
    <url/>
    <licenses>
       <license/>
    </licenses>
    <developers>
       <developer/>
    </developers>
    <scm>
       <connection/>
       <developerConnection/>
       <tag/>
       <url/>
    </scm>
    <properties>
       <java.version>21</java.version>
    </properties>
    <dependencies>
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
       </dependency>

       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
       </dependency>

       <!-- todo JDBC场景依赖-->
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
       </dependency>

       <!-- todo MySQL场景依赖-->
       <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <scope>runtime</scope>
       </dependency>

       <!-- 引入 MyBatis 场景启动器,包含其自动配置类及 MyBatis 3 相关依赖 -->
       <dependency>
          <groupId>org.mybatis.spring.boot</groupId>
          <artifactId>mybatis-spring-boot-starter</artifactId>
          <version>2.1.3</version>
       </dependency>

       <!-- todo jwt-->
       <dependency>
          <groupId>com.auth0</groupId>
          <artifactId>java-jwt</artifactId>
          <version>3.18.2</version>
       </dependency>

       <!-- todo Lombok引入-->
       <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
       </dependency>

       <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
       </dependency>

       <dependency>
          <groupId>com.google.code.gson</groupId>
          <artifactId>gson</artifactId>
          <version>2.8.6</version>
       </dependency>

    </dependencies>

    <build>
       <plugins>
          <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-compiler-plugin</artifactId>
             <configuration>
                <source>11</source>
                <target>11</target>
             </configuration>
          </plugin>
       </plugins>
    </build>

</project>

项目结构

运行项目

项目案例

相关推荐
czlczl200209251 小时前
告别 try-catch 地狱:Spring Boot 全局异常处理 (GlobalExceptionHandler) 最佳实践
java·spring boot·后端
Goldn.7 小时前
Java核心技术栈全景解析:从Web开发到AI融合
java· spring boot· 微服务· ai· jvm· maven· hibernate
李慕婉学姐8 小时前
【开题答辩过程】以《基于Android的出租车运行监测系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·后端·vue
m0_740043738 小时前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
编织幻境的妖8 小时前
SQL查询连续登录用户方法详解
java·数据库·sql
未若君雅裁9 小时前
JVM面试篇总结
java·jvm·面试
kk哥88999 小时前
C++ 对象 核心介绍
java·jvm·c++
招风的黑耳9 小时前
我用SpringBoot撸了一个智慧水务监控平台
java·spring boot·后端
xunyan62349 小时前
面向对象(下)-接口的理解
java·开发语言
程序员游老板10 小时前
基于SpringBoot3+vue3的爱心陪诊平台
java·spring boot·毕业设计·软件工程·课程设计·信息与通信