SSH(struts+spring+hibernate)迅速开发--第六章 用户登陆和注册(3)

i)             

2.       编写UserServices的实现类UserServicesImpl.java,代码如下:

/**

 *

 */

package cn.com.book.demo.services.impl;

 

import java.util.List;

 

import cn.com.book.demo.hibernate.dao.Tuser;

import cn.com.book.demo.hibernate.dao.TuserDAO;

import cn.com.book.demo.services.UserServices;

 

/**

 * @author Noble.Yang

 *

 */

public class UserServicesImpl implements UserServices {

       private TuserDAO userDAO = null;

 

       public void setUserDAO(TuserDAO userDAO) {

              this.userDAO = userDAO;

       }

 

       /*

        * (non-Javadoc)

        *

        * @see cn.com.book.demo.services.UserServices#register(java.lang.String,

        *      java.lang.String, java.lang.String, java.lang.String,

        *      java.lang.String)

        */

       public int register(String userName, String password, String name,

                     String email, String phone) {

              int result = -1;

              // 校验传过来的参数是否合法

              if (userName == null || userName.equals("")) {

                     result = 2;

              } else if (password == null || password.equals("")) {

                     result = 3;

              } else if (name == null || name.equals("")) {

                     result = 4;

              } else {

                     this.initDAO();

                     List userList = this.userDAO.findByUserName(userName);

                     if(userList != null && userList.size()>0){

                            result = 1; // 需要添加的用户名已经存在

                     }else{

                            Tuser tUser = new Tuser();

                            tUser.setUserName(userName);

                            tUser.setPassword(password);

                            tUser.setName(name);

                            tUser.setEmail(email);

                            tUser.setPhone(phone);

                           

                            this.userDAO.attachDirty(tUser);

                            result = 0;

                     }

              }

              return result;

       }

 

       /*

        * (non-Javadoc)

        *

        * @see cn.com.book.demo.services.UserServices#verifyUser(java.lang.String,

        *      java.lang.String)

        */

       public int verifyUser(String userName, String password) {

              int result = -1;

 

              // 校验用户名和密码,用户名和密码都不能为空

              if (userName == null || userName.equals("") || password == null

                            || password.equals("")) {

                     result = 3;

              } else {

                     // 初始化dao对象

                     this.initDAO();

                     // 根据用户名,从数据库中查找对象

                     List userList = this.userDAO.findByUserName(userName);

                     if (userList == null || userList.size() == 0) {

                            result = 1;// 没有记录

                     } else {

                            Tuser user = (Tuser) userList.get(0);

                            if (user == null) {

                                   result = 1;

                            } else {

                                   if (password.equals(user.getPassword())) {

                                          result = 0; // 用户名和密码校验成功

                                   } else {

                                          result = 2; // 用户名和密码不匹配

                                   }

                            }

                     }

              }

              return result;

       }

 

       /**

        * 初始化成员变量dao,如果没有初始化,就直接自己new一个Tuser实例

        * 建议每个服务方面里面,在做调用dao做具体操作前,都调用该方法

        *

        */

       private void initDAO() {

              if (this.userDAO == null) {

                     this.userDAO = new TuserDAO();

              }

       }

 

}

代码说明:

   UserServicesImpl,UserServices中定义的两个接口进行了具体的实现:校验用户名密码和新注册一个新用户.具体逻辑,可以详细阅读上面的源代码.下面是几个需要注意的地方:

i)            该代码中有个成员变量 private TuserDAO userDAO,并有一个对应的符合JavaBean规范的set方法.

这个成员变量和规范的set方法是必须的,因为我们要使用Spring进行IOC注册,其中编写注册Bean的配置文件需要.

同样,如果该服务中还要用到别的DAO,也需要添加对应的成员变量和set方法

ii)           Private void initDAO方法

该方法是初始化userDAO成员变量的,主要是容错用,防止Spring注册时有纰漏的时候,没能及时初始化对应的dao实例,引起不必要的空指针异常.当然为了配合有效的防止空指针异常,需要在每个需要调用dao对象的时候,先调用该方法.

目前initDAO方法里面,只是实现了当userDAO为空的时候,new一个TuserDAO实例,如果有多个dao的话,需要同样添加多个判断和多个new实例语句.

iii)          

3.       Spring,注册UserServices Bean

我们在上面定义资源和配置文件里面,有规划出了一个applicationContext-service.xml文件,该文件是用来注册服务类和相关事务管理的.我们在applicationContext-service.xml,添加如下内容:

<bean id="userService"

        class="cn.com.book.demo.services.impl.UserServicesImpl">

        <property name="userDAO">

               <ref bean="TuserDAO" />

        </property>

</bean>

这是注册userService服务的具体配置,详细说明如下

Bean标签,用来定义一个bean的具体实例,一个bean一个实例

Id 属性:定义该bean实例的标记,必须唯一,不能跟别的beanid重复.

Class属性:指定bean实例的具体类名

Property子标签:装配bean实例中用到的属性

Name属性:bean属性的变量名称.UserServicesImpl类中,有个userDAO属性,name的值必须跟代码中的属性值一样.

Ref标签:指定属性的具体引用哪个bean定义,这引用的是idTuserDAObean. TuserDAO Bean的定义,我们在applicationContext.xml文件中可以找到详细的定义,这是我们在生成POJO对象的时候,自动生成的:

<bean id="TuserDAO"

        class="cn.com.book.demo.hibernate.dao.TuserDAO">

        <property name="sessionFactory">

               <ref bean="sessionFactory" />

        </property>

</bean>

 

我们如果要注册别的bean的话,也可以根据上面的介绍类推注册

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值