java - 使用Dao和Bean类通过MVC模型将数据插入数据库

标签 java database servlets model-view-controller

请帮我找出错误。虽然没有编译错误,但数据没有被处理到数据库中。 这些代码中没有语法错误。即使我检查了多个网站,但我也看不出有什么不同。

mvc 包。

RegisterDao.java

package mvc;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class RegisterDao {

    public static Connection getCon() throws ClassNotFoundException, SQLException
    {
        try{Class.forName("com.mysql.jdbc.Driver");
                }
                catch(Exception e){};
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost/hcs","root","1234");
    return con;
    }
    public int addRecordpatient(User a)
    {
        int i=0;
        Connection con;
        try {
            con = getCon();
        String qr="insert into signin(phone, name, password, gender, bgrp, age) values(?,?,?,?,?,?)";
        PreparedStatement ps=con.prepareStatement(qr);
        ps.setInt(1, a.getPhone());
        ps.setString(2, a.getName());
        ps.setString(3, a.getPassword());
                ps.setString(4, a.getGender());
                ps.setString(5, a.getBgrp());
                ps.setInt(6, a.getAge());
        int j=ps.executeUpdate();

                if (j!=0)  //Just to ensure data has been inserted into the database
                {System.out.println("success"); }


        con.close();
} catch (Exception e) {

            System.out.println(e);
        } 
        //return i;
    return 0;
        }

}

用户.java

package mvc;

public class User {
private int phone;
private String name;
private String password;
private String gender;
private String bgrp;
private int age;
public int getPhone() {
    return phone;
}
public void setPhone(int phone) {
    this.phone = phone;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

public String getGender() {
    return gender;
}
public void setGender(String gender) {
    this.gender = gender;
}
public String getBgrp() {
    return bgrp;
}
public void setBgrp(String bgrp) {
    this.bgrp = bgrp;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
}

servlet --> psignup.java

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import mvc.RegisterDao;
import mvc.User;
@WebServlet("/psignup")
public class psignup extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public psignup() {
        super();
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out=response.getWriter();
        response.setContentType("text/html");
        int phone=Integer.parseInt(request.getParameter("phone"));
                String name=request.getParameter("name");
        String password=request.getParameter("password");
        String gender=request.getParameter("gender");
                String bgrp=request.getParameter("bgrp");
                int age=Integer.parseInt(request.getParameter("age"));
        User b=new User();
                b.setPhone(phone);
        b.setName(name);
        b.setPassword(password);
                b.setGender(gender);
                b.setBgrp(bgrp);
                b.setAge(age);
        try{
    RegisterDao rd= new RegisterDao();
             request.getRequestDispatcher("/index.jsp").forward(request, response);

                }
                catch(Exception e){out.print(e);}
    }
}

注册jsp页面---> 索引.jsp

<form method="post" action="psignup" class=" form-group">
                    <h1><span class="glyphicon glyphicon-user"></span>Sign Up</h1>
                    <div class="form-group">
                        <label for="no">Contact</label>
                        <input type="tel" class="form-control" id="no" name="phone" placeholder="eg. 9876543210"/>
                    </div>
                    <div class="form-group">
                        <label for="n">Name</label>
                        <input type="text" class="form-control" id="n" name="name" placeholder="eg. abc pqr xyz"/>
                    </div>

                    <div class="form-group">
                        <label for="p">Password</label>
                        <input type="password" class="form-control" id="p" name="password" placeholder="eg. Abc123!"/>
                    </div>

                    <div class="form-group">
                        <label for="n">Gender</label>
                        <input type="text" class="form-control" id="g" name="gender" placeholder="eg. male"/>
                    </div>                    <div class="form-group">
                        <label for="add">blood group</label>
                        <input type="text" class="form-control" id="bgrp" name="bgrp" placeholder="eg. O+"/>
                    </div>
                    <div class="form-group">
                        <label for="no">Age</label>
                        <input type="tel" class="form-control" id="age" name="age" placeholder="eg. 101"/>
                    </div>
                    <div>
                        <input type="submit" value="submit" name="submit" class="btn-block btn-primary" id="submit"/>
                    </div>
                    </form>

数据库(工作正常)。登录 --->

Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| phone    | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(25) | YES  |     | NULL    |       |
| password | varchar(25) | YES  |     | NULL    |       |
| gender   | varchar(10) | YES  |     | NULL    |       |
| bgrp     | varchar(25) | YES  |     | NULL    |       |
| age      | int(11)     | YES  |     | NULL    |       |

最佳答案

你有一个用于加载数据库驱动程序的try-catch; catch 没有任何作用。您确定驱动程序已加载吗?

您的 RegisterDao DAO(数据访问对象)有一个 addRecordPatent 方法,该方法获取您的 User DTO(数据传输对象),并通过使用您准备好的语句将其转换为实际查询来将其放入数据库中。

您的 servlet 不会调用此方法,它只是实例化 DAO。您需要添加

rd.addRecordpatient(user);

实例化对象之后。

你尝试过调试这个吗?此外,任何地方都没有进行数据验证。您应该在将发布的数据发送到数据库之前向其添加验证逻辑。

关于java - 使用Dao和Bean类通过MVC模型将数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51048943/

相关文章:

java - 列出包子目录中的类

database - 为 PostgreSQL 表中的(非 ID 列)自动生成唯一编号

mysql - 按数据库记录 MySQL 查询

jsp - 基本 Java EE Web 应用程序

java - 初始化 servlet 时如何传递引用

java - 在 JTextArea 中选择文本不显示任何选择颜色

java - 以编程方式扩展 ElasticBeanStalk 环境

mysql - 关系型数据库结构逻辑配置

java - Liferay:如何使enctype ="multipart/form-data"和方法="post"一起工作?

java - MySQL - 多线程更新(没有线程更新相同的id)但有死锁