求助!!action里调用dao出现空指针错误,发现dao为null,不知为何?

不好意思 代码比较多,不过很容易看懂,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>
Service层和DAO层是软件开发中常见的两个层次。Service层(也称为业务逻辑层)负责对数据的处理,例如对数据进行验证、转换、计算等操作,并调用DAO层来实现对数据的增删改查。Service层是在MVC三层模式中新增的一层,它能够更清晰地定义应用程序的边界,将应用程序的功能和业务逻辑分离开来,实现了更好的代码结构和可维护性。 而DAO层(数据访问层)是一种较为底层和基础的操作层,主要负责与数据库进行交互,执行数据的持久化操作,例如对数据库表的增删改查。DAO层提供了对数据库的访问接口,封装了数据库操作的细节,使得Service层可以更加专注于业务逻辑的处理而不必关心底层的数据库操作细节。 总结来说,Service层负责处理业务逻辑,调用DAO层进行数据的增删改查操作,而DAO层负责与数据库进行交互,执行数据的持久化操作。这样的分层结构可以提高软件的可维护性和扩展性,并更好地实现业务和数据的分离。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Action层, Service层 ,modle层 和 Dao层详解](https://blog.csdn.net/David_snjly/article/details/45568573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [java中 service层和DAO层的区别](https://blog.csdn.net/qq_28673091/article/details/108516488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值