日期:2014-05-19  浏览次数:20646 次

SSH问题请教
好久没写SSH了,最近写了一个登录发现好多问题,请大侠赐教!
action部分:
Java code

public String login() throws Exception{
        System.out.print(users.getUname());
        System.out.print(users.getUpwd());
        try {
            Users loginUser=loginservice.login(users.getUname(),users.getUpwd());        
            if(loginUser!=null){
                ActionContext context=ActionContext.getContext();
                context.getSession().put("LOGINUSER", loginUser);
                return SUCCESS;
            }
        } catch (Exception e) {
            log.error("登录查询失败", e);
            return ERROR;
        }
        
        return INPUT;
    }


service部分:
Java code

public Users login(String uname,String upass){
        List list=usersDAO.findByUname(uname);
        
        if(list==null ||list.size()==0){
            return null;
        }
        Users users=(Users)usersDAO.findByUname(uname).get(0);
        
        if(users==null){
            return null;
        }
        
        if(uname.equals(users.getUname())&&upass.equals(users.getUpwd())){
            return users;
        }else{
            return null;
        }
    }



dao部分:
Java code

public List findByUname(Object uname) {
        return findByProperty(UNAME, uname);
    }



Java code

public List findByProperty(String propertyName, Object value) {
        log.debug("finding Users instance with property: " + propertyName
                + ", value: " + value);
        try {
            String queryString = "from Users as model where model."
                    + propertyName + "= ?";
            return getHibernateTemplate().find(queryString, value);
        } catch (RuntimeException re) {
            log.error("find by property name failed", re);
            throw re;
        }
    }


问题是,加断点调试。走完这些方法就回到action里的return ERROR

------解决方案--------------------
这个可能是你的daoimpl里出了问题,你换种方式试试.
------解决方案--------------------
把你的queryString打印出来看看。
------解决方案--------------------
先检查你的参数传到daoimpl没有,数据库是否有对应的记录存在,检查查询结果是否为空. 这是我的理解,希望对你有帮助,不过一般daoimpl都是自己写的吧.
------解决方案--------------------
探讨

您的意思是让我把整个自动生成的dao全部删除了自己写?

------解决方案--------------------
http://www.iteye.com/problems/38304
你的问题很奇怪,应该是配置问题?
------解决方案--------------------
代码没看出有什么问题,楼上说的很有可能,看看配置文件
------解决方案--------------------
楼主把spring的配置文件粘出来,可能是bean没有配置对的问题。


------解决方案--------------------
Java code

    <!-- 配置DAO组件的父模板 -->
    <bean id="daoTemplate" abstract="true">
        <!-- 注入sessionFactory引用 -->
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <!-- 流水号 -->
    <bean id="sequenceDao" parent="daoTemplate" class="com.cms.dao.impl.SequenceDaoImpl" />