SMBMS②登录流程实现

本文详细介绍了SMBMS系统的用户登录流程,包括前端页面、首页设置、Dao层接口与实现、业务层接口与实现、Servlet控制层处理以及Servlet注册。通过登录Servlet接收前端请求,调用业务层进行用户验证,成功则存入Session并重定向至主页,失败则返回错误信息。整个流程完整且清晰。
摘要由CSDN通过智能技术生成

SMBMS②登录流程实现

1. 登录流程

2. 代码编写流程

2.1 前端页面login.jsp

分析项目,就不写JSP了…直接Ctrl+CV了,下面所有的JSP同理。

2.2 设置首页
<welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
</welcome-file-list>
2.3 Dao层用户登录的接口
public interface UserDao {
    public User getLoginUser(Connection connection,String userCode) throws SQLException;
}
2.4 用户登录接口的实现类
public class UserDaoImpl implements UserDao{
    public User getLoginUser(Connection connection, String userCode) throws SQLException {
        PreparedStatement pstm = null;
        ResultSet rs = null;
        User user = null;
        if (null != connection) {
            String sql = "select * from smbms_user where userCode=?";
            Object[] params = {userCode};
            rs = BaseDao.execute(connection, pstm, rs, sql, params);
            if (rs.next()) {
                user = new User();
                user.setId(rs.getInt("id"));
                user.setUserCode(rs.getString("userCode"));
                user.setUserName(rs.getString("userName"));
                user.setUserPassword(rs.getString("userPassword"));
                user.setGender(rs.getInt("gender"));
                user.setBirthday(rs.getDate("birthday"));
                user.setPhone(rs.getString("phone"));
                user.setAddress(rs.getString("address"));
                user.setUserRole(rs.getInt("userRole"));
                user.setCreatedBy(rs.getInt("createdBy"));
                user.setCreationDate(rs.getTimestamp("creationDate"));
                user.setModifyBy(rs.getInt("modifyBy"));
                user.setModifyDate(rs.getTimestamp("modifyDate"));
            }
        }
        BaseDao.closeResource(null, pstm, rs);
        return user;
    }
}
2.5 业务层用户登录的接口
public interface UserService {
    // 用户登录
    public User login(String username,String password);
}
2.6 业务层用户登录的实现类
/**
 * service层捕获异常,进行事务处理
 * 事务处理:调用不同dao的多个方法,必须使用同一个connection(connection作为参数传递)
 * 事务完成之后,需要在service层进行connection的关闭,在dao层关闭PreparedStatement和ResultSet对象
 */
public class UserServiceImpl implements UserService {
    // 业务层调用Dao层获取数据,需要引入Dao层
    private UserDao userDao;
    public UserServiceImpl() {
        userDao = new UserDaoImpl();
    }

    public User login(String userCode, String password) {
        Connection connection = null;
        User user = null;
        try {
            // 通过业务层调用对应的具体数据库操作
            connection = BaseDao.getConnection();
            // 获取登录用户的信息
            user = userDao.getLoginUser(connection, userCode);
            System.out.println(user.toString());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            BaseDao.closeResource(connection, null, null);
        }
        return user;
    }
}

注意:获取不到用户信息,user为空后面可能会产生空指针错误。

2.7 控制层Servlet处理请求
public class LoginServlet extends HttpServlet {
    // Servlet控制层,处理请求,调用业务层代码
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("LoginServlet Start");
        // 获取用户名和密码
        String userCode = req.getParameter("userCode");// 前端提交的参数名称
        String userPassword = req.getParameter("userPassword");
        // 和数据库的数据进行对比,调用业务
        UserServiceImpl userService = new UserServiceImpl();
        // 获取登录的用户
        User user = userService.login(userCode, userPassword);
        if( user != null){ //存在该用户
            // 将用户的信息放入Session中
            req.getSession().setAttribute(Constants.USER_SESSION,user);
            // 重定向到主页
            resp.sendRedirect("jsp/frame.jsp");
        }else{ // 信息错误
            // 携带报错信息 ,前端通过error获取
            req.setAttribute("error","用户名或密码错误");
            req.getRequestDispatcher("login.jsp").forward(req,resp);
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
2.8 注册Servlet

注意:注册Servlet的路径一定要和前端提交的请求路径相同,不要忘记。此处前端提交的路径是/login.do。

<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.qiyuan.servlet.user.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/login.do</url-pattern>
</servlet-mapping>
2.9 登录测试,访问主页成功!

整个登录模块的执行流程

登录模块基本搭建完成😊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SMBMS数据库代码是指《超市管理系统》的数据库代码,该代码主要用于实现超市的管理功能,包括商品信息管理、供应商管理、用户管理、订单管理和库存管理等。 首先,我们需要创建相应的数据库和数据表。数据库中包含商品信息表、供应商表、用户表和订单表等,每个表都有对应的字段,用于存储相关的信息。 其次,我们需要编写相应的代码来实现具体的功能。比如,对于商品信息管理,我们可以编写代码来实现商品的增加、删除、修改和查询等功能。对于供应商管理,我们可以编写代码来实现供应商的添加、删除、修改和查询等功能。对于用户管理,我们可以编写代码来实现用户的注册、登录、修改密码和权限管理等功能。对于订单管理,我们可以编写代码来实现订单的添加、删除、修改和查询等功能。对于库存管理,我们可以编写代码来实现库存的更新、查询和报警等功能。 最后,我们需要将代码与数据库连接起来,即通过数据库操作的相关函数来实现数据的读取和更新等。同时,我们还需要考虑数据的安全性和完整性,比如通过加密算法对用户密码进行加密存储,以保护用户信息的安全。 综上所述,SMBMS数据库代码是超市管理系统的数据库代码,通过编写相应的代码和实现数据库的连接,可以实现超市的管理功能,包括商品信息管理、供应商管理、用户管理、订单管理和库存管理等。这些功能可以帮助超市提高管理效率、提升服务质量,从而更好地满足客户的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值