【问题标题】:Data not sent to MySQL database while using Spring使用 Spring 时数据未发送到 MySQL 数据库
【发布时间】:2020-02-09 17:30:15
【问题描述】:

我是 Spring Framework 和 java 的新手。我正在为我的 Web 应用程序创建注册模块。我创建了 DAO、DTO、Dispatcher Servlet、控制器等等。当我提交表单时,它会将我重定向到我想去的地方,但没有数据添加到数据库中..

我的 userDTO.java

    package com.lagan.dto;

public class userDto{

    public String userId;
    public String firstName;
    public String lastName;
    public String birthDate;
    public int gender;
    public String email;
    public String password;

    public String getUserId() {
        return userId;
    }
    public String getUserId(String userId) {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    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;
    }
    public String getBirthDate() {
        return birthDate;
    }
    public void setBirthDate(String birthDate) {
        this.birthDate = birthDate;
    }
    public int getGender() {
        return gender;
    }
    public void setGender(int gender) {
        this.gender = gender;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password){
        this.password = password;
    }
}

userDao.java

package com.lagan.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.lagan.dbconnector.dbconnect;
import com.lagan.dto.userDto;


public class userDao {
    public void create (userDto user) {
        dbconnect db=new dbconnect();
        Connection con=null;
        try{
            con=db.getConnections();
            String sql="insert into tbluser values(?,?,?,?,?,?,?)";
            PreparedStatement pre=con.prepareStatement(sql);
            pre.setString(1,user.getUserId());
            pre.setString(2,user.getFirstName());
            pre.setString(3,user.getLastName());
            pre.setString(4,user.getBirthDate());
            pre.setInt(5,user.getGender());
            pre.setString(6,user.getEmail());
            pre.setString(7,user.getPassword());
            pre.executeUpdate();
            pre.close();
        }catch (Exception e) {
            e.printStackTrace();

        }finally {
            db.closeConnection(con);
        }

    }
}

userController.java

package com.lagan.controller;
import java.util.List;

import com.lagan.dao.userDao;
import com.lagan.dto.userDto;

public class userController {
    public void create(userDto userDto){
        userDao dao=new userDao();
        dao.create(userDto);
    }
}

验证.jsp

<%@ page import="com.lagan.controller.*,com.lagan.dto.*"%>
<%
    String userId="aqwery";
    String firstName=request.getParameter("firstName");
    String lastName=request.getParameter("lastName");
    String birthDate=request.getParameter("birthDate");
    //int gender=request.getParameter("gender");
    String email=request.getParameter("email");
    String password=request.getParameter("password");

    userDto dto=new userDto();

    dto.getUserId(userId);
    dto.setFirstName(firstName);
    dto.setLastName(lastName);
    dto.setBirthDate(birthDate);
    //dto.setGender(gender);
    dto.setEmail(email);
    dto.setPassword(password);
    userController uC=new userController();
    uC.create(dto);
    response.sendRedirect("home.html");
%>

dbconnect.java

package com.lagan.dbconnector;

import java.sql.*;

//import java.sql.Connection;
//import java.sql.DriverManager;
//import java.sql.SQLException;

public class dbconnect {
    public dbconnect()
    {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

public Connection getConnections() {
    Connection conn=null;
    try{
    conn=DriverManager.getConnection("jdbc:mysql://localhost:80/project_lagan","root","");
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return conn;
}

public void closeConnection(Connection con){
    if(null!=con) {
        try{
            con.close();

        }catch(SQLException e){}
    }
}
}

它将我重定向到 home.html,但数据没有添加到数据库中。我不知道我做错了什么。请帮忙。

【问题讨论】:

  • 你能分享一下你的数据库连接类吗? -- dbConnect()
  • 嗨,我更新了问题,请看。
  • @KunwarSagar 我认为,您应该关闭连接而不是 PreparedStatement 。检查此链接alvinalexander.com/java/…
  • @hatice 我试过没有解决问题。显示的错误控制台是 com.mysql.jdbc.CommunicationsException:由于底层异常导致通信链接失败:** BEGIN NESTED EXCEPTION ** com.mysql.jdbc.CommunicationsException MESSAGE:由于底层异常导致通信链接失败:** BEGIN NESTED EXCEPTION ** 等等但它也在重定向..到家
  • @KunwarSagar 可能您无法从应用程序连接 mysql。首先,检查此链接dev.mysql.com/doc/mysql-getting-started/en 并确保您有 mysql 连接。如果有,请尝试将更改代码与我​​的解决方案联系起来。

标签: java mysql spring jsp


【解决方案1】:

尝试将连接字符串的端口号更改为以下任一:

`jdbc:mysql://localhost:3306/project_lagan`

`jdbc:mysql://localhost/project_lagan`

【讨论】:

  • 哦,我真是个菜鸟。太感谢了。当我从字符串中删除端口 80 时,它起作用了。再次感谢您
【解决方案2】:

我会建议你这样连接

String url       = "jdbc:mysql://localhost:3306/project_lagan";
String user      = "root";
String password  = "";

Connection conn = null;

try(conn = DriverManager.getConnection(url, user, password);) {
    // processing here
} catch(SQLException e) {
   System.out.println(e.getMessage());
}

您也可以查看tutorial

【讨论】:

  • 感谢您的建议。当我从连接字符串中删除端口 80 时,它就解决了.. :)
猜你喜欢
  • 1970-01-01
  • 2021-09-20
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
相关资源
最近更新 更多