校园论坛(Java)—— 用户管理系统模块


1、写在前面

  • Windows版本:Windows10
  • JDK版本:Java8
  • MySQL版本:MySQL5.7
  • Tomcat版本:Tomcat9.0
  • IDE:IntelliJ IDEA Ultimate2020.2.3

2、系统结构设计

2.1 各个页面之间的调用关系

校园论坛(Java)—— 用户管理系统模块_用户管理

用户管理系统模块

  • userlist.jsp:所有用户包括管理员自身的用户信息列表
  • userforumlist.jsp:管理员查看用户的普通帖子
  • MdeleteUserForumServlet:管理员删除用户普通帖子
  • MdeleteUserServlet:管理员删除用户
  • deleteUserAck.jsp:管理员删除用户后提示删除成功

2.2. 用户管理系统模块各层的设计

各层的代码已在用户登陆注册模块列出了,此处不再展示

  • Entity层

实体层声明学习专帖的user_id、user_name、user_password、user_sex、user_face、user_phone、user_email、user_from、isAdmin等变量以及对应的set、get方法

  • Dao层

Dao层分别实现一个interface接口类以及一个接口方法实现类

  • service层

实现servlet层调用的方法,对数据库进行增删改查操作。

  • Servlet层

在该层,通过jsp页面传递的参数,service对象调用相应的方法进行操作。

3、管理员管理用户功能

3.1 管理员查看普通用户的所有帖子

在userlist.jsp页面为每一个用户都设置了一个“查看发帖”按钮,通过该按钮可以查看展示的对应用户的所有发帖。该功能是由userforumlist.jsp页面传递的uid(用户ID)参数,再调用seeUserForumList()方法到数据库中进行查询操作实现的。

执行完数据库的逻辑操作之后,将请求转发到page/manager/userforumlist.jsp页面,进而显示所有用户的信息。

如下图所示:

校园论坛(Java)—— 用户管理系统模块_jsp页面_02

点击「查看发帖」按钮,可以看到对应的用户所发表的所有普通帖子,进入该页面,通过“删帖”按钮即可实现管理员对帖子的删除权限。

校园论坛(Java)—— 用户管理系统模块_List_03

3.2 管理员管理所有用户

管理员查看所有用户是在userlist.jsp页面实现的,通过MuserListServlet的逻辑实现,并传递的属性参数到该页面,由该页面展示所有的用户。

通过调用findUserList()方法然后请求转发到page/manager/userlist.jsp页面显示内容

代码

public class MUserListServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");

        UserServiceInf service = new UserServiceImpl();
        List<UserEntity> userList = service.findUserList();

        req.setAttribute("userList", userList);
        req.getRequestDispatcher("page/manager/userlist.jsp").forward(req, resp);
    }
}

如下图所示:

校园论坛(Java)—— 用户管理系统模块_List_04

3.3 管理员删除帖子功能的实现

userforumlist.jsp页面中,对于每一个用户的每一条普通帖子都设置了一个“删帖”按钮用于删除帖子,在此页面获得两个参数uidfid。其中uid是用户ID,fid为要删除的帖子(主帖)的标识符,通过fid先删除该帖子下的所有回帖,最后再删除主帖(该帖子)。

代码

public class MdeleteUserForumServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String forumid = req.getParameter("fid");
        int fid = Integer.parseInt(forumid);
        String uid = req.getParameter("uid");
        ForumServiceInf service = new ForumServiceImpl();
        service.deleteReplyByFid(fid);
        service.deleteForumByFid(fid);
        req.setAttribute("uid", uid);
        req.getRequestDispatcher("MSeeUserForumServlet").forward(req, resp);
    }
}

校园论坛(Java)—— 用户管理系统模块_List_05

3.4 管理员删除学习专帖

普通用户和管理员删除学习专帖的功能实现为同一逻辑和物理操作。

studyReply.jsp页面中,如果当前浏览的学习专帖发表者是当前登录用户或者当前登录用户是管理员身份,则设置有一个「删除本帖」的按钮,在此页面获得两个参数uidsid。其中uid是用户ID,sid为要删除的帖子(主帖)的标识符,通过sid先删除该帖子下的所有回帖,最后再删除主帖(该帖子)。

学习专帖的删除需要判断当前登录用户是否为管理员,如果是,会有「删除本帖」的按钮,否则不会显示此按钮

判断用户代码如下:

<script type="text/javascript">
    function judge() {
        var currentUid = ${user.user_id};
        var userId = '<%=userId%>';
        var flag = false;
        if (currentUid == userId) {
            flag = true;
        }
        return flag;
    }
</script>
<script type="text/javascript">
    function isCurrentUser() {
        var currentUid = ${user.user_id};
        var uid = '<%=uid%>';
        var flag = false;
        if (currentUid == uid) {
            flag = true;
        }
        if (flag) {
            alert("删除成功!")
            window.location.href = "MdeleteUserStudyServlet?sid=<%=getStudy.getSid()%>&uid=<%=getStudy.getAuthor().getUser_id()%>";
        }
    }
</script>

通过传递的参数,然后调用findStudyList()方法执行数据库逻辑操作,最后将请求转发到page/manager/deleteStudyList.jsp页面

3.5 管理员注销用户功能

在用户管理模块,管理员可以通过点击“注销”按钮,来注销掉普通用户

如下图所示:

校园论坛(Java)—— 用户管理系统模块_List_06

5、项目代码