网站建设教程要去d湖南岚鸿询 问,网站的颜色,如何注册一个网站域名备案,手机可以开发网站文章目录一、引入数据库1.安装数据库2. 安装mysql3. MySQL客户端4. .使用 Navicat 创建数据库与表二、使用数据库验证登录1.项目相关配置2.登录控制器2.1. User 类2.2. UserDAO2.3. UserService2.4. LoginController2.5. 测试一、引入数据库
1.安装数据库
官网地址#xff1…
文章目录一、引入数据库1.安装数据库2. 安装mysql3. MySQL客户端4. .使用 Navicat 创建数据库与表二、使用数据库验证登录1.项目相关配置2.登录控制器2.1. User 类2.2. UserDAO2.3. UserService2.4. LoginController2.5. 测试一、引入数据库
1.安装数据库
官网地址https://dev.mysql.com/downloads/mysql/
2. 安装mysql
win10 下安装、配置、启动mysql https://gblfy.blog.csdn.net/article/details/90112245
3. MySQL客户端
操作 MySQL 有很多种方式可以先用 Navicat 参考连接 https://gblfy.blog.csdn.net/article/details/90403214
4. .使用 Navicat 创建数据库与表
下面的内容主要针对初次使用数据库的读者有经验的读者可以直接执行下面的 sql 语句记得先新建一个数据库名称最好叫 white_jotter方便以后的配置
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS user;
CREATE TABLE user (id int(11) unsigned NOT NULL AUTO_INCREMENT,username varchar(255) DEFAULT NULL,password varchar(255) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT2 DEFAULT CHARSETutf8;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO user VALUES (1, admin, 123);
按照上面贴出来的教程安装完 MySQL 和 Navicat 后打开 Navicat点击连接 - MySQL新建数据库连接
安装完 MySQL 会有几个默认的数据库这些不要动我们在连接即 WJ上右键新建一个数据库命名为 white_jotter字符集选择 UTF-8排序规则选择 utf8_general_ci 即可。 OK到现在为止数据库的操作就完成了。
二、使用数据库验证登录
上一篇中我们直接在后端的控制器中用如下语句判断了用户名和密码的正确性
if (!Objects.equals(admin, username) || !Objects.equals(123456, requestUser.getPassword())) {String message 账号密码错误;System.out.println(test);return new Result(400);} else {return new Result(200);}
使用数据库验证的逻辑其实也类似大概是如下过程
第一步获得前端发送过来的用户名和密码信息 第二步查询数据库中是否存在相同的一对用户名和密码 第三步如果存在返回成功代码200如果不存在返回失败代码400
这里的语句很简单但在修改之前还需要一些准备工作。
1.项目相关配置
打开我们的后端项目 wj首先修改 pom.xml配置我们需要的依赖。为了方便以后的开发我直接把我的配置粘贴上来大家可以把原来的所有配置删除掉再粘贴我的。
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.2.2.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.gblfy/groupIdartifactIdwj/artifactIdversion0.0.1-SNAPSHOT/versionnamewj/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependencies!-- springboot web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- springboot tomcat 支持 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactIdscopeprovided/scope/dependency!-- 热部署 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdoptionaltrue/optional/dependency!-- jpa--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId/dependency!-- redis --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- springboot test --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- thymeleaf --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId/dependency!-- elastic search --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactId/dependency!-- 用了 elasticsearch 就要加这么一个不然要com.sun.jna.Native 错误 --dependencygroupIdcom.sun.jna/groupIdartifactIdjna/artifactIdversion3.0.9/version/dependency!-- thymeleaf legacyhtml5 模式支持 --dependencygroupIdnet.sourceforge.nekohtml/groupIdartifactIdnekohtml/artifactIdversion1.9.22/version/dependency!-- 测试支持 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency!-- tomcat的支持.--dependencygroupIdorg.apache.tomcat.embed/groupIdartifactIdtomcat-embed-jasper/artifactIdversion8.5.23/version/dependency!-- mysql--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.21/version/dependency!-- junit --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependency!-- commons-lang --dependencygroupIdcommons-lang/groupIdartifactIdcommons-lang/artifactIdversion2.6/version/dependency!-- shiro --dependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-spring/artifactIdversion1.3.2/version/dependency!-- hsqldb --dependencygroupIdorg.hsqldb/groupIdartifactIdhsqldb/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project
粘贴过去之后IDE 会弹出提示点击 Import Changes 或 Enable Auto-Import 都可以。 接下来就等待依赖的自动安装。过程可能比较长。如果自动安装的过程没有执行可以在 pom.xml 上右键选择 Maven - Reimport 。
配置完依赖后还需要配置数据库。打开 src\main\resources\application.yml在原来的基础上添加如下语句
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/white_jotter?characterEncodingUTF-8driver-class-name: com.mysql.jdbc.Driverusername: rootpassword: rootjpa:hibernate:ddl-auto: none注意端口、数据库名、用户名、密码要与你想使用的数据库一致。
2.登录控制器
配置完成后我们就可以完善登录控制器了。
2.1. User 类
首先我们修改 User 类代码如下以建立对数据库的映射。
package com.gblfy.wj.pojo;import com.fasterxml.jackson.annotation.JsonIgnoreProperties;import javax.persistence.*;Entity
Table(name user)
JsonIgnoreProperties({handler, hibernateLazyInitializer})
public class User {IdGeneratedValue(strategy GenerationType.IDENTITY)Column(name id)int id;String username;String password;public int getId() {return id;}public void setId(int id) {this.id id;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}
}上面使用了一些注解其中
Entity 表示这是一个实体类 Table(name“user”) 表示对应的表名是 user
为了简化对数据库的操作我们使用了 Java Persistence APIJPA对于 JsonIgnoreProperties({ “handler”,“hibernateLazyInitializer” })解释起来比较复杂下面的话看不懂可以忽略 因为是做前后端分离而前后端数据交互用的是 json 格式。 那么 User 对象就会被转换为 json 数据。 而本项目使用 jpa 来做实体类的持久化jpa 默认会使用 hibernate, 在 jpa 工作过程中就会创造代理类来继承 User 并添加 handler 和 hibernateLazyInitializer 这两个无须 json 化的属性所以这里需要用 JsonIgnoreProperties 把这两个属性忽略掉。 2.2. UserDAO
Data Access Object数据访问对象DAO即用来操作数据库的对象这个对象可以是我们自己开发的也可以是框架提供的。这里我们通过继承 JpaRepository 的方式构建 DAO。
首先新建一个 package命名为 dao然后创建 Java Class命名为 UserDAO选择种类为 Interface
package com.gblfy.wj.dao;import com.gblfy.wj.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;public interface UserDAO extends JpaRepositoryUser, Integer {User findByUsername(String username);User getByUsernameAndPassword(String username, String password);
}这里关键的地方在于方法的名字。由于使用了 JPA无需手动构建 SQL 语句而只需要按照规范提供方法的名字即可实现对数据库的增删改查。
如 findByUsername就是通过 username 字段查询到对应的行并返回给 User 类。
这里我们构建了两个方法一个是通过用户名查询一个是通过用户名及密码查询。
2.3. UserService
新建 package命名为 service新建 Java Class命名为 UserService代码如下
package com.gblfy.wj.service;import com.gblfy.wj.dao.UserDAO;
import com.gblfy.wj.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;Service
public class UserService {AutowiredUserDAO userDAO;public boolean isExist(String username) {User user getByName(username);return null ! user;}public User getByName(String username) {return userDAO.findByUsername(username);}public User get(String username, String password) {return userDAO.getByUsernameAndPassword(username, password);}public void add(User user) {userDAO.save(user);}
}这里实际上是对 UserDAO 进行了二次封装一般来讲我们在 DAO 中只定义基础的增删改查操作而具体的操作需要由 Service 来完成。当然由于我们做的操作原本就比较简单所以这里看起来只是简单地重命名了一下比如把 “通过用户名及密码查询并获得对象” 这种方法命名为 get。
2.4. LoginController
登录控制器是我们功能的核心部分尽管它十分简单。逻辑上面已经讲过了具体的实现就是通过 UserService 提供的 get 方法查询数据库如果返回的对象为空则验证失败否则就验证成功。代码如下
package com.gblfy.wj.controller;import com.gblfy.wj.pojo.User;
import com.gblfy.wj.result.Result;
import com.gblfy.wj.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.util.HtmlUtils;Controller
public class LoginController {AutowiredUserService userService;CrossOriginPostMapping(value /api/login)ResponseBodypublic Result login(RequestBody User requestUser) {String username requestUser.getUsername();username HtmlUtils.htmlEscape(username);User user userService.get(username, requestUser.getPassword());if (null user) {return new Result(400);} else {return new Result(200);}}
}
这个没有其它要说的忘记了怎么回事的话可以回过头看下上一篇文章
2.5. 测试
同时运行前端项目 wj-vue 与后端项目 wj
访问 http://localhost:8080/#/login输入用户名 admin密码 123456我去没进去没进去就对了因为数据库中 admin 的密码式 123 啊。
重新输入密码 123成功进入 localhost:8080/#/index OK截至目前前后端、数据库之间的关系都打通了。下一篇我打算讲讲怎么做表面功夫即通过 Element 优化前端的界面。