spring boot 实现最基础的登陆注册功能。

spring boot 实现最基础的登陆注册功能:

首先先看代码:数据库:

先说自己遇到的坑:第一:数据库的配置是复制之前的数据库,导致自己在另一个数据库中查询数据,这点大家在application.properties这个里面注意下   这句

spring.datasource.url=jdbc:mysql://localhost:3306/testspring?useUnicode=true&characterEncoding=utf8&useSSL=false

第二:在注册页面开始自己设置为无返回的,导致自己页面无法跳转。

第三:在Repository里注意数据库查询的格式。

 controller 层:

package com.example.demo222.controller;

import com.example.demo222.entity.Login;
import com.example.demo222.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@RestController
//@Controller

public class MyController {
    @Autowired
    LoginService loginService;
////这里是首先进入登陆页面,然后再进行其他的操作
    @RequestMapping("/")
    public ModelAndView index(){
        ModelAndView mv = new ModelAndView("login");
        return mv;
    }
    @RequestMapping("/registers")
    public ModelAndView zhuce(){
        ModelAndView mv = new ModelAndView("register");
        return mv;
    }

//    @PostMapping("/login")
//    public ModelAndView login(@RequestParam("username")String username, @RequestParam("password") String password){
//        ModelAndView success = new ModelAndView();
//        if(username.equals("admin")&&password.equals("123"))
//            success.setViewName("success");
//        else success.setViewName("404");
//        return success;
//    }
//    @GetMapping("/login")
//    public ModelAndView login(@RequestParam("name")String name, @RequestParam("password") String password){
//        ModelAndView success = new ModelAndView();
//        if(name.equals("admin")&&password.equals("123"))
//            success.setViewName("success");
//        else success.setViewName("404");
//        return success;
//    }
    //登陆功能
    @PostMapping("/login")
    public ModelAndView Login(@RequestParam("username") String username,@RequestParam("userpassword") String userpassword){
        List<Login> login= loginService.findByUsernameAndUserpassword(username,userpassword);
//        for (Login l:loginService.findAll()) {
////            System.out.println(l.getUsername()+":"+l.getUserpassword());
////        }
        System.out.println(username+":"+userpassword);
        //System.out.println(login);
        ModelAndView success = new ModelAndView();
        if(login.size()>0){
            success.setViewName("success");
        } else {
            success.setViewName("404");
             }
        return success;
    }
    //注册功能
    @PostMapping("/register")
    public ModelAndView register(@RequestParam("username") String username,@RequestParam("password")
                        String password,@RequestParam("password2") String password2){
        ModelAndView success = new ModelAndView();
        //用户或密码为空的条件判断
        if(username.isEmpty()||password.isEmpty()||password2.isEmpty()){
            success.setViewName("register");
            success.addObject("tip1","用户或密码不能为空");
            return success;
        }
        //两次密码不一样的判断条件
        if(!password.equals(password2)){
            success.setViewName("register");
            success.addObject("tip2","两次密码不一样");
            return success;
        }
          //判断是否取到用户,如果没有就保存在数据库中
        List<Login> us=loginService.findByUsername(username);
        if(us.size()==0){
            //List<Login> register=loginService.save(username,password);
            Login registers=new Login();
            registers.setUserpassword(password);
            registers.setUsername(username);
            loginService.save(registers);
            success.setViewName("success");
        }
        else {
            success.setViewName("404");
        }
        return success;
    }
}

然后是 respository层:
package com.example.demo222.repository;

import com.example.demo222.entity.Login;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Component;

import java.util.List;
@Component
public interface MyRepository extends JpaRepository<Login,Integer>, JpaSpecificationExecutor<Login>{

    //@Query(value = "select * from book b where b.name=?1", nativeQuery = true)
    //@Query(value ="select l.id,l.username,l.userpassword from Login l where l.username=:name and l.userpassword=:password")
   //登陆
    @Query(value = "select * from login  where username=?1 and userpassword=?2",nativeQuery = true)
    List<Login> findByUsernameAndUserpassword(String username, String userpassword);

    List<Login> findAll();


    //注册
    @Query(value = "select * from login  where username=?1", nativeQuery = true)

          List<Login> findByUsername(String username);

}

接下来是实体类:

package com.example.demo222.entity;

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

@Entity
public class Login {
    private String username;
    private String userpassword;
    private int id;

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

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

    @Basic
    @Column(name = "userpassword")
    public String getUserpassword() {
        return userpassword;
    }

    public void setUserpassword(String userpassword) {
        this.userpassword = userpassword;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Login login = (Login) o;
        return Objects.equals(username, login.username) &&
                Objects.equals(userpassword, login.userpassword);
    }

    @Override
    public int hashCode() {
        return Objects.hash(username, userpassword);
    }

    @Id
    @Column(name = "id")
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

service层:

 下来是部分前台页面: 

Thymeleaf表单绑定Spring的Model对象中的Attribute 

整个项目源代码: https://download.csdn.net/download/qq_40979622/10720191

大家有啥意见或者建议可以和我讨论[email protected]

猜你喜欢

转载自blog.csdn.net/qq_40979622/article/details/83050538