博客
关于我
超市订单管理系统项目(2)——登录功能实现(后端)
阅读量:338 次
发布时间:2019-03-04

本文共 4217 字,大约阅读时间需要 14 分钟。

登录功能实现

1. 登录页面设置

登录页面应设置为 login.jsp,并在欢迎页中指定登录页面或通过 index.jsp 转发至 login.jsp。以下是通过 index.jsp 实现的转发方式:

2. 数据库访问接口

定义 LoginDao 接口,用于获取用户登录信息:

public interface LoginDao {    User getLogin(String userCode) throws SQLException;}

3. 数据库访问实现类

实现 LoginDao 接口的 LoginDaoImpl 类:

public class LoginDaoImpl implements LoginDao {    @Override    public User getLogin(String uCode) throws SQLException {        Connection conn = BaseDao.getConn();        if (conn != null) {            try {                PreparedStatement preparedStatement = conn.prepareStatement(                    "SELECT * FROM smbms_user WHERE userCode = ?");                preparedStatement.setString(1, uCode);                ResultSet resultSet = BaseDao.executeQ(conn, preparedStatement, null, null);                if (resultSet.next()) {                    User user = new User();                    user.setId(resultSet.getInt("id"));                    user.setUserCode(resultSet.getString("userCode"));                    user.setUserName(resultSet.getString("userName"));                    user.setUserPassword(resultSet.getString("userPassword"));                    // 其他字段获取和赋值                    return user;                }            } catch (SQLException e) {                e.printStackTrace();            }            BaseDao.close(conn, preparedStatement, null);        }        return null;    }}

4. 业务逻辑接口

定义 LoginService 接口,用于处理登录业务:

public interface LoginService {    User login(String uCode, String uPassword) throws SQLException;}

5. 业务逻辑实现类

实现 LoginService 接口的 LoginServiceImpl 类:

public class LoginServiceImpl implements LoginService {    @Override    public User login(String uCode, String uPassword) throws SQLException {        LoginDao loginDao = new LoginDaoImpl();        User user = loginDao.getLogin(uCode);        return user;    }}

6. 登录Servlet实现

创建 LoginServlet 类,处理登录请求:

@WebServlet("/login.do")public class LoginServlet extends HttpServlet {    @Override    protected void service(HttpServletRequest req, HttpServletResponse resp)        throws ServletException, IOException {        String userCode = req.getParameter("userCode");        String password = req.getParameter("userPassword");        LoginService loginService = new LoginServiceImpl();        try {            User user = loginService.login(userCode, password);            if (user != null) {                HttpSession session = req.getSession();                session.setAttribute(Constants.USER_SESSION, user);                resp.sendRedirect("frame.jsp");            } else {                req.setAttribute("error", "用户名或密码错误");                req.getRequestDispatcher("login.jsp").forward(req, resp);            }        } catch (SQLException e) {            e.printStackTrace();        }    }}

7. 登出功能实现

创建 LogoutServlet 类,处理注销操作:

@WebServlet("/user/exit.do")public class LogoutServlet extends HttpServlet {    @Override    protected void service(HttpServletRequest req, HttpServletResponse resp)        throws ServletException, IOException {        HttpSession session = req.getSession();        session.removeAttribute(Constants.USER_SESSION);        resp.sendRedirect("/login.jsp");    }}

8. 登录拦截优化

创建 SysFilter 类,实现登录拦截:

@WebFilter("/jsp/*")public class SysFilter implements Filter {    @Override    public void init(FilterConfig filterConfig) throws ServletException {        // 初始化逻辑可根据需求添加    }    @Override    public void doFilter(        ServletRequest servletRequest,        ServletResponse servletResponse,        FilterChain filterChain)        throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) servletRequest;        HttpServletResponse response = (HttpServletResponse) servletResponse;        HttpSession session = request.getSession();        User user_sess = (User) session.getAttribute(Constants.USER_SESSION);        if (user_sess == null) {            request.getRequestDispatcher("/error.jsp").forward(request, response);        } else {            filterChain.doFilter(servletRequest, servletResponse);        }    }    @Override    public void destroy() {        // 销毁逻辑可根据需求添加    }}

总结

以上实现完整地完成了登录功能的开发,涵盖了页面转发、数据库访问、业务逻辑处理以及前后端的整合。通过拦截器优化,确保未登录用户无法访问核心功能,进一步提升了系统安全性。

转载地址:http://ulgh.baihongyu.com/

你可能感兴趣的文章
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NIO基于UDP协议的网络编程
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>