⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userbean.java

📁 《JSF第一步》的源码清华大学出版社的书
💻 JAVA
字号:
package com.jsfabc.jsh.view.bean;

import com.jsfabc.jsh.model.bo.User;
import com.jsfabc.jsh.model.service.UserService;
import com.jsfabc.jsh.model.exception.UserException;
import com.jsfabc.jsh.model.service.impl.UserServiceHibernateImpl;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import com.jsfabc.jsh.model.exception.UserNotExistException;
import com.jsfabc.jsh.model.exception.DuplicateUserException;
import com.jsfabc.jsh.model.exception.DbException;
import com.jsfabc.jsh.utils.MessageFactory;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class UserBean {
    //用于登录的用户名	
    private String userName;
    //用于登录的密码
    private String password;
    //用于重输的密码
    private String pwd;
    //用于表示登录的日期
    private Date loginDate;
    
    //用户服务
    private UserService userService;    

    //构造函数
    public UserBean() {
    }

    // 用户名的取得与设置
    public String getUserName() { 
        return userName; 
    }
    public void setUserName(String newValue) { 
    	this.userName = newValue; 
    }

    // 密码的取得与设置
    public String getPassword() { 
        return password; 
    }
    public void setPassword(String newValue) { 
    	this.password = newValue; 
    }
    
    // 重输密码的取得与设置
    public String getPwd() { 
    	return pwd; 
    }
    public void setPwd(String newValue) { 
        this.pwd = newValue; 
    }    
    
    //登录日期的取得与设置
    public Date getLoginDate() { 
    	return loginDate;
    }         
    public void setLoginDate(Date newValue){
        this.loginDate=newValue;
    }
        
    //创建日志对象
    Log log=LogFactory.getLog(this.getClass());
    
    //依赖注入
    public void setUserService(UserService newValue){
    	this.userService=newValue;
    } 

    public String loginAction(){
        FacesContext facesContext= FacesContext.getCurrentInstance();
        User user = null;

        
        //调用业务对象的登录方法
        try{
            user = userService.login(userName, password);
            if(user!=null){
                //在此可以做一些想做的事情。
                this.loginDate=user.getLoginDate();
                //在日志中记录成功登录的用户                
                log.info(userName + ": login success!");
                
                //用户成功登录后,返回loginAction方法的结果,
                //该结果是一个字符串,用于与导航规则比较,
                //导航到登录成功后的页面
                return "success";
            }
            else{
                //声明一个没有登录成功的消息
                FacesMessage msg=MessageFactory
                             .getMessage(facesContext,"error_password","");
                //为了与原来例子保持一致,这里设置了消息的严重等级
                msg.setSeverity(FacesMessage.SEVERITY_WARN);
                //将消息保存在facesContext中,供其他过程使用
                facesContext.addMessage(null,msg);
                //返回loginAction方法的结果,
                //该结果是一个字符串,用于与导航规则比较,
                //导航到登录失败后的页面
                return "failure";
            }
        }
        catch(UserNotExistException ue){
            //捕获UserNotExistException异常,其余参见上面else处的注释
            FacesMessage msg=MessageFactory.getMessage(facesContext,
                                ue.getMessage(),new Object[]{ue.getUsername()});
            msg.setSeverity(FacesMessage.SEVERITY_WARN);
            facesContext.addMessage(null,msg);
            //在日志中记录尝试登录的用户ID
            log.warn(userName + ": want log in!");            
            return "failure";
        }        
        catch(DbException de){
            //捕获DbException异常,其余参见上面else处的注释
            FacesMessage msg=MessageFactory.getMessage
                          (facesContext,"error_database_error","");
            msg.setSeverity(FacesMessage.SEVERITY_WARN);
            facesContext.addMessage(null,msg);
            return "failure";

        }
        catch(Exception e){
            //捕获其他异常,其余参见上面else处的注释,
            FacesMessage msg=MessageFactory.getMessage
                            (facesContext,"error_unexpected","");            
            msg.setSeverity(FacesMessage.SEVERITY_ERROR);
            facesContext.addMessage(null,msg);
            return "failure";
        }
    }
    
    public String registerAction(){
    	//取得faces上下文
    	FacesContext facesContext= FacesContext.getCurrentInstance();
        //声明user变量
        User user = null;
        //访问登录业务对象       
        //UserService userService=new UserServiceHibernateImpl();
        
        //调用业务对象的注册方法
        try{
            user = userService.register(userName, password, pwd);
            if(user!=null){
                //在此可以做一些想做的事情。
                
                //返回导航规则字符串
                return "success";
            }
            else{
                //否则在faces上下文中添加出错消息
                facesContext.addMessage(null,
                       new FacesMessage(FacesMessage.SEVERITY_WARN,
                       "The password of the two enter isn't same.", ""));
                //返回导航规则字符串
                return "failure";
            }
        }
        catch(DuplicateUserException ue){
            facesContext.addMessage(null,
                        new FacesMessage(FacesMessage.SEVERITY_WARN,
                        "This user name: " + userName + " already exist.", ""));       	

            //在日志中记录尝试重复注册的用户ID
            log.warn(userName + ": already registered!");
      
            return "failure";

        }
        catch(DbException de){
            //捕获DbException异常,其余参见上面else处的注释
            FacesMessage msg=MessageFactory.getMessage
                          (facesContext,"error_database_error","");
            msg.setSeverity(FacesMessage.SEVERITY_WARN);
            facesContext.addMessage(null,msg);
            return "failure";

        }
        catch(Exception e){
            //捕获其他异常,其余参见上面else处的注释,
            FacesMessage msg=MessageFactory.getMessage
                            (facesContext,"error_unexpected","");            
            msg.setSeverity(FacesMessage.SEVERITY_ERROR);
            facesContext.addMessage(null,msg);
            return "failure";
        }
    }        
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -