不好意思 代码比较多,不过很容易看懂,userDAO注入进来为null,new一个userDAO,提示操作失败,说dao有问题,这几写个测试类,dao却没有问题
[color=red]Login.java[/color]package action;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import dao.user.UserDAO;
import domain.user.User;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ActionContext;
public class Login implements Action {
private User user = new User();
private UserDAO userDAO;
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("Start execute......。。。。。。。。。。。。。。");
System.out.println("User="+user.getName());
if(user.getName()==null||user.getName().equals("")||user.getPassword()==null||user.getPassword().equals("")){
return INPUT;
}else{
[color=red] List l = userDAO.findByProperty("name", user.getName());//就在这行出现空指针错误,userDAO为null[/color]
Iterator i = l.iterator();
User users=null;
while(i.hasNext()){
users = (User)i.next();
System.out.println("User="+users.getName());
}
if(user.getName().equals(users.getName())){
return SUCCESS;
}
return null;
}
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
[color=red]UserDAO.java[/color]
package dao.user;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import domain.user.User;;
/**
* Data access object (DAO) for domain model class user.
* @see .user
* @author MyEclipse - Hibernate Tools
*/
public class UserDAO extends HibernateDaoSupport implements IBaseHibernateDAO {
private static final Log log = LogFactory.getLog(UserDAO.class);
private LocalSessionFactoryBean sessionFactory;
public void setSessionFactory(LocalSessionFactoryBean sessionFactory) {
this.sessionFactory = sessionFactory;
}
/* (non-Javadoc)
* @see dao.a#save(domain.user.User)
*/
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;
}
}
public List findByProperty(String propertyName, Object value) {
log.debug("finding User instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from User as model where model."
+ propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
}
[color=red]UserDAOTest.java userDAO的测试类,结果没问题[/color]
package testConnection;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import dao.user.UserDAO;
import domain.user.User;;
public class UserDAOTest {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");
UserDAO userDAO =(UserDAO)context.getBean("userDAO");
logger.debug("初始化成功");
System.out.print("初始化成功");
List l = userDAO.findByProperty("name", "ray");
Iterator i = l.iterator();
while(i.hasNext()){
User u = (User)i.next();
System.out.println(u.getPassword());
}
}
}
[color=red]applicationContext.xml[/color]
<?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="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>WEB-INF/init.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>${dataSource.driverClassName}</value>
</property>
<property name="url">
<value>${dataSource.url}</value>
</property>
<property name="username"><value>${dataSource.username}</value></property>
<property name="password"><value>${dataSource.password}</value></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
</props>
</property>
<property name="mappingResources">
<list>
<!-- 加u-28803 映u23556 文u20214 -->
<value>User.hbm.xml</value>
</list>
</property>
</bean>
<bean id="login" class="action.Login">
<property name="userDAO">
<ref bean="userDAO" />
</property>
</bean>
<bean id="userDAO" class="dao.user.UserDAO" dependency-check="all">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</beans>
[color=red]xwork.xml[/color]
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<include file="webwork-default.xml"/>
<include file="config-browser.xml"/>
<package name="default" extends="webwork-default">
<action name="login" class="action.Login">
<result name="success" type="dispatcher">
<param name="location">/success.jsp</param>
</result>
<result name="input" type="dispatcher">
<param name="location">/success.jsp</param>
</result>
<interceptor-ref name="params"/>
</action>
</package>
</xwork>
[color=red]web.xml[/color]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/taglib.tld</taglib-location>
</taglib>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
[color=red]Login.java[/color]package action;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import dao.user.UserDAO;
import domain.user.User;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ActionContext;
public class Login implements Action {
private User user = new User();
private UserDAO userDAO;
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("Start execute......。。。。。。。。。。。。。。");
System.out.println("User="+user.getName());
if(user.getName()==null||user.getName().equals("")||user.getPassword()==null||user.getPassword().equals("")){
return INPUT;
}else{
[color=red] List l = userDAO.findByProperty("name", user.getName());//就在这行出现空指针错误,userDAO为null[/color]
Iterator i = l.iterator();
User users=null;
while(i.hasNext()){
users = (User)i.next();
System.out.println("User="+users.getName());
}
if(user.getName().equals(users.getName())){
return SUCCESS;
}
return null;
}
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
[color=red]UserDAO.java[/color]
package dao.user;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import domain.user.User;;
/**
* Data access object (DAO) for domain model class user.
* @see .user
* @author MyEclipse - Hibernate Tools
*/
public class UserDAO extends HibernateDaoSupport implements IBaseHibernateDAO {
private static final Log log = LogFactory.getLog(UserDAO.class);
private LocalSessionFactoryBean sessionFactory;
public void setSessionFactory(LocalSessionFactoryBean sessionFactory) {
this.sessionFactory = sessionFactory;
}
/* (non-Javadoc)
* @see dao.a#save(domain.user.User)
*/
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;
}
}
public List findByProperty(String propertyName, Object value) {
log.debug("finding User instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from User as model where model."
+ propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
}
[color=red]UserDAOTest.java userDAO的测试类,结果没问题[/color]
package testConnection;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import dao.user.UserDAO;
import domain.user.User;;
public class UserDAOTest {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");
UserDAO userDAO =(UserDAO)context.getBean("userDAO");
logger.debug("初始化成功");
System.out.print("初始化成功");
List l = userDAO.findByProperty("name", "ray");
Iterator i = l.iterator();
while(i.hasNext()){
User u = (User)i.next();
System.out.println(u.getPassword());
}
}
}
[color=red]applicationContext.xml[/color]
<?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="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>WEB-INF/init.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>${dataSource.driverClassName}</value>
</property>
<property name="url">
<value>${dataSource.url}</value>
</property>
<property name="username"><value>${dataSource.username}</value></property>
<property name="password"><value>${dataSource.password}</value></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
</props>
</property>
<property name="mappingResources">
<list>
<!-- 加u-28803 映u23556 文u20214 -->
<value>User.hbm.xml</value>
</list>
</property>
</bean>
<bean id="login" class="action.Login">
<property name="userDAO">
<ref bean="userDAO" />
</property>
</bean>
<bean id="userDAO" class="dao.user.UserDAO" dependency-check="all">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</beans>
[color=red]xwork.xml[/color]
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<include file="webwork-default.xml"/>
<include file="config-browser.xml"/>
<package name="default" extends="webwork-default">
<action name="login" class="action.Login">
<result name="success" type="dispatcher">
<param name="location">/success.jsp</param>
</result>
<result name="input" type="dispatcher">
<param name="location">/success.jsp</param>
</result>
<interceptor-ref name="params"/>
</action>
</package>
</xwork>
[color=red]web.xml[/color]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/taglib.tld</taglib-location>
</taglib>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>