java - 使用 Hibernate 和 JSP 无法保存表创建和数据

标签 java mysql xml hibernate jsp

我是 hibernate 的新手,也是第一次使用它。我正在创建一个简单的表单,用于使用 Hibernate 和 JSP 页面将数据保存在我的数据库 (MYSQL) 中。但是当我点击注册按钮时,我的第二页打开但页面是空的。我的数据没有保存在数据库中,也没有创建表。 请给我建议我所缺少的东西 我的代码是

用户.java

  public class User {

        private int id;  
        private String name;
        private String password;
        private String email;
        public int getId() {
            return id;
        }
        //getter and setter

索引.jsp文件

 <form action="register.jsp" method="post">  
Name:<input type="text" name="name"/><br><br/>  
Password:<input type="password" name="password"/><br><br/>  
Email ID:<input type="text" name="email"/><br><br/>  
<input type="submit" value="register"/>"  

UserDao.java文件

 package com.mypack.bean;
import org.hibernate.Session;  
import org.hibernate.Transaction;  
import org.hibernate.cfg.Configuration;  
 public class UserDao {  

    public static int register(User u){  
     int i=0;  
     Session session=new Configuration().  
     configure().buildSessionFactory().openSession();        
     Transaction t=session.beginTransaction();  
     t.begin();  
     i=(Integer)session.save(u);  
     t.commit();  
     session.close(); 
      return i;  
    }  
     }  

注册.jsp文件

 <%@page import="com.mypack.bean.UserDao"%>  
         <jsp:useBean id="obj" class="com.mypack.bean.User">  
         </jsp:useBean>  
         <jsp:setProperty property="*" name="obj"/>  
         <%  
           out.println("inside");
           int i=UserDao.register(obj);  
           if(i>0)   
           out.print("You are successfully registered");  
           %>  
              // hibernate.cfg.xml file

     <hibernate-configuration>
     <session-factory>
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/taskmanager</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password"/>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="hibernate.show_sql">true</property>
    <mapping resource ="user.hbm.xml"/>
    </session-factory>
    </hibernate-configuration>

用户.hbm.xml文件

 <hibernate-mapping>  
        <class name="com.mypack.bean.User" table="userstable">  
        <id name="id">  
        <generator class="assigned"></generator>  
        </id>  
        <property name="name"></property>  
        <property name="password"></property>  
       <property name="email"></property>  
       </class>  

       </hibernate-mapping>  

最佳答案

需要进行以下更改,

1) 每个 POJO 类都必须需要 Hibernate 的默认构造函数,所以添加 User.java 文件中的默认构造函数

2) 更改表单操作值为 <form action="UserDao" method="post">

3) 将方法名称更改为 UserDao.java 文件 public static void main(String[] arg){}

4) 删除此行 i=(Integer)session.save(u)并替换为 以下代码

`
User u = new User();

u.setName("abc");

u.setEmail("abc@abc.com");

session.save(u); `

关于java - 使用 Hibernate 和 JSP 无法保存表创建和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27699958/

相关文章:

java - 尝试使用 Web Harvest 从网站中提取 URL

JavaFX Circle 必须跟随光标

java - 使用 Java 从 XSL-FO 生成 HTML

php - 从表中获取 mysql 中的最后 100 行

xml - 如何处理XML字符串属性中的特殊字符?

java - 我们怎么知道哪个方法(java.class)调用了当前方法

php - Laravel - 从两个数据透视表中获取计数作为一个数字

php - 关于正确使用重复键?不工作。 MySQL/PHP

java - 在 spring servlet.xml 中添加我所有的 bean

android - TextView 不会像在屏幕上那样出现在设备上