首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

50分大神!hibernate与spring整合空指针错误报错!搞了一天没搞定

2013-06-25 
50分紧急求助大神!hibernate与spring整合空指针异常报错!!搞了一天没搞定!这个系统暂时实现登陆和注册功能

50分紧急求助大神!hibernate与spring整合空指针异常报错!!搞了一天没搞定!
这个系统暂时实现登陆和注册功能,整体目录结构:
50分大神!hibernate与spring整合空指针错误报错!搞了一天没搞定


DAO层代码:
//userDAO.java


package dao;
import com.entity.TtUsers;
public interface userDAO {
   public void add(TtUsers user);
  // public void delete(TtUsers user);
   public TtUsers load(Integer id);
   //public void update(TtUsers user);
}


//userDAOImpl.java
package dao;

import java.io.Serializable;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.entity.TtUsers;
@SuppressWarnings("serial")
public class userDAOImpl extends HibernateDaoSupport implements userDAO,Serializable {
        @Override
        public void add(TtUsers user) {
        System.out.println(getSessionFactory());
        System.out.println(getHibernateTemplate());
               try{
              super.getHibernateTemplate().save(user); 
               }catch(RuntimeException e){
               e.printStackTrace();
               System.out.println("注册用户失败!");
               }
       }
       
      /*  public void delete() {
        
       }*/
        @Override
        public TtUsers load(Integer id) {
             String hql="from tt_users where id="+id;                    
@SuppressWarnings("unchecked")
List<TtUsers> list=super.getHibernateTemplate().find(hql);
             TtUsers user=(TtUsers)list.get(0);
             return user;
       }
      /*  public void update(TtUsers user) {
               super.update(user);
       }*/
}




BIZ层代码:
package biz;
import com.entity.TtUsers;
import dao.userDAOImpl;

public class UserBiz {
userDAOImpl userDAO;
public userDAOImpl getUserDAO() {
return userDAO;
}
public void setUserDAO(userDAOImpl userDAO) {


this.userDAO = userDAO;
}

public boolean login(int id,String password){
TtUsers user1=userDAO.load(id);
if(!user1.getPassword().equals(password)){
System.out.println("登陆验证失败!");
return false;
}
return true;
}
public void register(TtUsers user){
userDAOImpl dao=new userDAOImpl();
dao.add(user);
}
public TtUsers load(int id){
return new userDAOImpl().load(id);
}
}



实体类代码:
package com.entity;

import java.lang.Integer;

/**
 * AbstractTtUsers entity provides the base persistence definition of the
 * TtUsers entity. @author MyEclipse Persistence Tools
 */

public abstract class AbstractTtUsers implements java.io.Serializable {

// Fields

private Integer id;
private String password;
private String name;
private String gender;
private String birthdate;
private String mailaddress;

// Constructors

/** default constructor */
public AbstractTtUsers() {
}

/** minimal constructor */
public AbstractTtUsers(Integer id) {
this.id = id;
}

/** full constructor */
public AbstractTtUsers(Integer id, String password, String name,
String gender, String birthdate, String mailaddress) {
this.id = id;
this.password = password;
this.name = name;
this.gender = gender;
this.birthdate = birthdate;
this.mailaddress = mailaddress;
}

// Property accessors

public Integer getId() {
return this.id;
}

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

public String getPassword() {
return this.password;
}

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

public String getName() {
return this.name;
}

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

public String getGender() {
return this.gender;
}

public void setGender(String gender) {
this.gender = gender;
}

public String getBirthdate() {
return this.birthdate;
}

public void setBirthdate(String birthdate) {
this.birthdate = birthdate;
}

public String getMailaddress() {
return this.mailaddress;
}

public void setMailaddress(String mailaddress) {
this.mailaddress = mailaddress;
}

}



注册Action类代码:
package action;

import java.util.Map;

import biz.UserBiz;

import com.entity.TtUsers;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;


public class RegisterAction extends ActionSupport {
UserBiz ub;
  


public UserBiz getUb() {
return ub;
}
public void setUb(UserBiz ub) {
this.ub = ub;
}
        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 getPassword() {
               return password ;
       }
        public void setPassword(String password) {
               this.password = password;
       }
        public String getRepassword() {
               return repassword ;
       }
        public void setRepassword(String repassword) {
               this.repassword = repassword;
       }
        public String getValidate() {
               return validate ;
       }
        public void setValidate(String validate) {
               this.validate = validate;
       }
        public String getMailaddress() {
    return mailaddress;
    }
    public void setMailaddress(String mailaddress) {
          this.mailaddress = mailaddress;
    }
        public String getGender() {
    return gender;
    }
    public void setGender(String gender) {
    this.gender = gender;
    }
    public String getBirthdate() {
    return birthdate;
    }
    public void setBirthdate(String birthdate) {
    this.birthdate = birthdate;
    }
    private static final long serialVersionUID=1L;


private int id;
private String name;
    private String password;
    private String repassword;
    private String gender;
    private String birthdate;
private String mailaddress;


    private String validate;
    public String execute() throws Exception{
       TtUsers user= new TtUsers();
       user.setId(id);
       user.setName(name);
       user.setMailaddress(mailaddress);
       user.setPassword( password);
       user.setGender(gender);
       user.setBirthdate(birthdate);
       TtUsers tu=ub.load(user.getId());//查询该身份证号是否已注册
       if(tu!=null){
         System.out.println("用户名已存在");
               this.addFieldError(name ,"用户名已存在!!!" );
               return INPUT ;
       } else{
       System.out.println("可以继续注册!");
              ub.register(user);
               return SUCCESS ;
       }
    }

public void validate(){
       ActionContext ac=ActionContext. getContext();
       Map<String, Object> session=ac.getSession();
       System.out.println(session.get("random" ));//显示获取的随机验证码
       if(!repassword.equals(password)){ //密码校对
               this.addFieldError(repassword , "重复密码不一致!!" );
       } if(!session.get("random" ).equals(validate)){//验证码检验
               this.addFieldError(validate , "验证码错误!!" );
       }
    }
 
}



applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:orcl">
</property>
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
</bean>


<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect


</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/entity/TtUsers.hbm.xml</value>
</list>
</property>
</bean>

<bean id="userDAO" alt="50分大神!hibernate与spring整合空指针错误报错!搞了一天没搞定" />



我用的是Oracle数据库,数据库驱动连接测试是通过的,也就是说数据库这边没问题,就是配置问题了,现在求助各位大神,这个到底啥情况,我找了半天了都没找到错在哪。。。先谢谢各位了! Spring Hibernate 异常 空指针


[解决办法]

引用:
这个的详细情况就是我该了ub命名,改成了userBiz就可以取得值了,其他的配置都没改。是在debug中看到的,我也想可能是有规范什么的

因为在applicationContext.xml中关联关系都已经标配清楚了
RegisterAction类有一个属性其class是biz.UserBiz,仅这些就能充分说明问题了
再要通过名称来定位就冗余了(也通过相关文档证实)

所以我觉得这里应该有什么问题,只不过代码在楼主这儿,只有楼主清楚,可能在这一点关系上并没有到使用xml配置的(猜想)

热点排行