Java用户权限管理系统

在现代的软件开发中,用户的权限管理是一个非常重要的功能。用户权限管理系统可以控制用户对系统中各种资源的访问权限,从而保护系统的安全性。在本文中,我们将介绍一个基于Java的用户权限管理系统的设计和实现。

系统需求

我们的用户权限管理系统需要满足以下几个需求:

  1. 用户管理:系统需要能够管理用户信息,包括用户名、密码等。
  2. 角色管理:系统需要能够管理角色信息,包括角色名称、描述等。
  3. 权限管理:系统需要能够管理角色的权限,包括菜单、操作等。
  4. 菜单管理:系统需要能够管理菜单信息,包括菜单名称、URL等。

系统设计

为了满足上述需求,我们可以设计如下的数据库表结构:

用户表(User)

字段 类型 说明
id int 用户ID
username varchar 用户名
password varchar 密码

角色表(Role)

字段 类型 说明
id int 角色ID
name varchar 角色名称
description varchar 角色描述

菜单表(Menu)

字段 类型 说明
id int 菜单ID
name varchar 菜单名称
url varchar 菜单URL

角色菜单表(RoleMenu)

字段 类型 说明
roleId int 角色ID
menuId int 菜单ID

系统实现

现在我们开始实现我们的用户权限管理系统。首先,我们需要定义Java类来映射数据库中的表。

用户类(User)

public class User {
    private int id;
    private String username;
    private String password;

    // getters and setters
}

角色类(Role)

public class Role {
    private int id;
    private String name;
    private String description;

    // getters and setters
}

菜单类(Menu)

public class Menu {
    private int id;
    private String name;
    private String url;

    // getters and setters
}

角色菜单类(RoleMenu)

public class RoleMenu {
    private int roleId;
    private int menuId;

    // getters and setters
}

接下来,我们需要实现数据库的增删改查操作。我们可以使用JDBC来实现这些操作。

数据库连接类(DBConnection)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
    private static final String URL = "jdbc:mysql://localhost:3306/test";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "password";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }
}

用户DAO类(UserDAO)

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserDAO {
    public void save(User user) {
        try (Connection connection = DBConnection.getConnection()) {
            String sql = "INSERT INTO User (username, password) VALUES (?, ?)";
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1, user.getUsername());
            statement.setString(2, user.getPassword());
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public User getById(int id) {
        try (Connection connection = DBConnection.getConnection()) {
            String sql = "SELECT * FROM User WHERE id = ?";
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setInt(1, id);
            ResultSet resultSet = statement.executeQuery();
            if (resultSet.next()) {
                User user = new User();
                user.setId(resultSet.getInt("id"));
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));
                return user;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    // other methods
}

角色DAO类(RoleDAO)

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class RoleDAO {
    public void save(Role role)