新公司要求写一个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 packageimport 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)先谢谢大家了!
环境: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 packageimport 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)先谢谢大家了!
解决方案 »
- 关于requestScope
- jsp页面重要用到一张图片,这张图片应放在什么位置才能在页面上显示出来
- ireport不能显示点(.),怎么办?
- 快疯了,为什么tomcat访问要加webroot啊 在线等答案啊!!!
- spring的配置问题
- 我给数据库加了个字段LEAVEDATE,在本地测试没问题,然后把生成的CLASS发部到服务后就出下面的异常,请教高手,怎么改呀(急)
- spring有什么好处?性能效率怎么考虑?
- 如果一个公司的项目策划是业务员,那么程序员会怎样?
- 急!救命!!!!!
- servlet放到别的目录怎么不能用了?
- 在javascript中,每个判断后必须要写return吗?
- 实在是搞不定了,大家帮看看!
getUserDao方法好象没有.
UserDAO userDAO = new UserDAO();这都可以不要吧
UserDAO userDAO = new UserDAO();就是这句话出问题了!
多谢上面的大哥了!
getUserDao方法不用.
<bean name="/userRegister" class="test.struts.user.action.UserRegisterAction">
<property name="userDAO">
<ref bean="UserDAO"/>
</property>
</bean>
spring自动注入了