demo实现思路
前端编写登录页面,通过ajax发送登录验证请求,请求参数是username 和password,然后后端连接数据库,根据请求的username查询数据库,得到相对应账号的密码truepassword,验证这个数据库的密码和请求的密码是否一致,一致则登录成功。
后端项目搭建
前置条件
至少了解一下Springboot ,Mybatis
有 Eclipse java企业版,
有mysql数据库,
有下载相关springboot的插件
搭建数据库
在mysql中创建数据库firstdb,并创建user表:
mysql的安装可以参照我上一篇文章:window下的mysql安装
建表:
使用了sqlyog这个软件,如何安装这个软件,可以参考 windows 10安装sqlyog详细步骤
具体如何建表不多叙述,学过sql查询语句的应该都会
开始springboot项目搭建
勾选Spring web ,MyBatis Framework ,MySQL Driver,会自动生成对应的依赖
然后finish就行了。
自动生成的目录结构是这样的
在com.example.demo下创建4个包,分别是 controller (控制层),entity(实体层),mapper(映射层),service(业务层),4个包于Demo1Application.java(程序主入口)同级
在resources 包下建mapper包
修改配置文件
本文不使用application.properties文件 而使用更加简洁的application.yml文件。将resource文件夹下原有的application.properties文件删除,创建application.yml配置文件(备注:其实SpringBoot底层会把application.yml文件解析为application.properties)
步骤:
先创建application.properties文件的同级文件,application.yml文件
把application.properties文件删了,在application.yml文件上写入下面代码
server:
port: 8081
spring:
#数据库连接配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/firstdb?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: root
password: 123456
#mybatis的相关配置
mybatis:
#mapper配置文件
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.entity
#开启驼峰命名
configuration:
map-underscore-to-camel-case: true
根据实际情况修改配置!!!
创建demo包下的类
mapper层:
在demo下的mapper包下创建接口 UserMapper
并写上内容:
package com.example.demo.mapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface UserMapper {
List<User> findAll();
String getPassword(@Param("username") String username);
}
service层:
在demo包下的service下创建接口:UserService.java
写上下面代码:
package com.example.demo.service;
import com.example.demo.entity.User;
import java.util.List;
public interface UserService {
List<User> findAll();
String getPassword(String username);
}
然后在Service包下创建 包impl(ps:这个包用来写UserService的实现类),在impl包下创建接口的实现类:UserServiceimpl,并写上下面的代码:
package com.example.demo.service.impl;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("userService")
public class UserServiceimpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
@Override
public String getPassword(String username) {
return userMapper.getPassword(username);
}
//验证密码方法
public Boolean isPass(String username, String password) {
String truePassword =getPassword(username);
if (password.equals(truePassword))
return true;
else return false;
}
}
controller层:
在controller包下 创建类 UserController.java
并写上内容
package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.service.impl.UserServiceimpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@CrossOrigin
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserServiceimpl userServiceimpl;
@CrossOrigin
@RequestMapping("/findAll")
public List<User> findAll() {
return userServiceimpl.findAll();
}
@CrossOrigin
@RequestMapping("/isPass")
public Boolean isPass(String username, String password) {
boolean ispass = userServiceimpl.isPass(username,password);
return ispass;
}
}
entity层:
在entity包下创建实体类:user.java
该类与你的数据库建立的表相对应
并且需要有相当于的get set方法
package com.example.demo.entity;
public class User {
private int id;//编号
private String username;//用户名
private 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;
}
}
那么demo包的东西就写好了
最终,demo包下的结构是这样的:
在resources下的mapper包下创建UserMapper.xml
这个是写sql语句的mapper配置文件
里面的内容是:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="findAll" resultType="com.example.demo.entity.User">
select * from user
</select>
<select id="getPassword" resultType="String" >
SELECT PASSWORD FROM USER WHERE username=#{username}
</select>
</mapper>
编写主程序入口
在Demo1Application .java文件下写下面的代码
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.example.demo.mapper")
@SpringBootApplication
public class Demo1Application {
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
}
Api测试
在Demo1App