JAVA-WEB基础

登录页面(责任分离)

2020-05-19  本文已影响0人  superNeil

登录页面

符合 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
上一篇 下一篇

猜你喜欢

热点阅读