springboot 写一个用户登录注册的demo

用idea自动生成了项目之后,就可以直接访问项目了,但是目前的项目只能访问静态页面,无法实现相关功能。本篇以构建登录注册用户信息管理为demo,来讲解如何使用springboot。

首先,在数据库中创建一个数据表,然后使用idea自动生成持久化类,
点击file,选择项目结构,然后加入jpa到项目中
这里写图片描述
点击左下角的Persistence窗口,右键项目
这里写图片描述

这里写图片描述
选择之后看到
这里写图片描述

填写完之后就可以了。我在mysql中创建了如下的表:

USE `sbdemo`;

-- 导出  表 sbdemo.users 结构
CREATE TABLE IF NOT EXISTS `users` (
  `uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `userphone` bigint(20) DEFAULT NULL,
  `username` varchar(50) DEFAULT NULL,
  `nickname` varchar(50) DEFAULT NULL,
  `sex` int(11) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

生成的结果如下:

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Objects;

@Entity
@Table(name = "users", schema = "sbdemo", catalog = "")
public class UsersEntity {
    private int uid;
    private Long userphone;
    private String username;
    private String nickname;
    private Integer sex;

    @Basic
    @Column(name = "uid")
    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    @Basic
    @Column(name = "userphone")
    public Long getUserphone() {
        return userphone;
    }

    public void setUserphone(Long userphone) {
        this.userphone = userphone;
    }

    @Basic
    @Column(name = "username")
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Basic
    @Column(name = "nickname")
    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    @Basic
    @Column(name = "sex")
    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        UsersEntity that = (UsersEntity) o;
        return uid == that.uid &&
                Objects.equals(userphone, that.userphone) &&
                Objects.equals(username, that.username) &&
                Objects.equals(nickname, that.nickname) &&
                Objects.equals(sex, that.sex);
    }

    @Override
    public int hashCode() {

        return Objects.hash(uid, userphone, username, nickname, sex);
    }
}

然后到去创建一个仓库类

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface LoginRepository extends JpaRepository<UsersEntity,Integer> {
}

用于对数据库进行CRUD操作
然后写一个控制器,来处理相关的逻辑

@RestController
public class LoginController {
    @Autowired
    LoginRepository loginRepository;

    //写逻辑
}

通过@RestController表明这是一个控制器类,@Autowired用来进行自动依赖注入,将刚才定义的仓库注入到控制器中。
要写一个接口,首先得定义返回值类型和接收的参数。设计接收的参数为userphone和username,分别表示用户名和密码,用户名为电话号码。返回的参数为code表示成功或者失败,info代表错误提示信息。

@JsonInclude(JsonInclude.Include.NON_NULL)
public class LoginResultVo {
    private int code;
    private String info;
    public int getCode(){
        return code;
    }
    public String getInfo(){return info;}
    public void setInfo(int code){
        this.code = code;
    }
    public void setInfo(String info){
        this.info = info;
    }
}

接收的参数vo如下:

public class LoginRequestVo {
    private int userphone;
    private String username;
    public int getUserphone() {
        return userphone;
    }
    public void setUserphone(int userphone) {
        this.userphone = userphone;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
}

其中,@JsonInclude(JsonInclude.Include.NON_NULL) 是为了过滤不正常的输出(当输出为空的时候不输出)
一个简单的例子是这样的

@RequestMapping(value = "/login",method = { RequestMethod.POST})
    public LoginResultVo loginRequest(@RequestParam("data") String data){
        LoginResultVo loginResultVo = new LoginResultVo();
        try {
            Gson gson = new Gson();
            LoginRequestVo loginRequestVo = gson.fromJson(data,LoginRequestVo.class);


        }catch (Exception e){
            e.printStackTrace();
        }
        return loginResultVo;
    }

最后完整的代码如下:

 @RequestMapping(value = "/login",method = { RequestMethod.POST})
    public LoginResultVo loginRequest(@RequestParam("data") String data){
        LoginResultVo loginResultVo = new LoginResultVo();
        try {
            Gson gson = new Gson();
            LoginRequestVo loginRequestVo = gson.fromJson(data,LoginRequestVo.class);
            int userphone = loginRequestVo.getUserphone();
            String username = loginRequestVo.getUsername();
            UsersEntity usersEntity=loginRepository.findByUserphoneAndUsername(userphone);
            String password = usersEntity.getUsername();
            if (username.equals(password)){
                loginResultVo.setCode(200);
                loginResultVo.setInfo("密码正确,登录成功");
            }else{
                loginResultVo.setCode(400);
                loginResultVo.setInfo("密码错误,登录失败");
            }
            return loginResultVo;
        }catch (Exception e){
            e.printStackTrace();
        }
        return loginResultVo;
    }

猜你喜欢

转载自blog.csdn.net/xielinrui123/article/details/81143519
今日推荐