为啥当我单击按钮时我的数据不去并且没有提交到 MySQL 数据库?

Posted

技术标签:

【中文标题】为啥当我单击按钮时我的数据不去并且没有提交到 MySQL 数据库?【英文标题】:Why is my data not going and not submitted to MySQL database when i click the button?为什么当我单击按钮时我的数据不去并且没有提交到 MySQL 数据库? 【发布时间】:2021-05-24 10:37:55 【问题描述】:

这是我的 java 应用程序

package com.example.abdo8;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class CodeJavaApplication 

    public static void main(String[] args) 
        SpringApplication.run(CodeJavaApplication.class, args); 
        
    


这是我的管理员控制器

package com.example.abdo8.contoller;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.example.abdo8.models.User;
import com.example.abdo8.service.userservice;

@RestController
public class Admincontroller 
    @Autowired
    userservice uDao;
    
    //@RequestMapping(value="/admin/addUser",method = RequestMethod.POST)
    //@PostMapping(path="/admin/addUser",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    //@RequestMapping(value = "/admin/addUser", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE,
      //      produces = MediaType.APPLICATION_JSON_VALUE)
    @PostMapping(
              value = "admin/addUser", consumes = "application/json", produces = "application/json")
    public User  addUser(@RequestBody User usr)
    
        //ResponseEntity<String>
        User n = new  User();
        System.out.println(usr);
        n.setEmail(usr.getEmail());
        n.setFirstname(usr.getFirstname());
        n.setLastname(usr.getLastname());
        n.setPassword(usr.getPassword());
        n.setUsername(usr.getUsername());
         uDao.saveUser(n);
         HttpHeaders httpHeaders = new HttpHeaders();

        //  return new ResponseEntity<>("", httpHeaders, HttpStatus.CREATED);
         return n;
        
    
    @GetMapping("/admin/getAll")
    public Collection<User>getAllUsers()
    
        return uDao.getAllUsers();
    
    @DeleteMapping("admin/deleteUser/id")
    public void removeById(@RequestParam(name="id") int id)
    
        uDao.removeUser(id);
    
    
    @RequestMapping("/admin/testMethods/hi")
    @ResponseBody
    public String printHi()
    
        return "hi";
    
    
    


这是我的回购课程

package com.example.abdo8.DOA;

import javax.persistence.Table;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.example.abdo8.models.User;

@Repository
public interface RepoCourse extends JpaRepository<User,Integer>  



这是我的课程

package com.example.abdo8.models;

import java.io.Serializable;

public class Course implements Serializable

    private static final long serialVersionUID = 1L;
    

这是我的用户

package com.example.abdo8.models;

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 = "users")
public class User 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    
    private int id;
    
    @Column
    private String email;
    
    @Column
    private String userpassword;
    
    @Column
    private String firstname;
    
    @Column
    private String lastname;
    
    @Column
    private String username;
    public User() 
        
    
    public User( String email, String userpassword, String firstname, String lastname, String username) 
        super();
        
        this.email = email;
        this.userpassword = userpassword;
        this.firstname = firstname;
        this.lastname = lastname;
        this.username = username;
    
    public String getUsername() 
        return username;
    
    public void setUsername(String username) 
        this.username = username;
    
    public String getPassword() 
        return userpassword;
    
    public void setPassword(String password) 
        this.userpassword = password;
    
    
    
    public int getId() 
        return id;
    
    public void setId(int id) 
        this.id = id;
    
    public String getEmail() 
        return email;
    
    public void setEmail(String email) 
        this.email = email;
    
    public String getFirstname() 
        return firstname;
    
    public void setFirstname(String firstname) 
        this.firstname = firstname;
    
    public String getLastname() 
        return lastname;
    
    public void setLastname(String lastname) 
        this.lastname = lastname;
    
    


这是我的用户服务

package com.example.abdo8.service;

import java.util.Collection;

import javax.transaction.Transactional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.abdo8.DOA.RepoCourse;
import com.example.abdo8.models.User;
@Service
@Transactional
public class userservice 
    @Autowired
    private RepoCourse dao;
    
    public User saveUser(User u)
    
        
        return dao.save(u);
    
    public Collection<User> getAllUsers()
    
        return dao.findAll();
    
    public void removeUser(int id )
    
        dao.deleteById(id);
    
    public User updateUser(User u )
    
        return dao.save(u);
    

这是我的应用程序属性

#server.port=7000
spring.jpa.database-platform=org.hibernate.dialect.mysql5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url = jdbc:mysql://localhost:3306/abdoDb?allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true&useLegacyDatetimeCode=false&serverTimezone=UTC&useSSL=false
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username=admin
spring.datasource.password=Alma12345
spring.jpa.open-in-view=false
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
spring.security.user.name=adam
spring.security.user.password=shlaz2009

这是我的 index.html

<html lang="en">
<head>
    
<meta charset="utf-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" >
    <style type="text/css">
 <link href='http://fonts.googleapis.com/css?family=Open+Sans+Condensed:300' rel='stylesheet' type='text/css'>
<style type="text/css">
.form-style-8
    font-family: 'Open Sans Condensed', arial, sans;
    width: 500px;
    padding: 30px;
    background: #FFFFFF;
    margin: 50px auto;
    box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.22);
    -moz-box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.22);
    -webkit-box-shadow:  0px 0px 15px rgba(0, 0, 0, 0.22);


.form-style-8 h2
    background: #4D4D4D;
    text-transform: uppercase;
    font-family: 'Open Sans Condensed', sans-serif;
    color: #797979;
    font-size: 18px;
    font-weight: 100;
    padding: 20px;
    margin: -30px -30px 30px -30px;

.form-style-8 input[type="text"],
.form-style-8 input[type="date"],
.form-style-8 input[type="datetime"],
.form-style-8 input[type="email"],
.form-style-8 input[type="number"],
.form-style-8 input[type="search"],
.form-style-8 input[type="time"],
.form-style-8 input[type="url"],
.form-style-8 input[type="password"],
.form-style-8 textarea,
.form-style-8 select 

    box-sizing: border-box;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    outline: none;
    display: block;
    width: 100%;
    padding: 7px;
    border: none;
    border-bottom: 1px solid #ddd;
    background: transparent;
    margin-bottom: 10px;
    font: 16px Arial, Helvetica, sans-serif;
    height: 45px;

.form-style-8 textarea
    resize:none;
    overflow: hidden;

.form-style-8 input[type="button"], 
.form-style-8 input[type="submit"]
    -moz-box-shadow: inset 0px 1px 0px 0px #45D6D6;
    -webkit-box-shadow: inset 0px 1px 0px 0px #45D6D6;
    box-shadow: inset 0px 1px 0px 0px #45D6D6;
    background-color: #2CBBBB;
    border: 1px solid #27A0A0;
    display: inline-block;
    cursor: pointer;
    color: #FFFFFF;
    font-family: 'Open Sans Condensed', sans-serif;
    font-size: 14px;
    padding: 8px 18px;
    text-decoration: none;
    text-transform: uppercase;

.form-style-8 input[type="button"]:hover, 
.form-style-8 input[type="submit"]:hover 
    background:linear-gradient(to bottom, #34CACA 5%, #30C9C9 100%);
    background-color:#34CACA;

        table
         border-width: thick;
  border-collapse: collapse;
  width: 100%;
       


th, td 
  text-align: left;
  padding: 8px;

</style>
 <style type="text/css">
    *:lang(ar)  direction:rtl 
    *:lang(en)  direction:ltr 
</style> 
<title> login page </title>
</head>
<body dir="rtl" > 

    <div class="form-style-8">
  <h2>Login to your account</h2>
  <form>
    <input type="text" id="a1" name="field1" placeholder="FirstName" />
    <input type="text" id="a2" name="field2" placeholder="LastName" />
        <input type="text" id="a3" name="field4" placeholder="email" />
    <input type="text" id="a4" name="field5" placeholder="username" />
  <input type="text" id="a5" name="field6" placeholder="password" />
      
   <button type = "submit" class="btn btn-success btn-lg" onclick="postApi(this);" dir="rtl"> Sign Up</button>
    
  </form>
</div>
    <table class="table">
        <thead>
            
        <tr>
            <td>
                id
            </td>
             <td>
                firstname
            </td>
             <td>
                lastname
            </td>
             <td>
                email
            </td>
             <td>
                username
            </td>
             <td>
                password
            </td>
            </tr>
        </thead>
    </table>
    <!--  --script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" ></script-->
<!--  -script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" ></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

    <script>
    function postApi(val)
    var model = 
    "firstname": this.$("#a1").val(),
    "lastname": this.$("#a2").val(),
    "email" : this.$("#a3").val(),
    "username" : this.$("#a4").val(),
    "userpassword" : this.$("#a5").val()
    ;
    console.log("post data:"+model);
        $.ajax(
        
            type:"POST",
            url : "admin/addUser",
            
            ContentType:"application/json ;charset=UTF-8",
            
            crossOrigin:true,
            dataType:"json",
            headers: 
                'Accept': 'application/json',
                'Content-Type': 'application/json'
                ,
            data:this.JSON.stringify(model),
            
            success:function(data)
            
                console.log("successfuly"+data);
                alert("done");
            ,error:function(jqXHR,testStatus,errorThrown)
            
                alert("error");
            
        
        );
    
    </script>
    <script type="text/javascript">
    $(document).ready(function()
    $.ajax(
            
                type:"get",
                url : "admin/getAll",
                
                ContentType:"application/json ;charset=UTF-8",
                
                crossOrigin:true,
                dataType:"json",
                headers: 
                    'Accept': 'application/json',
                    'Content-Type': 'application/json'
                    ,
                
                
                success:function(result)
                
                    console.log(result)
                    var table = $(".table")
                    for(i=0;i<result.length;i++)
                        
                            table.append('<tr><td>'+ result[i]["id"] + '</td>' +
                                    '<td>'+result[i]["firstname"] + '</td>'+
                                    '<td>'+ result[i]["lastname"] + '</td>'+
                                    '<td>'+ result[i]["email"] + '</td>'+
                                    '<td>'+ result[i]["username"] + '</td>'+
                                    '<td>'+ result[i]["password"]+ '</td>'+
                                    '<td><button class="btn btn-danger" id="remove" onclick="removeUser('+result[i]["id"]+')">حذف</button></td></tr>'
                                    
                            
                            );
                            $('message').html(table);
                        
                    console.log("successfuly"+data);
                    alert("done");
                ,error:function(jqXHR,testStatus,errorThrown)
                
                    alert("error");
                
            );
    );
    
</script>
<script>
function removeUser(id)
         
         $.ajax(
                url: "admin/deleteUser/id?id="+id,
                method:'DELETE',
                dataType:'json',
                success:function(data)
                    alert("the user  number "+id+" is  deleted");
                    
                
            ,error: function(jqXHR,testStatus,errorThrown)
                alert("faild !!!");
            
         );

</script>
</body>
</html>

这是我的 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>abdo-8</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>abdo-8</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

这是我的秘密

package com.example.abdo8;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class  abdotest 

    @Test
    void contextLoads() 
    


当我单击索引页面中的“注册”按钮并返回 MySQL 数据库并转到表格时,表格中没有任何内容

【问题讨论】:

【参考方案1】:

您的表单元素没有操作或方法。只是

<form>

改成

<form action="/admin/addUser" method="post">

这应该将请求发送到您的控制器。更新 html,在控制器中放置断点并在调试中运行。

【讨论】:

以上是关于为啥当我单击按钮时我的数据不去并且没有提交到 MySQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

为啥单击按钮时我的 reactstrap 模式没有打开?

为啥当我更改它的 id 属性时我的按钮没有点击?

QPrinter 单击按钮时我的程序崩溃为啥?

为啥单击时我的 NavigationLink 不起作用?

为啥我必须单击提交按钮 TWICE 才能更新我的 useState() 挂钩?

单击时我的 div 没有使用 js 提交其中的表单