【问题标题】:retrieve of email and password from MySql databse using springboot使用 Spring Boot 从 MySql 数据库中检索电子邮件和密码
【发布时间】:2019-12-10 17:57:13
【问题描述】:

我想使用 spring boot 从 MySql 数据库表中检索用户电子邮件。我在控制器中使用了 findByEmailAndPassword,但它检索了电子邮件的空值。 这是我的代码

控制器

package com.example.demo.controller;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;

    import com.example.demo.JPARepository;
    import com.example.demo.pojo.regisbean;

    @Controller
    public class registerController {
        regisbean pp;
        @RequestMapping(value =  "/")
        public String mm() {
            System.out.println("I am in m1 method");
            return "index";
        }
        @RequestMapping(value = { "/register", "home" })
        public String m1() {
            System.out.println("I am in mm method");
            return "register";
        }
        @Autowired
        JPARepository jpaRepository;
        @PostMapping("/register")
        public String regis(@ModelAttribute regisbean rb)
        {
            System.out.println("I m in regis method");
            regisbean b=jpaRepository.save(rb);
            if(b!=null)
                return "index";
            else
                return "fail";

        }
        @RequestMapping(value= {"/login1","login2"})
        public String m2() {
            System.out.println("i m in m2()");
            return "login";
        }
        @PostMapping("/login")
        public String login(@ModelAttribute regisbean rx,Model m) {
            System.out.println("I am in Login");

            regisbean re=jpaRepository.findByEmailAndPassword(rx.getEmail(), rx.getPassword());
            if(re!=null)
            {
                m.addAttribute("email",rx.getEmail());
                m.addAttribute("password",rx.getPassword());
                System.out.println("yes");
                return "loginsuccess";
            }
                else
                {
                    System.out.println(rx.getEmail());
                    System.out.println("failed");
                    return "register";
                }


        }


    }

pojo 类

 package com.example.demo.pojo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "pro")

public class regisbean {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    @Column
    private String name;
    @Column
    private String email;
    @Column
    private String phonenumber;
    @Column
    private String password;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }


    public String getPhonenumber() {
        return phonenumber;
    }

    public void setPhonenumber(String phonenumber) {
        this.phonenumber = phonenumber;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

存储库

包 com.example.demo;

import org.springframework.data.repository.CrudRepository;

import com.example.demo.pojo.regisbean;

public interface JPARepository extends CrudRepository<regisbean, Integer> {
    public regisbean findByEmailAndPassword(String email,String password);

}

【问题讨论】:

  • 注意 java 命名约定。类名应以大写字符开头
  • 不要将密码存储为纯文本。

标签: java spring spring-boot spring-mvc model-view-controller


【解决方案1】:

我能够通过在表格中插入一行来让您的代码工作:

INSERT INTO pro (
    id
    ,email
    ,name
    ,password
    ,phonenumber
    )
VALUES (
    0
    ,'user@domain.com'
    ,'Jim'
    ,'secret'
    ,'123-123-1234'
    )

然后改变:

public String login(@ModelAttribute regisbean rx,Model m) {

到:

public String login(@RequestBody RegisBean rx,Model m) {

并将以下请求正文发布到 /login 资源:

{
    "email": "user@domain.com",
    "password": "secret"
}

我不必对您的回购进行任何更改。我怀疑您的尝试失败了,因为从未使用任何值初始化 RegisBean,因此要求 repo 查找包含空电子邮件和空密码的记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-28
    • 2021-12-05
    • 2018-07-06
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多