代码如下:****************UserAction
package action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import service.UserService;
import entity.User;public class UserAction{
private UserService userService;

public void setUserService(UserService userService) {
this.userService = userService;
} private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}

public String userLogin() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest() ;
HttpSession session = request.getSession();
if(user != null){
int count = userService.userLogin(user.getName(),user.getPassword());
if(count == 1){
session.setAttribute("loginuser", user);
return "loginSuccess";
}
}
request.setAttribute("info", 0);
return "loginFailure";
}
}
****************UserService
package service;import dao.UserDao;public class UserService {
private UserDao userDao;

public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} public int userLogin(String name,String password) throws Exception{
try {
return userDao.userLogin(name, password);
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
}
}
}****************UserDaopackage dao;
import java.util.List;
import entity.User;public class UserDao extends BaseDao{

public int userLogin(String name,String password) throws Exception{
String hql = "from User u where u.name='"+name+"' and u.password='"+password+"'";
List users =  getHibernateTemplate().find(hql);
if(users != null ){
return 1;
}
return 0;
}
}****************BaseDao
package dao;import java.io.Serializable;import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class BaseDao {

private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory){
this.sessionFactory = sessionFactory;
}

protected HibernateTemplate hibernateTemplate = null; public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public HibernateTemplate getHibernateTemplate() {
if ( hibernateTemplate == null){
System.out.println("HibernateTemplate的值为:" + hibernateTemplate);
}
return hibernateTemplate;
}
public void addObject(Object o) {
           getHibernateTemplate().save(o);
        } public void deleteObject(Object o) {
   getHibernateTemplate().delete(o);
} public void updateObject(Object o) {
   getHibernateTemplate().update(o);
} public Object findObjectById(Class clazz,Serializable id) {
return getHibernateTemplate().get(clazz,id);
}
}
**************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="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="123"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
            <list>
                <value>entity/Product.hbm.xml</value>
                <value>entity/User.hbm.xml</value>
            </list>
        </property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<!-- 显示Hibernate持久化操作所生成的SQL语句 -->
<prop key="hibernate.show_sql">true</prop>
<!-- 将SQL脚本进行格式化后再输出 -->   
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>

<!-- 向hibernateTemplate注入sessionFactory -->
<bean id = "hibernateTemplate" class = "org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref = "sessionFactory">
</property>
</bean> <bean id = "userAction" class = "action.UserAction">
<property name="userService" ref = "userService"></property>
</bean>

<bean id = "userService" class = "service.UserService">
<property name="userDao" ref = "userDao"></property>
</bean>

<bean id = "userDao" class = "dao.UserDao">
<property name="hibernateTemplate" ref = "hibernateTemplate"></property>
</bean>

</beans>为什么取得的hibernateTemplate是空值?
还有注入的属性总是报错,从Action---->Service就有错!那位大侠给解决一下!
麻烦你们了!

解决方案 »

  1.   

    这个...没看出来,不过我一般是这么用的------- BaseDAO:
    public class BaseDao extends HibernateDaoSupport {
    // SessionFactory 在HibernateDaoSupport 中有声明
    // 在这里有不要再次声明了// HibernateTemplate 在HibernateDaoSupport 中也有声明
    // 而且在注入SessionFactory 的时候会自动创建,当然你也
    // 可以显示的注入HibernateTemplate// ....}**************applicationContext.xml<bean id = "userDao" class = "dao.UserDao">
        <!--   把hibernateTemplate 改成 sessionFactory就可以   -->
        <property name="sessionFactory" ref = "sessionFactory" />
    </bean><!-- 这个就不需要了 -->
    <bean id = "hibernateTemplate" class = "org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref = "sessionFactory" />
    </bean>
      

  2.   

    回复的内容呢???
    再回一遍这个...没看出来,不过我一般是这么用的------- BaseDAO:
    public class BaseDao extends HibernateDaoSupport {
    // SessionFactory 在HibernateDaoSupport 中有声明
    // 在这里有不要再次声明了// HibernateTemplate 在HibernateDaoSupport 中也有声明
    // 而且在注入SessionFactory 的时候会自动创建,当然你也
    // 可以显示的注入HibernateTemplate// ....}**************applicationContext.xml<bean id = "userDao" class = "dao.UserDao">
        <!--   把hibernateTemplate 改成 sessionFactory就可以   -->
        <property name="sessionFactory" ref = "sessionFactory" />
    </bean><!-- 这个就不需要了 -->
    <bean id = "hibernateTemplate" class = "org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref = "sessionFactory" />
    </bean>
      

  3.   

    首先看你的spring配置文件应该是3.0,我用的是2.5,不知道有没有区别。<bean id = "userDao" class = "dao.UserDao">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
    </bean>这里该用sessionFactory而不是hibernateTemplate。
      

  4.   

    谢谢大家的支持!我找到问题了!有一个struts2-spring-plugin-2.0.11.jar包没有添加,加上后就好了!
      

  5.   

    用的时候直接使用this.getHibernateTemplate();就可以了
    [/code]<bean id = " baseDao" class = " BaseDao">
           <property name="sessionFactory" ref = "sessionFactory" />
    </bean>