一。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

解决方案 »

  1.   

    把spring配置中的sessionFactory的Bean放在第一个试试,好像跟顺序是有关系的。
      

  2.   

    用的myeclipse版本?
    如果是6.5 ,使用 hibernate 3.2 + spring 2.5 的话,删除  lib 下的 asm2.2.3.jar 的包应该就没问题了
      

  3.   

    可能是spring注入有问题。。或者是包。
      

  4.   

    就是这个问题,myeclipse提供的lib单独用没问题,合到一起通常会出问题,struts2也是这样子的,就是lib的问题
      

  5.   

    有个包支持
    sessionFactory的你拷贝到你工程下了吗,没有的话创建不了sessionFactory的
      

  6.   

    commons-pool-1.4.jar上网下载这个包吧
      

  7.   

      支持,我刚才也遇到了这个问题,就是删除了 asm2.2.3.jar   找个包,结果正确无误。。楼主试试...
      

  8.   

    不止一个包
    asm.2.23.jar
    asm.commons.2.23.jar
    asm.util.2.23.jar
    cglib.2.13.jar
    我被这个问题困扰了一个星期
    实验了几百次
    网上搜索了几百次
    才解决了
      

  9.   

    从你的spring配置文档中来看:
    <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 。