一。web.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation </param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>二。spring配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="user" class="com.ssh.user.vo.User"></bean> <bean id="userdao" class="com.ddwl.user.impl.UserDao">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean name="/jsp/user" class="pro1012.action.UserAction" scope="prototype">
<property name="userdao">
<ref local="userdao"/>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
</beans>三。hibernate 配置:<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration><session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/mldn
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">MySQL</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="connection.autocommit">true</property>
<mapping resource="com/ssh/user/vo/User.hbm.xml" />
</session-factory></hibernate-configuration>
四。struts 配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>
<form-beans >
<form-bean name="userForm" type="pro1012.form.UserForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
input="/jsp/register.jsp"
name="userForm"
path="/jsp/user"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="registersuccess" path="/jsp/index.jsp"></forward>
<forward name="registerfailure" path="/jsp/register.jsp"></forward>
</action> </action-mappings> <message-resources parameter="pro1012.ApplicationResources" />
</struts-config>
五。DAO :public class UserDao extends HibernateDaoSupport implements IUserDao { public void register(User user) {
//Session session=HibernateSessionFactory.getSession();
//session.beginTransaction();
//session.save(user);
//session.getTransaction().commit();
HibernateTemplate ht = this.getHibernateTemplate();
ht.save(user);
}}六。 action中的代码:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package pro1012.action;
public class UserAction extends Action {
private IUserDao userdao;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
//先判断验证码是否正确
ActionErrors errors=new ActionErrors();
String code= (String)request.getSession().getAttribute("ccode");
String checkcode=userForm.getCode();
if(!(code.equals(checkcode))){
errors.add("codeerror", new ActionMessage("checkcode.error"));
// super.saveMessages(request, errors);
super.saveErrors(request, errors);
return mapping.getInputForward();
}
//如果验证码正确,则要进行插入操作
User user = new User();
user.setUserid(userForm.getUserid());
user.setUserpwd(userForm.getUserpwd());
user.setUserques(userForm.getUserques());
user.setUserans(userForm.getUserans());
//user.setUsermail(userForm.getUsermail());
user.setGrade(1);
try {
//this.iuserdao.register(user);
//IUserDao userdao= new UserDao();
userdao.register(user);
request.getSession().setAttribute("userid", user.getUserid());
request.getSession().setAttribute("grade", user.getGrade());
return mapping.findForward("registersuccess");
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return mapping.findForward("registerfailure");
}
}
public IUserDao getUserdao() {
return userdao;
}
public void setUserdao(IUserDao userdao) {
this.userdao = userdao;
}
}错误信息:
异 常
javax.servlet.ServletException: Error creating bean with name 'userdao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
起 因 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userdao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation </param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>二。spring配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="user" class="com.ssh.user.vo.User"></bean> <bean id="userdao" class="com.ddwl.user.impl.UserDao">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean name="/jsp/user" class="pro1012.action.UserAction" scope="prototype">
<property name="userdao">
<ref local="userdao"/>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
</beans>三。hibernate 配置:<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration><session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/mldn
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">MySQL</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="connection.autocommit">true</property>
<mapping resource="com/ssh/user/vo/User.hbm.xml" />
</session-factory></hibernate-configuration>
四。struts 配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>
<form-beans >
<form-bean name="userForm" type="pro1012.form.UserForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
input="/jsp/register.jsp"
name="userForm"
path="/jsp/user"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="registersuccess" path="/jsp/index.jsp"></forward>
<forward name="registerfailure" path="/jsp/register.jsp"></forward>
</action> </action-mappings> <message-resources parameter="pro1012.ApplicationResources" />
</struts-config>
五。DAO :public class UserDao extends HibernateDaoSupport implements IUserDao { public void register(User user) {
//Session session=HibernateSessionFactory.getSession();
//session.beginTransaction();
//session.save(user);
//session.getTransaction().commit();
HibernateTemplate ht = this.getHibernateTemplate();
ht.save(user);
}}六。 action中的代码:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package pro1012.action;
public class UserAction extends Action {
private IUserDao userdao;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
//先判断验证码是否正确
ActionErrors errors=new ActionErrors();
String code= (String)request.getSession().getAttribute("ccode");
String checkcode=userForm.getCode();
if(!(code.equals(checkcode))){
errors.add("codeerror", new ActionMessage("checkcode.error"));
// super.saveMessages(request, errors);
super.saveErrors(request, errors);
return mapping.getInputForward();
}
//如果验证码正确,则要进行插入操作
User user = new User();
user.setUserid(userForm.getUserid());
user.setUserpwd(userForm.getUserpwd());
user.setUserques(userForm.getUserques());
user.setUserans(userForm.getUserans());
//user.setUsermail(userForm.getUsermail());
user.setGrade(1);
try {
//this.iuserdao.register(user);
//IUserDao userdao= new UserDao();
userdao.register(user);
request.getSession().setAttribute("userid", user.getUserid());
request.getSession().setAttribute("grade", user.getGrade());
return mapping.findForward("registersuccess");
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return mapping.findForward("registerfailure");
}
}
public IUserDao getUserdao() {
return userdao;
}
public void setUserdao(IUserDao userdao) {
this.userdao = userdao;
}
}错误信息:
异 常
javax.servlet.ServletException: Error creating bean with name 'userdao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
起 因 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userdao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
如果是6.5 ,使用 hibernate 3.2 + spring 2.5 的话,删除 lib 下的 asm2.2.3.jar 的包应该就没问题了
sessionFactory的你拷贝到你工程下了吗,没有的话创建不了sessionFactory的
asm.2.23.jar
asm.commons.2.23.jar
asm.util.2.23.jar
cglib.2.13.jar
我被这个问题困扰了一个星期
实验了几百次
网上搜索了几百次
才解决了
<bean id="userdao" class="com.ddwl.user.impl.UserDao">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean> 在userdao中需要注入sessionFactory,但是在你的UserDao中并没有用的sessionFactory,而是用的HibernateTemplate 。public class UserDao extends HibernateDaoSupport implements IUserDao { HibernateTemplate ht = this.getHibernateTemplate();
ht.save(user);
}
} 所有既然没有用到
配置文档中就要修改
<bean id="userdao" class="com.ddwl.user.impl.UserDao">
</bean>否则就要修改对应的UserDao 。