• 【SpringMVC】使用三层架构实现登录,注册。(下篇)


    上篇写了构思与界面层,本篇写一下业务逻辑层、数据访问层

    目录

    在这里插入图片描述

    业务逻辑层

    包:pojo
    用户类(JavaBean):User

    public class User {
        private String userName;
        private String userPwd;
    
        public User(String userName, String userPwd) {
            this.userName = userName;
            this.userPwd = userPwd;
        }
    
        public User() {
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getUserPwd() {
            return userPwd;
        }
    
        public void setUserPwd(String userPwd) {
            this.userPwd = userPwd;
        }
    }
    
    

    包:service
    接口:IUserService

    public interface IUserService {
        public boolean register(User user);
        public boolean login(User user);
    }
    

    类:UserServiceImpl

    public class UserServiceImpl implements IUserService {
        @Override
        public boolean register(User user) {
            IUserDao dao=new UserDaoImpl();
            User userByName = dao.findUserByName(user);
            if(userByName==null){
                //如果数据库里没有找到同名的,就注册
                try {
                    int i = dao.addUser(user);
                    if(i>0){
                        System.out.println("注册成功");
                    }else {
                        return false;
                    }
                    return true;
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
            return false;
        }
    
        @Override
        public boolean login(User user) {
            IUserDao dao=new UserDaoImpl();
            User checkUser = dao.checkUser(user);
            if(checkUser==null){
                //如果数据库里没有找到同名、同密码的
                System.out.println("登录失败");
                return false;
            }else {
                System.out.println("欢迎登录");
                return true;
            }
        }
    }
    
    

    数据访问层

    包:dao
    接口:IUserDao

    public interface IUserDao {
        public User findUserByName(User u);
        public User checkUser(User u);//检查用户名密码是否与数据库中一致
        public int addUser(User u);//向数据库中添加用户信息
    }
    

    实现接口的类:UserDaoImpl

    public class UserDaoImpl implements IUserDao{
        private JdbcTemplate jt=new JdbcTemplate(JDBCUtils.getDataSource());
    
        @Override
        public User findUserByName(User user) {
            User u=null;
            try{
                u=jt.queryForObject("select userName from userinfo where userName=?",
                        new BeanPropertyRowMapper<User>(User.class),user.getUserName());
            }catch (Exception e){
            }
            return u;
        }
    
        @Override
        public User checkUser(User user) {
            User u=null;
            try{
                u=jt.queryForObject("select userName,userPwd from userinfo where userName=? and userPwd=?",
                        new BeanPropertyRowMapper<User>(User.class),user.getUserName(),user.getUserPwd());
            }catch (Exception e){
            }
            return u;
        }
    
        @Override
        public int addUser(User user)  {
            int c=0;
            String status="正常";
            try {//c为添加数据库影响的行数,添加成功则c=1,失败则c=0
                c=jt.update("insert into userinfo(userName,userPwd,typeId,userStatus) values (?,?,?,?)",
                        user.getUserName(),user.getUserPwd(),3,status);
            }catch (Exception e){
            }
            return c;
        }
    }
    

    工具类:JDBCUtils (创建连接池)

    public class JDBCUtils {
        private static DataSource ds;
    
        static {
            Properties p=new Properties();
            try {
                p.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
                ds= DruidDataSourceFactory.createDataSource(p);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static DataSource getDataSource(){
            return ds;
        }
    }
    
    

    到这里就结束了,可以正常运行了。

  • 相关阅读:
    练习jQuery
    Highcharts的应用步骤
    CSS中的数量查询
    何时使用 Em 与 Rem
    不错的教学网站
    HTML5中新增的语义化标签,及在IE5.5~9(IE9已经开始支持部分HTML5新标签了)支持这些新标签的兼容性处理。
    【洛谷P4139】上帝与集合的正确用法
    【洛谷P1357】花园
    【洛谷P1939】矩阵加速(数列)
    【洛谷P1962】斐波那契数列
  • 原文地址:https://www.cnblogs.com/BIG-BOSS-ZC/p/11807335.html
Copyright © 2020-2023  润新知