美文网首页JAVA-WEB基础
登录页面(责任分离)

登录页面(责任分离)

作者: superNeil | 来源:发表于2020-05-19 11:30 被阅读0次

    登录页面

    符合 3层架构 (体现责任分离 , 低耦合高内聚)

    思路 :

    浏览器-->login.jsp-->servlet-->service-->UserServiceImpl-->IUserDAO-->UserDAOImpl-->数据库

    浏览器 <--login.jsp<--servlet<--service<--UserServiceImpl<--IUserDAO<--UserDAOImpl<--数据库


    image-20200519112142984.png

    这是IUserDAO

    public interface IUserDAO {
        User selectUser(String username);
    }
    

    这是UserDAOImpl

    public class UserDAOImpl implements IUserDAO {
    
        @Override
        public User selectUser(String username) {
            SqlSession sqlsession = MyBatisUtils.getSqlsession();
            User u = sqlsession.selectOne("cn.wolfcode.mapper.UserMapper.secletUser", username);
           sqlsession.close();
            return u;
        }
    }
    

    这是IUserService

    public interface IUserService {
        User login(String username,String password);
    }
    

    这是UserServiceImpl

    public class UserServiceImpl implements IUserService {
        private IUserDAO dao=new UserDAOImpl();
        @Override
        public User login(String username,String password) {
            User user = dao.selectUser(username);
            if(user==null){
                //说明用户名不存在
                throw new RuntimeException("亲,账号不存在!");
            }
            if(!user.getPassword().equals(password)){
                throw new RuntimeException(("亲,密码错误!"));
            }
            return user;
        }
    }
    

    这是LoginServlet

    @WebServlet("/user")
    public class LoginServlet extends HttpServlet {
        IUserService dao = new UserServiceImpl();
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //设置编码格式
            req.getRequestDispatcher("utf-8");
            //获取传入的 用户名和密码
            String username = req.getParameter("username");
            String password = req.getParameter("password");
            //用户传入的数据 进入业务层
            try {
                User u = dao.login(username, password);
                //登录成功  共享 u 作为标识 说明我们已经登录成功 , 可以给 /product 那边作判断 , 避免有人可以直接访问/product
                req.getSession().setAttribute("USER_IN_SESSION", u);
                resp.sendRedirect("/product");
            } catch (Exception e) {
                req.setAttribute("errorMsg", e.getMessage());
                req.getRequestDispatcher("/login.jsp").forward(req, resp);
            }
    
        }
    }
    
    image-20200519111431394.png

    相关文章

      网友评论

        本文标题:登录页面(责任分离)

        本文链接:https://www.haomeiwen.com/subject/kagvohtx.html