SSH框架 DAO注入失败 ---总结

开始运行SSH框架,发现service调用dao层时候一直报空指针错误,各种查看配置文件和调用,终于发现了问题

在action层里面写了一句



//注销之后没有报错
this.setUserService(new UserServiceImpl());

 

既然是注入,就不用new一个了

下面附上Java代码

UserAction.java

	private User user=new User();
	private String userid;
	private String userpwd;
	private UserService userService;
	
	/**
	 * 用户登录验证
	 * 
	 * @return
	 * @throws Exception
	 */
	public String login() throws Exception {
		logger.info("##login user >" + userid + " userpwd>" + userpwd);
		// 获取页面属性值
		userid = ServletActionContext.getRequest().getParameter("userid");
		userpwd = ServletActionContext.getRequest().getParameter("userpwd");
		logger.info("userid>>" + userid + "userPwd>>" + userpwd);
//		this.setUserService(new UserServiceImpl());
		boolean flag =userService.login(userid, userpwd);
		logger.info("flag="+flag);
		if (flag) {
			return "success";
		} else {
			return "error";
		}
	}

	public UserService getUserService() {
		return userService;
	}
        
        //测试userService是否为空
	public void setUserService(UserService userService) {
		if(userService==null){
			System.out.println("setUserService>>>>userService==null");
		}else
			System.out.println("setUserService>>>>userService!=null");
		this.userService = userService;
	}
	

UserServiceImpl.java

	private UserDao userDao;
	public boolean login(String userid, String userpwd) {
		boolean flag = false;
		try{
			logger.info("##  userid="+userid+" and  userpwd="+userpwd);
			logger.info("## userDao= "+userDao);
			if(userDao!=null){
				flag=userDao.findByUser(userid, userpwd);
			}else{
				logger.info(">>>userDao=null");
			}
		}catch (Exception e) {
			logger.info("%% UserServiceImpl  login failed!");
			e.printStackTrace();
		}
		return flag;
	}

    public UserDao getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
        if(userDao==null){
            System.out.println("setUserDao>>userDao=null  ");
        }else{
            System.out.println("setUserDao<<userDao!=null  ");
        }
    } 

UserDaoImpl.java

	@SuppressWarnings("unchecked")
	public boolean findByUser(String userid, String userpwd) {
		String hql="from User where userid='"+userid+"' and userpwd='"+userpwd+"'";
		logger.info(">>userid="+userid+"  >>userpwd="+userpwd);
		List<User> u = getHibernateTemplate().find(hql);
		logger.info("u="+u);
		if (u.size() > 0) {
			return true;
		}else
			return false;
	}

applicationContext.xml部分相关代码

	<!-- 把Session工厂注入给HibernateTemplate -->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

        <!-- 配置DAO 组件 begin -->
	<bean id="userDao" class="com.gxuwz.aimage.dao.impl.UserDaoImpl">
		<property name="sessionFactory" ref="sessionFactory" ></property>
	</bean>
	<!-- 配置DAO 组件 end -->

	<!-- 配置Service 组件 begin -->
	<bean id="userService" class="com.gxuwz.aimage.service.impl.UserServiceImpl">
		<property name="userDao" ref="userDao" ></property>
	</bean>
	<!-- 配置Service 组件 end -->
	
	<!-- 配置Action 组件 begin -->
	<bean id="userAction" class="com.gxuwz.aimage.web.struts.UserAction">
		<property name="userService" ref="userService" />
	</bean>

作为以后调试bug参考


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值