浏览 5703 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-12
08:48:57,671 ERROR ServletDispatcher[serviceAction]:281 - Could not execute action java.lang.NullPointerException at webworkspring.LoginAction.execute(LoginAction.java:14) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:364) at com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:216) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113) at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272) at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source) package webworkspring; import java.util.ArrayList; import java.util.List; /** * @hibernate.class table="user" */ public class LoginInfo { private Long id; private String password; private String username; private List messages = new ArrayList(); private String errorMessage; public List getMessages() { return messages; } public String getErrorMessage() { return errorMessage; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } /** * @hibernate.property column="password" * @return */ public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } /** * @hibernate.property column="username" * @return */ public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } /** * @hibernate.id generator-class="native" column="id" * @return */ public Long getId() { return id; } public void setId(Long id) { this.id = id; } } package webworkspring; public interface UserDAO { public abstract boolean isValidUser(String username); } package webworkspring; import java.util.List; //import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class UserDAOImp extends HibernateDaoSupport implements UserDAO { //private SessionFactory sessionFactory; private static String hql = "from LoginInfo u where u.username=? "; public boolean isValidUser(String username) { List userList = this.getHibernateTemplate().find(hql,username);//出于演示的简洁性考虑,这里并没有校验密码 if (userList!=null && userList.size() > 0) { return true; } return false; } } package webworkspring; import java.util.Map; import com.opensymphony.xwork.Action; import com.opensymphony.xwork.ActionContext; import com.opensymphony.xwork.ModelDriven; public class LoginAction implements Action, ModelDriven { LoginInfo loginInfo = new LoginInfo(); private UserDAO userDAO; public String execute() throws Exception { if (userDAO.isValidUser(loginInfo.getUsername())) { return SUCCESS; } return ERROR; } public UserDAO getUserDAO() { return userDAO; } public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } public Object getModel() { return loginInfo; } } xwork.xml <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"> <xwork> <include file="webwork-default.xml" /> <package name="default" extends="webwork-default"> <action name="login" class="webworkspring.LoginAction"> <result name="success" type="dispatcher"><param name="location">/pages/main.jsp</param></result> <result name="loginfail" type="dispatcher"><param name="location">/pages/index.jsp</param></result> <interceptor-ref name="model-driven"/> <interceptor-ref name="params" /> </action> </package> </xwork> 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> <description>Spring Quick Start</description> <bean id="upperAction" class="springtest.UpperAction"> <property name="message"><value>您好! </value></property> </bean> <!-- 第二个例子--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"><value>org.gjt.mm.mysql.Driver</value></property> <property name="url"><value>jdbc:mysql://localhost:3306/webworkspring?characterEncoding=utf-8</value></property> <property name="username"><value>root</value></property> <property name="password"><value>root</value></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"><ref local="dataSource"/></property> <property name="mappingResources"> <list> <value>webworkspring/LoginInfo.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <!-- 这里没有将hibernate的所有配置拿近来是为了另外的应用的方便,而且只把spring需要的拿近来是很合理的--> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"><ref local="sessionFactory"/></property> </bean> <bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"><ref bean="transactionManager" /></property> <property name="target"><ref local="userDAO" /></property> <property name="transactionAttributes"> <props> <prop key="insert*">PROPAGATION_REQUIRED</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <bean id="userDAO" class="webworkspring.UserDAOImp"> <property name="sessionFactory"><ref local="sessionFactory" /></property> </bean> </beans> LoginInfo.hbm.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping > <class name="webworkspring.LoginInfo" table="user" > <id name="id" column="id" type="java.lang.Long" > <generator class="uuid"> <!-- To add non XDoclet generator parameters, create a file named hibernate-generator-params-LoginInfo.xml containing the additional parameters and place it in your merge dir. --> </generator> </id> <property name="password" type="java.lang.String" update="true" insert="true" column="password" /> <property name="username" type="java.lang.String" update="true" insert="true" column="username" /> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-LoginInfo.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-10-12
检查一下是不是loginAction中没有注入UserDao.
|
|
返回顶楼 | |
发表时间:2006-10-12
zidoing 写道 检查一下是不是loginAction中没有注入UserDao.
的确是主页的 debug时userDAO是空的,请问应该怎么改呢?是LoginAction.java 需要改 , 还是spring的配置文件? |
|
返回顶楼 | |
发表时间:2006-10-12
修改xwork.xml
<package name="default" extends="webwork-default" abstract="true" externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver" > <interceptors> <interceptor name="reference-resolver" class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor"/> |
|
返回顶楼 | |
发表时间:2006-10-12
xwork.properties中写了webwork.objectFactory = spring吗?
|
|
返回顶楼 | |
发表时间:2006-10-12
参考:
http://wiki.javascud.org/display/ww2cndoc/Spring |
|
返回顶楼 | |
发表时间:2006-10-12
知道原因了,谢谢各位,等会我调式好了,再发正确的配置文件。
1.webwork和spring没有接起来, 2.webwork针对dao的拦截器没有配置 |
|
返回顶楼 | |