首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Struts+Hibernate+Spring 配置有关问题

2011-12-26 
Struts+Hibernate+Spring 配置问题新公司要求写一个Struts+Hibernate+Spring的例子,小弟搞了半天还是有问

Struts+Hibernate+Spring 配置问题
新公司要求写一个Struts+Hibernate+Spring的例子,小弟搞了半天还是有问题,求助大家帮忙解决,问题如下:
环境:JDK1.5+Eclipse3.2+MyEclipse5.0+Tomcat5.5+SQL   2000
struts-config.xml内容:
<?xml   version= "1.0 "   encoding= "UTF-8 "?>
<!DOCTYPE   struts-config   PUBLIC   "-//Apache   Software   Foundation//DTD   Struts   Configuration   1.2//EN "   "http://struts.apache.org/dtds/struts-config_1_2.dtd ">

<struts-config>
    <data-sources   />
    <form-beans   >
        <form-bean   name= "userRegisterForm "   type= "test.struts.user.form.UserRegisterForm "   />

    </form-beans>

    <global-exceptions   />
    <global-forwards   />
    <action-mappings   >
        <action
            attribute= "userRegisterForm "
            input= "/userRegister.jsp "
            name= "userRegisterForm "
            path= "/userRegister "
            scope= "request "
            type= "org.springframework.web.struts.DelegatingActionProxy ">
            <forward   name= "success "   path= "/success.jsp "   />
            <forward   name= "fail "   path= "/fail.jsp "   />
        </action>

    </action-mappings>

    <message-resources   parameter= "test.struts.ApplicationResources "   />
    <plug-in   className= "org.springframework.web.struts.ContextLoaderPlugIn ">
    <set-property   property= "contextConfigLocation "   value= "/WEB-INF/classes/applicationContext.xml "/>
    </plug-in>
</struts-config>

applicationContext.xml内容:
<?xml   version= "1.0 "   encoding= "UTF-8 "?>
<!DOCTYPE   beans   PUBLIC   "-//SPRING//DTD   BEAN//EN "   "http://www.springframework.org/dtd/spring-beans.dtd ">

<beans>
<bean   id= "dataSource "
class= "org.apache.commons.dbcp.BasicDataSource ">
<property   name= "driverClassName ">
<value> com.microsoft.jdbc.sqlserver.SQLServerDriver </value>
</property>
<property   name= "url ">
<value> jdbc:microsoft:sqlserver://localhost:1433 </value>
</property>
<property   name= "username ">
<value> test </value>
</property>
<property   name= "password ">
<value> test </value>
</property>
</bean>
<bean   id= "sessionFactory "
class= "org.springframework.orm.hibernate3.LocalSessionFactoryBean ">
<property   name= "configLocation ">
<value> classpath:hibernate.cfg.xml </value>
</property>
<property   name= "dataSource ">


  <ref   bean= "dataSource "> </ref>
  </property>
</bean>
<bean   id= "UserDAO "   class= "test.hibernate.UserDAO ">
<property   name= "sessionFactory ">
<ref   bean= "sessionFactory "   />
</property>
</bean>
<bean   name= "/userRegister "   class= "test.struts.user.action.UserRegisterAction ">
<property   name= "userDAO ">
<ref   bean= "UserDAO "/>
</property>
</bean>

</beans>

UserDAO内容:
package   test.hibernate;
//   default   package

import   java.util.List;
import   org.apache.commons.logging.Log;
import   org.apache.commons.logging.LogFactory;
import   org.hibernate.LockMode;
import   org.springframework.context.ApplicationContext;
import   org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
  *   Data   access   object   (DAO)   for   domain   model   class   User.
  *   @see   .User
  *   @author   MyEclipse   -   Hibernate   Tools
  */
public   class   UserDAO   extends   HibernateDaoSupport   {

        private   static   final   Log   log   =   LogFactory.getLog(UserDAO.class);

//property   constants
public   static   final   String   USERNAME   =   "username ";
public   static   final   String   PASSWORD   =   "password ";
public   static   final   String   EMAIL   =   "email ";
public   static   final   String   OTHER   =   "other ";

protected   void   initDao()   {
//do   nothing
}
       
        public   void   save(User   transientInstance)   {
                log.debug( "saving   User   instance ");
                try   {
                        getHibernateTemplate().save(transientInstance);
                        log.debug( "save   successful ");
                }   catch   (RuntimeException   re)   {
                        log.error( "save   failed ",   re);
                        throw   re;
                }
        }
}

UserRegisterAction.java内容:
/*
  *   Generated   by   MyEclipse   Struts
  *   Template   path:   templates/java/JavaClass.vtl
  */
package   test.struts.user.action;

import   javax.servlet.http.HttpServletRequest;
import   javax.servlet.http.HttpServletResponse;
import   org.apache.struts.action.Action;
import   org.apache.struts.action.ActionForm;
import   org.apache.struts.action.ActionForward;


import   org.apache.struts.action.ActionMapping;

import   test.hibernate.User;
import   test.hibernate.UserDAO;
import   test.struts.user.form.UserRegisterForm;

/**  
  *   MyEclipse   Struts
  *   Creation   date:   09-17-2007
  *  
  *   XDoclet   definition:
  *   @struts.action   path= "/userRegister "   name= "userRegisterForm "   input= "/userRegister.jsp "   scope= "request "   validate= "true "
  */
public   class   UserRegisterAction   extends   Action   {
/*
  *   Generated   Methods
  */

/**  
  *   Method   execute
  *   @param   mapping
  *   @param   form
  *   @param   request
  *   @param   response
  *   @return   ActionForward
  */
public   ActionForward   execute(ActionMapping   mapping,   ActionForm   form,
HttpServletRequest   request,   HttpServletResponse   response)   {
UserRegisterForm   userRegisterForm   =   (UserRegisterForm)   form;
try{
UserDAO   userDAO   =   new   UserDAO();
User   u   =new   User();
u.setUsername(userRegisterForm.getUsername());
u.setPassword(userRegisterForm.getPassword());
u.setEmail(userRegisterForm.getEmail());
u.setOther(userRegisterForm.getOther());

userDAO.save(u);
return   mapping.findForward( "success ");

}catch(Exception   e){
e.printStackTrace();
return   mapping.findForward( "fail ");
}

}

private   UserDAO   userDAO;

public   void   setUserDAO(UserDAO   userDAO){
this.userDAO   =   userDAO;
}
}

问题:

  java.lang.NullPointerException
at   test.hibernate.UserDAO.save(UserDAO.java:33)
at   test.struts.user.action.UserRegisterAction.execute(UserRegisterAction.java:49)
at   org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at   org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at   org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at   org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at   org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)


at   org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at   org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at   org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at   org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at   java.lang.Thread.run(Thread.java:595)

先谢谢大家了!

[解决办法]
...
getUserDao方法好象没有.
UserDAO userDAO = new UserDAO();这都可以不要吧
[解决办法]
UserDAO userDAO = new UserDAO();根本就是多余,
<bean name= "/userRegister " class= "test.struts.user.action.UserRegisterAction ">
<property name= "userDAO ">
<ref bean= "UserDAO "/>
</property>
</bean>
spring自动注入了

热点排行