applicationContext.xml代码:<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:aop="http://www.springframework.org/schema/aop" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.2.xsd 
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd ">
<!-- 读取db.properties文件 -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 配置c3p0连接池 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
<property name="jdbcUrl" value="${jdbc.jdbcUrl}" ></property>
<property name="driverClass" value="${jdbc.driverClass}" ></property>
<property name="user" value="${jdbc.user}" ></property>
<property name="password" value="${jdbc.password}" ></property>
</bean>

<!-- 将SessionFactory配置到spring容器中 -->
<bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 将连接池注入到sessionFactory, hibernate会通过连接池获得连接 -->
<property name="dataSource" ref="dataSource" ></property>
<!-- 配置hibernate基本信息 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect" >org.hibernate.dialect.MySQLDialect</prop>

<!--  可选配置 -->
<prop key="hibernate.show_sql" >true</prop>
<prop key="hibernate.format_sql" >true</prop>
<prop key="hibernate.hbm2ddl.auto" >update</prop>
</props>
</property> <!-- 引入orm元数据,指定orm元数据所在的包路径,spring会自动读取包中的所有配置 -->
<property name="packagesToScan" value="classpath:com.yang"></property>
</bean>

<!-- 配置Dao -->

<bean name="customerDao" class="com.yang.Dao.Impl.CustomerDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<!-- 配置Service -->

<bean name="customerService" class="com.yang.Service.Impl.CustomerServiceImpl">
<property name="cd" ref="customerDao"></property>
</bean>

<!-- 配置Action -->

<bean name="customerAction" class="com.yang.web.action.CustomerActoin" scope="prototype">
<property name="cs" ref="customerService"></property>
</bean>

</beans>Struts.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<!-- struts.objectFactory = spring  将action的创建交给spring容器 
struts.objectFactory.spring.autoWire = name spring负责装配Action依赖属性 -->
<constant name="struts.objectFactory" value="spring"></constant>

<!-- 配置Action -->

<package name="crm" extends="struts-default" >

<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.RuntimeException"></exception-mapping>
</global-exception-mappings>

<action name="CustomerAction_*" class="customerAction" method="{1}">
<result name="list"  >/jsp/customer/list.jsp</result>
</action>

</package>

</struts>DaoImpl代码
package com.yang.Dao.Impl;import java.util.List;import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import com.yang.Dao.CustomerDao;
import com.yang.entity.Customer;public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {

@Override
public List<Customer> getPageList(DetachedCriteria dc, int start, Integer pageSize) {

List<Customer> list = (List<Customer>) getHibernateTemplate().findByCriteria(dc, start, pageSize);

return list;
} @Override
public Integer getTotalCount(DetachedCriteria dc) {
//设置查询的聚合函数,总记录数
dc.setProjection(Projections.rowCount());

List<Long> list = (List<Long>) getHibernateTemplate().findByCriteria(dc);

//清空之前设置的聚合函数
dc.setProjection(null);

if(list!=null&&list.size()>0){
Long count = list.get(0);
return count.intValue();
}else{
return null;
}

}}
SeriviceImpl代码package com.yang.Service.Impl;import java.util.List;import org.hibernate.criterion.DetachedCriteria;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;import com.yang.Dao.CustomerDao;
import com.yang.Service.CustomerService;
import com.yang.entity.Customer;
import com.yang.utils.PageBean;
public class CustomerServiceImpl implements CustomerService { private CustomerDao cd; 

@Override
public PageBean getPageBean(DetachedCriteria dc, Integer currentPage, Integer pageSize) {
//1、调用Dao查询总记录数
Integer totalCount = cd.getTotalCount(dc);
//2、创建PageBean对象,计算总页数
PageBean pb = new PageBean(currentPage,totalCount,pageSize);
//3、调用Dao查询分页列表数据
List<Customer> list = cd.getPageList(dc, pb.getStart(), pb.getPageSize());
//4、列表数据放入pageBean中,并返回
pb.setList(list);
return pb;
}
public void setcd(CustomerDao cd) {
this.cd = cd;
}
}Action代码package com.yang.web.action;import org.apache.commons.lang3.StringUtils;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.yang.Service.CustomerService;
import com.yang.entity.Customer;
import com.yang.utils.PageBean;public class CustomerActoin extends ActionSupport implements ModelDriven<Customer> {

private Customer customer = new Customer();
private CustomerService cs;
private Integer currenPage;
private Integer pageSize;

public String list() throws Exception {
//封装离线查询对象
DetachedCriteria dc = DetachedCriteria.forClass(Customer.class);
//判断并封装参数
if(StringUtils.isNoneBlank(customer.getCust_name())){
dc.add(Restrictions.like("cust_name", "%"+customer.getCust_name()+"%"));
}
//1、调用Service查询分页数据(PageBean)
PageBean pb = cs.getPageBean(dc, currenPage, pageSize);
//2、将PageBean放入request域,转发到列表页面显示
ActionContext.getContext().put("pageBean", pb); 
return "list";
}
@Override
public Customer getModel() {
return null;
}
public void setcs(CustomerService cs) {
this.cs = cs;
}

}

解决方案 »

  1.   

    最后是报错:
    十二月 30, 2018 10:49:30 上午 org.apache.catalina.core.StandardContext listenerStart
    严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.yang.Dao.Impl.CustomerDaoImpl] for bean with name 'customerDao' defined in class path resource [applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: com.yang.Dao.Impl.CustomerDaoImpl
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1352)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:628)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:597)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1445)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:975)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:752)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:663)
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1642)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: com.yang.Dao.Impl.CustomerDaoImpl
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1397)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1344)
    ... 23 more
      

  2.   

    applicationContext.xml加上 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>移除
     <bean name="customerDao" class="com.yang.Dao.Impl.CustomerDaoImpl">
            <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>
    中的 <property name="sessionFactory" ref="sessionFactory"></property> 试试呢!
      

  3.   

    <bean name="customerDao" class="com.yang.Dao.Impl.CustomerDaoImpl">
            <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>
    把这段代码注释掉看看,然后运行看看报不报错误,在进行下一步操作
      

  4.   

    还是会报错的,只要不配得下的Dao/Service/Action的bean就不报错,
      

  5.   

    汗 bean name=xxxx 
    改为 
    bean id=xxxx
      

  6.   

    你确定你注入的是实现类而不是接口类吗,service,dao里你配置的是接口实现类的路径,但我看你set的时候貌似是接口,不确定你的类名,所以建议你看一下,还有bean确实应该是id,希望你注意一下这几个点
      

  7.   

    我的注入名字写的是接口,但是我注入的class是实现类。set我试了换实现类接收,bean的name也换成了id,还是一模一样的错误,现在项目在别人的电脑上也运行不了了