zoukankan      html  css  js  c++  java
  • 【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;
        }
    }
    
    

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

  • 相关阅读:
    内存页面的各种属性(就是Read, Write, Execute的组合)
    分配粒度和内存页面大小(x86处理器平台的分配粒度是64K,内存页是4K,所以section都是0x1000对齐,硬盘扇区大小是512字节,所以PE文件默认文件对齐是0x200)
    NULL指针区域(NULL定义为0-65535之间的任何数都可以)
    Tiny Mapper是一个.net平台开源的对象映射组件
    表达式树动态拼接lambda
    VSC调试.NET Core 应用程序
    领域驱动设计之单元测试最佳实践
    web框架python
    无需安装Mono的Jexus
    分布式发布订阅消息系统Kafka
  • 原文地址:https://www.cnblogs.com/BIG-BOSS-ZC/p/11807335.html
Copyright © 2011-2022 走看看