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

来源:互联网 发布:oracle数据库表空间 编辑:程序博客网 时间:2024/06/04 19:46

开始运行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");}elseSystem.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;}elsereturn 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参考


0 0