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;
}
}
<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;
}
}
十二月 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
<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> 试试呢!
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
把这段代码注释掉看看,然后运行看看报不报错误,在进行下一步操作
改为
bean id=xxxx